cnas-process/src/main/java/com/ruoyi/process/controller/ProcessDealController.java
@@ -1,5 +1,6 @@ package com.ruoyi.process.controller; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.domain.Result; import com.ruoyi.common.utils.JackSonUtil; @@ -28,34 +29,23 @@ @Resource private ProcessDealService processDealService; @ApiOperation(value = "æ¥è¯¢æ£æµææ ¡åç©åçå¤ç½®è¯¦æ ") @GetMapping("/pageProcessDeal") public Result pageProcessDeal(ProcessDeal processDeal, Page page) throws Exception { return Result.success(processDealService.pageProcessDeal(page, processDeal)); } @ApiOperation(value = "æ°å¢æ£æµææ ¡åç©åçå¤ç½®") @PostMapping("/addProcessDeal") public Result addProcessDeal(@RequestBody ProcessDeal processDeal) { return Result.success(processDealService.addProcessDeal(processDeal)); return Result.success(processDealService.saveOrUpdate(processDeal)); } @ApiOperation(value = "å 餿£æµææ ¡åç©åçå¤ç½®") @DeleteMapping("/delProcessDeal") public Result delProcessDeal(Integer id) { return Result.success(processDealService.delProcessDeal(id)); return Result.success(processDealService.removeById(id)); } @ApiOperation(value = "ä¿®æ¹æ£æµææ ¡åç©åçå¤ç½®") @PostMapping("/doProcessDeal") public Result doProcessDeal(@RequestBody ProcessDeal processDeal) { return Result.success(processDealService.doProcessDeal(processDeal)); } @ApiOperation(value = "æ¥çæ£æµææ ¡åç©åçå¤ç½®") @GetMapping("/getProcessDeal") public Result getProcessDeal(Integer id) { return Result.success(processDealService.getById(id)); return Result.success(processDealService.list(Wrappers.<ProcessDeal>lambdaQuery().eq(ProcessDeal::getTotaldealId,id))); } } cnas-process/src/main/java/com/ruoyi/process/controller/ProcessSampleController.java
@@ -9,6 +9,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.util.Map; /** @@ -29,32 +30,27 @@ @ApiOperation(value = "æ¥è¯¢æ ·åæ¥æ¶è¯¦æ ") @GetMapping("/pageProcessSample") public Result pageProcessSample(ProcessSample processSample, Page page) throws Exception { public Result pageProcessSample(ProcessSample processSample, Page page){ return Result.success(processSampleService.pageProcessSample(page, processSample)); } @ApiOperation(value = "æ°å¢æ ·åæ¥æ¶è¯¦æ ") @PostMapping("/addProcessSample") public Result addProcessSample(@RequestBody ProcessSample processSample) { return Result.success(processSampleService.addProcessSample(processSample)); return Result.success(processSampleService.saveOrUpdate(processSample)); } @ApiOperation(value = "å 餿 ·åæ¥æ¶") @DeleteMapping("/delProcessSample") public Result delProcessSample(Integer id) { return Result.success(processSampleService.delProcessSample(id)); return Result.success(processSampleService.removeById(id)); } @ApiOperation(value = "ä¿®æ¹æ ·åæ¥æ¶") @PostMapping("/doProcessSample") public Result doProcessSample(@RequestBody ProcessSample processSample) { return Result.success(processSampleService.doProcessSample(processSample)); } @ApiOperation(value = "æ¥çæ ·åæ¥æ¶") @GetMapping("/getProcessSample") public Result getProcessSample(Integer id) { return Result.success(processSampleService.getById(id)); @ApiOperation(value = "å¯¼åºæ ·åæ¥æ¶") @GetMapping("/exportProcessSample") public void exportProcessSample(ProcessSample processSample, HttpServletResponse response) { processSampleService.exportProcessSample(processSample,response); } cnas-process/src/main/java/com/ruoyi/process/controller/ProcessTotalSampleController.java
ÎļþÒÑɾ³ý cnas-process/src/main/java/com/ruoyi/process/controller/ProcessTotaldealController.java
@@ -9,6 +9,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.util.Map; /** @@ -33,6 +34,13 @@ return Result.success(processTotaldealService.pageProcessTotaldeal(page, processTotaldeal)); } @ApiOperation(value = "æ°å¢æ£æµææ ¡åç©åçå¤ç½®") @PostMapping("/addProcessTotaldeal") public Result addProcessTotaldeal(@RequestBody Map<String, String> param) { String month = param.get("month"); return Result.success(processTotaldealService.addProcessTotaldeal(month)); } @ApiOperation(value = "æäº¤æ£æµææ ¡åç©åçå¤ç½®") @PostMapping("/submitProcessTotaldeal") public Result submitProcessTotaldeal(@RequestBody Map<String, Integer> param) { @@ -56,5 +64,11 @@ return Result.success(processTotaldealService.ratifyProcessTotaldeal(id,state)); } @ApiOperation(value = "å¯¼åºæ£æµææ ¡åç©åçå¤ç½®") @GetMapping("/exportProcessTotaldeal") public void exportProcessTotaldeal(Integer id, HttpServletResponse response) { processTotaldealService.exportProcessTotaldeal(id,response); } } cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessDealMapper.java
@@ -7,6 +7,8 @@ import com.ruoyi.process.pojo.ProcessDeal; import org.apache.ibatis.annotations.Param; import java.util.List; /** * <p> * æ£æµææ ¡åç©åçå¤ç½® Mapper æ¥å£ @@ -18,4 +20,7 @@ public interface ProcessDealMapper extends BaseMapper<ProcessDeal> { IPage<ProcessDeal> pageProcessDeal(Page page, @Param("ew") QueryWrapper<ProcessDeal> queryWrappers); List<ProcessDeal> selectDeal(@Param("id") Integer id); } cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessTotalSampleMapper.java
ÎļþÒÑɾ³ý cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessDeal.java
@@ -62,4 +62,11 @@ @ApiModelProperty("å ³èçå岿»è¡¨id") private Integer totaldealId; @ApiModelProperty("å ³èçæ ·åæ¥æ¶id") private Integer processSampleId; @ApiModelProperty("åºå·") @TableField(select = false,exist = false) private String indexs; } cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessSample.java
@@ -59,8 +59,8 @@ @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; @ApiModelProperty("å ³èæ»è¡¨åå²id") private Integer totalSampleId; @ApiModelProperty("å§æåid") private Integer inspectionOrderId; @ApiModelProperty("æ¶æ ·æ¥æ") @JsonFormat(pattern = "yyyy-MM-dd") cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessTotalSample.java
ÎļþÒÑɾ³ý cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessTotaldeal.java
@@ -37,10 +37,6 @@ @ApiModelProperty("å®¡æ ¸ç»æ") private String examineState; @ApiModelProperty("å®¡æ ¸äººçµåç¾åurl") private String examineUrl; @TableField(select = false, exist = false) private String examineUserName; @@ -49,9 +45,6 @@ @ApiModelProperty("æ¹åç»æ") private String ratifyState; @ApiModelProperty("æ¹å人çµåç¾åurl") private String ratifyUrl; @TableField(select = false, exist = false) private String ratifyUserName; @@ -64,15 +57,7 @@ @ApiModelProperty("æäº¤ç»æ") private String submitState; @ApiModelProperty("æäº¤äººçµåç¾åurl") private String submitUrl; @ApiModelProperty("æ»æ°é") private Integer totalNum; @ApiModelProperty("æä»½") private String month; @ApiModelProperty("çæç³è¯·è¡¨çè·¯å¾") private String url; } cnas-process/src/main/java/com/ruoyi/process/schedule/ProcessTotaldealSchedule.java
ÎļþÒÑɾ³ý cnas-process/src/main/java/com/ruoyi/process/service/ProcessDealService.java
@@ -16,12 +16,4 @@ * @since 2024-11-02 02:50:19 */ public interface ProcessDealService extends IService<ProcessDeal> { IPage<ProcessDeal> pageProcessDeal(Page page, ProcessDeal processDeal); int addProcessDeal(ProcessDeal processDeal); int delProcessDeal(Integer id); int doProcessDeal(ProcessDeal processDeal); } cnas-process/src/main/java/com/ruoyi/process/service/ProcessSampleService.java
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.process.pojo.ProcessSample; import javax.servlet.http.HttpServletResponse; import java.util.Map; /** @@ -19,9 +20,5 @@ IPage<ProcessSample> pageProcessSample(Page page, ProcessSample processSample); int addProcessSample(ProcessSample processSample); int delProcessSample(Integer id); int doProcessSample(ProcessSample processSample); void exportProcessSample(ProcessSample processSample, HttpServletResponse response); } cnas-process/src/main/java/com/ruoyi/process/service/ProcessTotalSampleService.java
ÎļþÒÑɾ³ý cnas-process/src/main/java/com/ruoyi/process/service/ProcessTotaldealService.java
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.process.pojo.ProcessTotaldeal; import javax.servlet.http.HttpServletResponse; import java.util.Map; /** @@ -24,4 +25,8 @@ int submitProcessTotaldeal(Integer id); int ratifyProcessTotaldeal(Integer id, String state); int addProcessTotaldeal(String month); void exportProcessTotaldeal(Integer id, HttpServletResponse response); } cnas-process/src/main/java/com/ruoyi/process/service/impl/InspectionOrderServiceImpl.java
@@ -15,6 +15,7 @@ import com.ruoyi.framework.exception.ErrorException; import com.ruoyi.inspect.dto.InsOrderDeviceRecordDto; import com.ruoyi.inspect.mapper.InsProductResultMapper; import com.ruoyi.inspect.mapper.InsSampleMapper; import com.ruoyi.inspect.pojo.*; import com.ruoyi.inspect.service.InsOrderService; import com.ruoyi.inspect.service.InsReportService; @@ -23,14 +24,9 @@ import com.ruoyi.process.dto.InspectionOrderExportDto; import com.ruoyi.process.mapper.InspectionOrderMapper; import com.ruoyi.process.mapper.ProcessOrderDeviceMapper; import com.ruoyi.process.pojo.InspectionOrder; import com.ruoyi.process.pojo.InspectionOrderDetail; import com.ruoyi.process.pojo.ProcessOrderDevice; import com.ruoyi.process.pojo.ProcessReport; import com.ruoyi.process.service.InspectionOrderDetailService; import com.ruoyi.process.service.InspectionOrderService; import com.ruoyi.process.service.ProcessOrderDeviceService; import com.ruoyi.process.service.ProcessReportService; import com.ruoyi.process.mapper.ProcessSampleMapper; import com.ruoyi.process.pojo.*; import com.ruoyi.process.service.*; import com.ruoyi.system.mapper.UserMapper; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; @@ -70,6 +66,8 @@ @Resource private InsOrderService insOrderService; @Resource private InsSampleMapper insSampleMapper; @Resource private InsReportService insReportService; @Value("${wordUrl}") private String wordUrl; @@ -83,6 +81,12 @@ private ProcessOrderDeviceService processOrderDeviceService; @Resource private UserMapper userMapper; @Resource private ProcessSampleService processSampleService; @Resource private ProcessSampleMapper processSampleMapper; @Resource private ProcessDealService processDealService; /** @@ -158,6 +162,27 @@ processReportService.save(processReport); /*æ°å¢7.1å§æå对åºç设å¤ä½¿ç¨è®°å½*/ addDeviceRecord(inspectionOrder,insReport.getWriteUserId()); /*æ°å¢7.4æ ·åæ¥æ¶*/ List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery() .eq(InsSample::getInsOrderId, inspectionOrder.getInsOrderId())); if (insSamples.size()>0){ List<ProcessSample> processSamples = new ArrayList<>(); for (InsSample insSample : insSamples) { ProcessSample processSample = new ProcessSample(); processSample.setReceiveDate(inspectionOrder.getSampleData());//æ¶æ ·æ¥æ=颿 ·æ¥æ processSample.setSampleCode(insSample.getSampleCode());//æ ·åç¼å· processSample.setSampleName(insSample.getSample());//æ ·ååç§° processSample.setNum(1);//æ ·åæ°é=1 processSample.setSampleSupplier(inspectionOrder.getCommissionUnit());//æ¥æ ·åä½ LocalDate plusMonths = inspectionOrder.getSampleData().plusMonths(1); processSample.setLeaveDate(plusMonths);//çæ ·æ¥æ=æ¶æ ·æ¥æå¾åå»¶ä¸ä¸ªæ processSample.setSampleState(inspectionOrder.getSampleStatus());//æ ·åç¶æ processSample.setDealTime(plusMonths);//éæ ·æ¥æ=çæ ·æ¥æ processSample.setInspectionOrderId(inspectionOrder.getInspectionOrderId());//å§æåid processSamples.add(processSample); } processSampleService.saveBatch(processSamples); } return true; } @@ -245,6 +270,17 @@ //å é¤å¯¹åºç设å¤ä½¿ç¨è®°å½ processOrderDeviceService.remove(Wrappers.<ProcessOrderDevice>lambdaQuery() .eq(ProcessOrderDevice::getInspectionOrderId, inspectionOrderId)); //å é¤å¯¹åºç7.4çæ ·åç³è¯· List<ProcessSample> processSamples = processSampleMapper.selectList(Wrappers.<ProcessSample>lambdaQuery() .eq(ProcessSample::getInspectionOrderId, inspectionOrderId)); if (processSamples.size()>0){ List<Integer> list = processSamples.stream().map(ProcessSample::getId).collect(Collectors.toList()); processDealService.remove(Wrappers.<ProcessDeal>lambdaQuery() .in(ProcessDeal::getProcessSampleId,list)); } //å é¤å¯¹åº7.4çæ ·åæ¥æ¶ processSampleService.remove(Wrappers.<ProcessSample>lambdaQuery() .eq(ProcessSample::getInspectionOrderId,inspectionOrderId)); return true; } cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessDealServiceImpl.java
@@ -33,79 +33,4 @@ @Transactional(rollbackFor = Exception.class) public class ProcessDealServiceImpl extends ServiceImpl<ProcessDealMapper, ProcessDeal> implements ProcessDealService { @Resource private ProcessDealMapper processDealMapper; @Autowired private UserMapper userMapper; @Resource private ProcessTotaldealMapper processTotaldealMapper; @Override public IPage<ProcessDeal> pageProcessDeal(Page page, ProcessDeal processDeal) { Integer userId = SecurityUtils.getUserId().intValue(); processDeal.setCreateUser(userId); if (ObjectUtils.isEmpty(processDeal.getTotaldealId())) { //è·åå½åæä»½ LocalDate currentDate = LocalDate.now(); // å®ä¹æ¥ææ ¼å¼ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM"); // æ ¼å¼åå½åæ¥æ String currentMonth = currentDate.format(formatter); //æ¥è¯¢åå² ProcessTotaldeal processTotaldeal = processTotaldealMapper.selectOne(Wrappers.<ProcessTotaldeal>lambdaQuery().eq(ProcessTotaldeal::getMonth, currentMonth)); if(ObjectUtils.isNotEmpty(processTotaldeal)){ processDeal.setTotaldealId(processTotaldeal.getId()); } } return processDealMapper.pageProcessDeal(page, QueryWrappers.queryWrappers(processDeal)); } @Override public int addProcessDeal(ProcessDeal processDeal) { ProcessTotaldeal processTotaldeal; if (ObjectUtils.isEmpty(processDeal.getTotaldealId())){ LocalDate dealTime = LocalDate.now(); // å®ä¹æ¥ææ ¼å¼ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM"); // æ ¼å¼åå½åæ¥æ String currentMonth = dealTime.format(formatter); processTotaldeal= processTotaldealMapper.selectOne(Wrappers.<ProcessTotaldeal>lambdaQuery().eq(ProcessTotaldeal::getMonth,currentMonth)); if(ObjectUtils.isNotEmpty(processTotaldeal)){ processDeal.setTotaldealId(processTotaldeal.getId()); } }else { processTotaldeal= processTotaldealMapper.selectById(processDeal.getTotaldealId()); } processDealMapper.insert(processDeal); processTotaldeal.setTotalNum(processDeal.getNum()+processTotaldeal.getTotalNum()); return processTotaldealMapper.updateById(processTotaldeal); } @Override public int delProcessDeal(Integer id) { ProcessDeal processDeal = processDealMapper.selectById(id); processDealMapper.deleteById(id); ProcessTotaldeal processTotaldeal = processTotaldealMapper.selectById(processDeal.getTotaldealId()); processTotaldeal.setTotalNum(processTotaldeal.getTotalNum()-processDeal.getNum()); return processTotaldealMapper.updateById(processTotaldeal); } @Override public int doProcessDeal(ProcessDeal processDeal) { if (ObjectUtils.isNotEmpty(processDeal.getNum())) { ProcessDeal oldProcessDeal = processDealMapper.selectById(processDeal.getId()); if(null != processDeal.getTotaldealId()){ ProcessTotaldeal processTotaldeal = processTotaldealMapper.selectById(processDeal.getTotaldealId()); int totalNum = ObjectUtils.isEmpty(processTotaldeal) ? 0 : processTotaldeal.getTotalNum(); processTotaldeal.setTotalNum(totalNum - oldProcessDeal.getNum() + processDeal.getNum()); processTotaldealMapper.updateById(processTotaldeal); } } return processDealMapper.updateById(processDeal); } } cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessSampleServiceImpl.java
@@ -1,21 +1,25 @@ package com.ruoyi.process.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.deepoove.poi.XWPFTemplate; import com.deepoove.poi.config.Configure; import com.deepoove.poi.data.FilePictureRenderData; import com.ruoyi.common.utils.QueryWrappers; import com.ruoyi.inspect.util.HackLoopTableRenderPolicy; import com.ruoyi.process.mapper.ProcessSampleMapper; import com.ruoyi.process.mapper.ProcessTotalSampleMapper; import com.ruoyi.process.pojo.ProcessSample; import com.ruoyi.process.pojo.ProcessTotalSample; import com.ruoyi.process.service.ProcessSampleService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import javax.servlet.http.HttpServletResponse; import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; import java.util.HashMap; import java.util.List; /** * <p> @@ -31,64 +35,35 @@ @Resource private ProcessSampleMapper processSampleMapper; @Resource private ProcessTotalSampleMapper processTotalSampleMapper; @Override public IPage<ProcessSample> pageProcessSample(Page page, ProcessSample processSample) { //todoï¼ä» çæ if (ObjectUtils.isEmpty(processSample.getTotalSampleId())) { //è·åå½åæä»½ LocalDate currentDate = LocalDate.now(); // å®ä¹æ¥ææ ¼å¼ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM"); // æ ¼å¼åå½åæ¥æ String currentMonth = currentDate.format(formatter); //æ¥è¯¢åå² ProcessTotalSample processTotalSample = processTotalSampleMapper.selectOne(Wrappers.<ProcessTotalSample>lambdaQuery().eq(ProcessTotalSample::getMonth, currentMonth)); processSample.setTotalSampleId(processTotalSample.getId()); } return processSampleMapper.pageProcessSample(page, QueryWrappers.queryWrappers(processSample)); } @Override public int addProcessSample(ProcessSample processSample) { ProcessTotalSample processTotalSample; if (ObjectUtils.isEmpty(processSample.getTotalSampleId())){ LocalDate dealTime = LocalDate.now(); // å®ä¹æ¥ææ ¼å¼ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM"); // æ ¼å¼åå½åæ¥æ String currentMonth = dealTime.format(formatter); processTotalSample= processTotalSampleMapper.selectOne(Wrappers.<ProcessTotalSample>lambdaQuery().eq(ProcessTotalSample::getMonth,currentMonth)); processSample.setTotalSampleId(processTotalSample.getId()); }else { processTotalSample= processTotalSampleMapper.selectById(processSample.getTotalSampleId()); public void exportProcessSample(ProcessSample processSample, HttpServletResponse response) { List<ProcessSample> processSampleList = pageProcessSample(new Page(-1, -1), processSample).getRecords(); InputStream inputStream = this.getClass().getResourceAsStream("/static/sample-receive.docx"); Configure configure = Configure.builder() .bind("sampleList", new HackLoopTableRenderPolicy()) .build(); XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render( new HashMap<String, Object>() {{ put("sampleList", processSampleList); }}); try { response.setContentType("application/msword"); String fileName = URLEncoder.encode( "æ£éªæ ·åç»è®°è¡¨", "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("导åºå¤±è´¥"); } processSampleMapper.insert(processSample); processTotalSample.setTotalNum(processSample.getNum()+processTotalSample.getTotalNum()); return processTotalSampleMapper.updateById(processTotalSample); } @Override public int delProcessSample(Integer id) { ProcessSample processSample = processSampleMapper.selectById(id); processSampleMapper.deleteById(id); ProcessTotalSample processTotalSample = processTotalSampleMapper.selectById(processSample.getTotalSampleId()); processTotalSample.setTotalNum(processTotalSample.getTotalNum()-processSample.getNum()); return processTotalSampleMapper.updateById(processTotalSample); } @Override public int doProcessSample(ProcessSample processSample) { if (ObjectUtils.isNotEmpty(processSample.getNum())) { ProcessSample oldProcessSample = processSampleMapper.selectById(processSample.getId()); ProcessTotalSample processTotalSample = processTotalSampleMapper.selectById(processSample.getTotalSampleId()); processTotalSample.setTotalNum(processTotalSample.getTotalNum() - oldProcessSample.getNum() + processSample.getNum()); processTotalSampleMapper.updateById(processTotalSample); } return processSampleMapper.updateById(processSample); } } cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessTotalSampleServiceImpl.java
ÎļþÒÑɾ³ý cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessTotaldealServiceImpl.java
@@ -15,22 +15,35 @@ import com.ruoyi.common.utils.QueryWrappers; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.framework.exception.ErrorException; import com.ruoyi.inspect.util.HackLoopTableRenderPolicy; import com.ruoyi.process.mapper.InspectionOrderMapper; import com.ruoyi.process.mapper.ProcessDealMapper; import com.ruoyi.process.mapper.ProcessSampleMapper; import com.ruoyi.process.mapper.ProcessTotaldealMapper; import com.ruoyi.process.pojo.InspectionOrder; import com.ruoyi.process.pojo.ProcessDeal; import com.ruoyi.process.pojo.ProcessSample; import com.ruoyi.process.pojo.ProcessTotaldeal; import com.ruoyi.process.service.ProcessDealService; import com.ruoyi.process.service.ProcessTotaldealService; import com.ruoyi.system.mapper.UserMapper; import org.apache.commons.io.IOUtils; import org.apache.poi.xwpf.usermodel.*; import org.springframework.beans.factory.annotation.Value; import org.springframework.security.core.parameters.P; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.xml.soap.SAAJMetaFactory; import java.io.*; import java.net.URLEncoder; import java.nio.file.Files; import java.nio.file.Paths; import java.time.LocalDate; import java.time.YearMonth; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -52,10 +65,16 @@ private ProcessTotaldealMapper processTotaldealMapper; @Resource private ProcessDealMapper processDealMapper; private ProcessSampleMapper processSampleMapper; @Value("${wordUrl}") private String wordUrl; @Resource private ProcessDealService processDealService; @Resource private InspectionOrderMapper inspectionOrderMapper; @Resource private ProcessDealMapper processDealMapper; @Value("${file.path}") private String imgUrl; @@ -80,9 +99,6 @@ ProcessTotaldeal processTotaldeal = processTotaldealMapper.selectById(id); processTotaldeal.setSubmitUser(userId); processTotaldeal.setSubmitState("å·²æäº¤"); processTotaldeal.setSubmitUrl(user.getSignatureUrl()); //çææ ·åå¤çç³è¯·è¡¨å¹¶å°å¡«è¡¨äººççµåç¾åå°ä¸ processTotaldeal.setUrl(processTotaldeal(id, user.getSignatureUrl())); return processTotaldealMapper.updateById(processTotaldeal); } @@ -96,14 +112,9 @@ ProcessTotaldeal processTotaldeal = processTotaldealMapper.selectById(id); processTotaldeal.setExamineUser(userId); processTotaldeal.setExamineState(state); processTotaldeal.setExamineUrl(user.getSignatureUrl()); if (state.equals("ä¸éè¿")) { processTotaldeal.setSubmitState("å¾ æäº¤"); } //å°å®¡æ ¸äººççµåç¾åå°ä¸ wordInsertUrl(new HashMap<String, Object>() {{ put("examineUrl", new FilePictureRenderData(100, 50, imgUrl + "/" + user.getSignatureUrl())); }}, wordUrl + "/" + processTotaldeal.getUrl()); return processTotaldealMapper.updateById(processTotaldeal); } @@ -117,300 +128,113 @@ ProcessTotaldeal processTotaldeal = processTotaldealMapper.selectById(id); processTotaldeal.setRatifyUser(userId); processTotaldeal.setRatifyState(state); processTotaldeal.setRatifyUrl(user.getSignatureUrl()); if (state.equals("ä¸éè¿")) { processTotaldeal.setExamineState(state); processTotaldeal.setSubmitState("å¾ æäº¤"); } //å°æ¹å人çç¾åå°ä¸ wordInsertUrl(new HashMap<String, Object>() {{ put("ratifyUrl", new FilePictureRenderData(100, 50, imgUrl + "/" + user.getSignatureUrl())); }}, wordUrl + "/" + processTotaldeal.getUrl()); return processTotaldealMapper.updateById(processTotaldeal); } //çææ ·åå¤ç表word private String processTotaldeal(Integer id, String signatureUrl) { List<ProcessDeal> processDeals = processDealMapper.selectList(Wrappers.<ProcessDeal>lambdaQuery().eq(ProcessDeal::getTotaldealId, id)); String url; try { @Override public int addProcessTotaldeal(String month) { //æ°å¢æ»è¡¨ ProcessTotaldeal processTotaldeal = new ProcessTotaldeal(); List<ProcessTotaldeal> processTotaldeals = processTotaldealMapper.selectList(Wrappers.<ProcessTotaldeal>lambdaQuery() .eq(ProcessTotaldeal::getMonth, month)); if (processTotaldeals.size()<=0) { processTotaldeal.setMonth(month);//æä»½ processTotaldeal.setSubmitState("å¾ æäº¤"); processTotaldealMapper.insert(processTotaldeal); }else { processTotaldeal=processTotaldeals.get(0); } //æ°å¢è¯¦æ 表 //1.è·å该æä»½ç第ä¸å¤©åæåä¸å¤© DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM"); YearMonth yearMonth = YearMonth.parse(month, formatter); LocalDate firstDay = yearMonth.atDay(1); LocalDate lastDay = yearMonth.atEndOfMonth(); //2.æ¥è¯¢å¨è¿ä¸ªæ¶é´èå´å çæææ ·åç»è®°çæ°æ® List<ProcessSample> processSamples = processSampleMapper.selectList(Wrappers.<ProcessSample>lambdaQuery() .between(ProcessSample::getLeaveDate, firstDay, lastDay)); if (processSamples.size()>0){ //è·åå¤çæ¹å¼ InspectionOrder inspectionOrder = inspectionOrderMapper.selectById(processSamples.get(0).getInspectionOrderId()); List<ProcessDeal> processDeals = new ArrayList<>(); for (ProcessSample processSample : processSamples) { long count = processDealService.count(Wrappers.<ProcessDeal>lambdaQuery().eq(ProcessDeal::getProcessSampleId, processSample.getId())); if (count>0){ continue; } ProcessDeal processDeal = new ProcessDeal(); processDeal.setSampleName(processSample.getSampleName());//æ ·ååç§° processDeal.setSampleCode(processSample.getSampleCode());//æ ·åç¼å· processDeal.setSampleSupplier(processSample.getSampleSupplier());//便 ·åä½ processDeal.setNum(processSample.getNum());//æ ·åæ°é processDeal.setDealMethod(inspectionOrder.getProcessing()==1?"å®éªå®¤å¤ç":"å§æåä½åå");//å¤çæ¹å¼ processDeal.setDealTime(LocalDate.now());//æ¶é´=å½åæ¶é´ processDeal.setTotaldealId(processTotaldeal.getId());//æ»è¡¨id processDeal.setProcessSampleId(processSample.getId());//æ ·åæ¥æ¶id processDeals.add(processDeal); } processDealService.saveBatch(processDeals); } return 0; } @Override public void exportProcessTotaldeal(Integer id, HttpServletResponse response) { List<ProcessDeal> sampleDealDtos = processDealMapper.selectDeal(id); ProcessTotaldeal processTotaldeal = processTotaldealMapper.selectById(id); String submitUserUrl="1"; String examineUserUrl="1"; String ratifyUserUrl="1"; //è·åæäº¤äººç¾å if (ObjectUtils.isNotNull(processTotaldeal.getSubmitUser())) { User user1 = userMapper.selectById(processTotaldeal.getSubmitUser()); if (ObjectUtils.isEmpty(user1.getSignatureUrl())) throw new ErrorException("æªæ¾å°æäº¤äººççµåç¾å,请ä¸ä¼ èªå·±ççµåç¾å!"); submitUserUrl = user1.getSignatureUrl(); } //è·åå®¡æ ¸äººç¾å if (ObjectUtils.isNotNull(processTotaldeal.getExamineUser())) { User user2 = userMapper.selectById(processTotaldeal.getExamineUser()); if (ObjectUtils.isEmpty(user2.getSignatureUrl())) throw new ErrorException("æªæ¾å°å®¡æ ¸äººççµåç¾å,请ä¸ä¼ èªå·±ççµåç¾å!"); examineUserUrl = user2.getSignatureUrl(); } //è·åæ¹å人ç¾å if (ObjectUtils.isNotNull(processTotaldeal.getRatifyUser())) { User user3 = userMapper.selectById(processTotaldeal.getRatifyUser()); if (ObjectUtils.isEmpty(user3.getSignatureUrl())) throw new ErrorException("æªæ¾å°æ¹å人ççµåç¾å,请ä¸ä¼ èªå·±ççµåç¾å!"); ratifyUserUrl = user3.getSignatureUrl(); } // è·åè·¯å¾ InputStream inputStream = this.getClass().getResourceAsStream("/static/sample-deal.docx"); File file = File.createTempFile("temp", ".tmp"); OutputStream outputStream = new FileOutputStream(file); IOUtils.copy(inputStream, outputStream); url = file.getAbsolutePath(); } catch (FileNotFoundException e) { throw new ErrorException("æ¾ä¸å°æ¨¡æ¿æä»¶"); } catch (IOException e) { throw new RuntimeException(e); } ConfigureBuilder builder = Configure.builder(); builder.useSpringEL(true); List<Map<String, Object>> sampleList = new ArrayList<>(); Integer index = 1; Integer index1 = 1; for (int c = 0; c < processDeals.size(); c++) { //è¶ è¿20è¡æ¢é¡µ if (c % 20 == 0) { List<RowRenderData> rows = new ArrayList<>(); //è¡¨æ ¼çè¡æ° for (int i = 0; i < 21; i++) { RowRenderData rowRenderData = new RowRenderData(); RowStyle rowStyle = new RowStyle(); rowStyle.setHeight(40); rowRenderData.setRowStyle(rowStyle); List<CellRenderData> cells = new ArrayList<>(); //è¡¨æ ¼çåæ° for (int j = 0; j < 7; j++) { CellRenderData cellRenderData = new CellRenderData(); CellStyle cellStyle = new CellStyle(); cellStyle.setVertAlign(XWPFTableCell.XWPFVertAlign.CENTER); cellRenderData.setCellStyle(cellStyle); List<ParagraphRenderData> paragraphRenderDataList = new ArrayList<>(); ParagraphRenderData paragraphRenderData = new ParagraphRenderData(); ParagraphStyle paragraphStyle = new ParagraphStyle(); paragraphStyle.setAlign(ParagraphAlignment.CENTER); paragraphRenderData.setParagraphStyle(paragraphStyle); List<RenderData> renderData = new ArrayList<>(); TextRenderData textRenderData = new TextRenderData(); Style style = new Style(); style.setFontFamily("å®ä½"); style.setColor("000000"); textRenderData.setStyle(style); if (i == 0) { //第ä¸è¡ if (j == 0) { //第ä¸ååºå· textRenderData.setText("åºå·@No."); renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } else if (j == 1) { //第äºåæ ·ååç§° textRenderData.setText("æ ·ååç§°@Sample name"); renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } else if (j == 2) { //第ä¸åæ ·åç¼å· textRenderData.setText("æ ·åç¼å·@Sample number"); renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } else if (j == 3) { //第åå便 ·åä½ textRenderData.setText("便 ·åä½@Sample unit"); renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } else if (j == 4) { //第äºåæ°é textRenderData.setText("æ°é@Quantity"); renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } else if (j == 5) { //第å åå¤çæ¹å¼ textRenderData.setText("å¤çæ¹å¼@Processing"); renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } else { //第ä¸åæ¶é´ textRenderData.setText("æ¶é´@Date"); renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } } else { //å ¶ä»è¡ if (j == 0) { //第ä¸å try { String sampleName = processDeals.get((i - 1) + (index1 - 1) * 20).getSampleName(); textRenderData.setText(index + ""); } catch (Exception e) { textRenderData.setText(""); } index++; renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } else if (j == 1) { try { textRenderData.setText(processDeals.get((i - 1) + (index1 - 1) * 20).getSampleName()); } catch (Exception e) { textRenderData.setText(""); } renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } else if (j == 2) { try { textRenderData.setText(processDeals.get((i - 1) + (index1 - 1) * 20).getSampleCode()); } catch (Exception e) { textRenderData.setText(""); } renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } else if (j == 3) { try { textRenderData.setText(processDeals.get((i - 1) + (index1 - 1) * 20).getSampleSupplier()); } catch (Exception e) { textRenderData.setText(""); } renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } else if (j == 4) { try { textRenderData.setText(processDeals.get((i - 1) + (index1 - 1) * 20).getNum() + ""); } catch (Exception e) { textRenderData.setText(""); } renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } else if (j == 5) { try { textRenderData.setText(processDeals.get((i - 1) + (index1 - 1) * 20).getDealMethod()); } catch (Exception e) { textRenderData.setText(""); } renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } else { try { textRenderData.setText(processDeals.get((i - 1) + (index1 - 1) * 20).getDealTime() + ""); } catch (Exception e) { textRenderData.setText(""); } renderData.add(textRenderData); paragraphRenderData.setContents(renderData); paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); } } } rowRenderData.setCells(cells); if (rowRenderData.getCells().size() != 0) { rows.add(rowRenderData); } } TableRenderData tableRenderData = new TableRenderData(); tableRenderData.setRows(rows); int countSize = tableRenderData.getRows().get(0).getCells().size(); for (RowRenderData row : tableRenderData.getRows()) { if (row.getCells().size() != countSize) { throw new ErrorException("æ¯è¡åå æ ¼ä¸ç¸ç"); } } TableStyle tableStyle = new TableStyle(); tableStyle.setWidth(XWPFTable.DEFAULT_PERCENTAGE_WIDTH); tableStyle.setAlign(TableRowAlign.CENTER); BorderStyle borderStyle = new BorderStyle(); borderStyle.setColor("000000"); borderStyle.setType(XWPFTable.XWPFBorderType.THICK); borderStyle.setSize(14); tableStyle.setLeftBorder(borderStyle); tableStyle.setTopBorder(borderStyle); tableStyle.setRightBorder(borderStyle); tableStyle.setBottomBorder(borderStyle); tableRenderData.setTableStyle(tableStyle); Map<String, Object> table = new HashMap<>(); table.put("sample", tableRenderData); table.put("index1", index1); sampleList.add(table); index1++; } } Integer finalIndex = index1; XWPFTemplate template = XWPFTemplate.compile(url, builder.build()).render( Configure configure = Configure.builder() .bind("sampleList", new HackLoopTableRenderPolicy()) .build(); FilePictureRenderData finalSubmitUserUrl = submitUserUrl!="1" ? new FilePictureRenderData(100, 50, imgUrl + "/" + submitUserUrl) : null; FilePictureRenderData finalExamineUserUrl = examineUserUrl!="1" ? new FilePictureRenderData(100, 50, imgUrl + "/" + examineUserUrl) : null; FilePictureRenderData finalRatifyUserUrl = ratifyUserUrl!="1" ? new FilePictureRenderData(100, 50, imgUrl + "/" + ratifyUserUrl) : null; XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render( new HashMap<String, Object>() {{ put("sampleList", sampleList); put("size", finalIndex); put("examineUrl", null); put("ratifyUrl", null); put("writeUrl", new FilePictureRenderData(100, 50, imgUrl + "/" + signatureUrl)); put("sampleList", sampleDealDtos); put("examineUrl", finalExamineUserUrl);//å®¡æ ¸äºº put("ratifyUrl", finalRatifyUserUrl);//æ¹å人 put("writeUrl",finalSubmitUserUrl);//æäº¤äºº }}); String name = UUID.randomUUID() + "_æ ·åå¤çç³è¯·è¡¨" + ".docx"; try { template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name))); } catch (IOException e) { throw new RuntimeException(e); response.setContentType("application/msword"); String fileName = URLEncoder.encode( "æ ·åå¤çç³è¯·è¡¨", "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("导åºå¤±è´¥"); } //å¤çä¸è±ææ¢è¡çé®é¢ String path = wordUrl + "/" + name; try { FileInputStream stream1 = new FileInputStream(path); XWPFDocument document1 = new XWPFDocument(stream1); List<XWPFTable> xwpfTables1 = document1.getTables(); for (int i = 0; i < xwpfTables1.size(); i++) { for (int j = 0; j < xwpfTables1.get(i).getRows().size(); j++) { for (int k = 0; k < xwpfTables1.get(i).getRows().get(j).getTableCells().size(); k++) { if (xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText().contains("@")) { String text = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText(); String[] split = text.split("@"); xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0); XWPFParagraph xwpfParagraph = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).addParagraph(); XWPFRun run = xwpfParagraph.createRun(); run.setText(split[0]); if (ObjectUtils.isNotNull(split[1])) { run.addBreak(); run.setText(split[1]); } xwpfParagraph.setAlignment(ParagraphAlignment.CENTER); } } } } FileOutputStream fileOutputStream1 = new FileOutputStream(path); document1.write(fileOutputStream1); fileOutputStream1.close(); } catch (FileNotFoundException e) { throw new RuntimeException(e); } catch (IOException e) { throw new RuntimeException(e); } return name; } public int wordInsertUrl(Map<String, Object> map, String url) { XWPFTemplate template = XWPFTemplate.compile(url).render(map); try { template.writeAndClose(Files.newOutputStream(Paths.get(url))); } catch (IOException e) { throw new RuntimeException(e); } return 1; } } cnas-process/src/main/resources/mapper/ProcessDealMapper.xml
@@ -23,4 +23,17 @@ ${ew.customSqlSegment} </if> </select> <select id="selectDeal" resultType="com.ruoyi.process.pojo.ProcessDeal"> select ROW_NUMBER() OVER (ORDER BY id) AS indexs, id, sample_name, sample_code, sample_supplier, num, deal_method, deal_time from cnas_process_deal where totaldeal_id = #{id} </select> </mapper> cnas-process/src/main/resources/mapper/ProcessSampleMapper.xml
@@ -14,7 +14,6 @@ <result column="update_user" property="updateUser" /> <result column="create_time" property="createTime" /> <result column="update_time" property="updateTime" /> <result column="total_sample_id" property="totalSampleId" /> <result column="receive_date" property="receiveDate" /> <result column="leave_date" property="leaveDate" /> <result column="deal_time" property="dealTime" /> cnas-process/src/main/resources/mapper/ProcessTotalSampleMapper.xml
ÎļþÒÑɾ³ý cnas-process/src/main/resources/mapper/ProcessTotaldealMapper.xml
@@ -6,19 +6,14 @@ <id column="id" property="id"/> <result column="examine_user" property="examineUser"/> <result column="examine_state" property="examineState"/> <result column="examine_url" property="examineUrl"/> <result column="examineUserName" property="examineUserName"/> <result column="ratify_user" property="ratifyUser"/> <result column="ratify_state" property="ratifyState"/> <result column="ratify_url" property="ratifyUrl"/> <result column="ratifyUserName" property="ratifyUserName"/> <result column="submit_user" property="submitUser"/> <result column="submit_state" property="submitState"/> <result column="submit_url" property="submitUrl"/> <result column="submitUserName" property="submitUserName"/> <result column="total_num" property="totalNum"/> <result column="month" property="month"/> <result column="url" property="url"/> </resultMap> <select id="pageProcessTotaldeal" resultType="com.ruoyi.process.pojo.ProcessTotaldeal"> select * cnas-process/src/main/resources/static/sample-deal.docxBinary files differ
cnas-process/src/main/resources/static/sample-receive.docxBinary files differ