package com.ruoyi.process.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.inspect.mapper.InsOrderMapper;
import com.ruoyi.process.dto.InspectionOrderExportDto;
import com.ruoyi.process.dto.ProcessOrderDto;
import com.ruoyi.process.mapper.ProcessOrderMapper;
import com.ruoyi.process.pojo.ProcessOrder;
import com.ruoyi.process.service.ProcessOrderService;
import com.ruoyi.system.mapper.UserMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.time.format.DateTimeFormatter;
/**
*
* 要求、标书和合同评审 服务实现类
*
*
* @author 芯导软件(江苏)有限公司
* @since 2024-11-05 03:06:20
*/
@Service
@Transactional(rollbackFor = Exception.class)
public class ProcessOrderServiceImpl extends ServiceImpl implements ProcessOrderService {
@Resource
private ProcessOrderMapper processOrderMapper;
@Resource
InsOrderMapper insOrderMapper;
@Resource
private UserMapper userMapper;
@Override
public IPage pageProcessOrder(Page page, ProcessOrderDto processOrderDto) {
return processOrderMapper.pageProcessOrder(page, QueryWrappers.queryWrappers(processOrderDto));
}
@Override
public ProcessOrderDto getProcessOrder(Integer id) {
return processOrderMapper.getProcessOrder(id);
}
@Override
public int doProcessOrder(ProcessOrder processOrder) {
if (ObjectUtils.isNotEmpty(processOrder.getComprehensiveUser())) {
User user = userMapper.selectById(processOrder.getComprehensiveUser());
if (ObjectUtils.isEmpty(user.getSignatureUrl())) throw new ErrorException("未找到综合室签名人的电子签名,请上传电子签名!");
}
if (ObjectUtils.isNotEmpty(processOrder.getIssueUser())) {
User user = userMapper.selectById(processOrder.getIssueUser());
if (ObjectUtils.isEmpty(user.getSignatureUrl())) throw new ErrorException("未找到领样员的电子签名,请上传电子签名!");
}
return processOrderMapper.updateById(processOrder);
}
@Override
public void exportInspectionOrder(Integer id, HttpServletResponse response) {
// ProcessOrder processOrder = baseMapper.selectById(id);
// InspectionOrderExportDto inspectionOrderExportDto = extracted(processOrder);
// List list = baseMapper.selectInsOrder(processOrder.getInsOrderId());
// int index = 1;
// for (InspectionOrderDetail inspectionOrderDetail : list) {
// inspectionOrderDetail.setIndex(index);
// index++;
// }
//
// // 获取路径
// InputStream inputStream = this.getClass().getResourceAsStream("/static/inspection-order.docx");
// Configure configure = Configure.builder()
// .bind("inspectionOrderDetailList", new HackLoopTableRenderPolicy())
// .build();
// XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
// new HashMap() {{
// put("inspectionOrder", inspectionOrderExportDto);
// put("inspectionOrderDetailList", list);
// }});
//
// // 处理换行问题
// XWPFDocumentUtils.updateMergeByDocument(template.getXWPFDocument());
// try {
// response.setContentType("application/msword");
// String fileName = URLEncoder.encode(
// inspectionOrderExportDto.getSample(), "UTF-8");
// response.setHeader("Content-disposition",
// "attachment;filename=" + fileName + ".docx");
// OutputStream os = response.getOutputStream();
// template.write(os);
// os.flush();
// os.close();
// } catch (Exception e) {
// e.printStackTrace();
// throw new RuntimeException("导出失败");
// }
}
private InspectionOrderExportDto extracted(ProcessOrder processOrder) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
InspectionOrderExportDto inspectionOrderExportDto = new InspectionOrderExportDto();
ProcessOrderDto processOrderDto = getProcessOrder(processOrder.getId());
BeanUtils.copyProperties(processOrderDto, inspectionOrderExportDto);
if (processOrderDto.getCreateTime() != null) {
inspectionOrderExportDto.setCommissionDateString(processOrderDto.getCreateTime().format(formatter));
}
if (processOrder.getComprehensiveTime() != null) {
inspectionOrderExportDto.setReceiptDataString(processOrder.getComprehensiveTime().format(formatter));
}
if (processOrder.getIssueTime() != null) {
inspectionOrderExportDto.setSampleDataString(processOrder.getIssueTime().format(formatter));
}
if (processOrderDto.getAppointed() != null) {
inspectionOrderExportDto.setAppointedString(processOrderDto.getAppointed().format(formatter));
}
inspectionOrderExportDto.setIsLeave1(processOrderDto.getIsLeave() != null && processOrderDto.getIsLeave() == 1 ? "☑" : "□");
inspectionOrderExportDto.setIsLeave2(processOrderDto.getIsLeave() != null && processOrderDto.getIsLeave() == 0 ? "☑" : "□");
inspectionOrderExportDto.setSend0(processOrderDto.getSend() != null && processOrderDto.getSend() == 1 ? "☑" : "□");
inspectionOrderExportDto.setSend1(processOrderDto.getSend() != null && processOrderDto.getSend() == 0 ? "☑" : "□");
inspectionOrderExportDto.setProcessing0(processOrderDto.getProcessing() != null && processOrderDto.getProcessing() == 0 ? "☑" : "□");
inspectionOrderExportDto.setProcessing1(processOrderDto.getProcessing() != null && processOrderDto.getProcessing() == 1 ? "☑" : "□");
if (ObjectUtils.isNotEmpty(processOrder.getRule())) {
inspectionOrderExportDto.setCriterionRule0(processOrder.getRule().equals("不考虑不确定度") ? "☑" : "□");
inspectionOrderExportDto.setCriterionRule1(processOrder.getRule().contains("-") ? "☑" : "□");
inspectionOrderExportDto.setCriterionRuleRemark(processOrder.getRule().contains("-") ? processOrder.getRule().split("-")[1] : "");
}
return inspectionOrderExportDto;
}
}