From 4f3a98f19143865cdc1de4791e8a95d96bd40c65 Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期五, 01 八月 2025 13:27:59 +0800
Subject: [PATCH] yys 密码已重置

---
 cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessTotaldealServiceImpl.java |  220 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 220 insertions(+), 0 deletions(-)

diff --git a/cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessTotaldealServiceImpl.java b/cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessTotaldealServiceImpl.java
new file mode 100644
index 0000000..ee516b8
--- /dev/null
+++ b/cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessTotaldealServiceImpl.java
@@ -0,0 +1,220 @@
+package com.ruoyi.process.service.impl;
+
+import cn.hutool.core.lang.UUID;
+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.config.ConfigureBuilder;
+import com.deepoove.poi.data.*;
+import com.deepoove.poi.data.style.*;
+import com.ruoyi.common.core.domain.entity.User;
+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.inspect.util.UserUtils;
+import com.ruoyi.process.dto.ProcessDealDto;
+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;
+import java.util.Map;
+
+/**
+ * <p>
+ * 妫�娴嬫垨鏍″噯鐗╁搧鐨勫缃�昏〃(鍘嗗彶) 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author
+ * @since 2024-11-02 03:59:09
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class ProcessTotaldealServiceImpl extends ServiceImpl<ProcessTotaldealMapper, ProcessTotaldeal> implements ProcessTotaldealService {
+
+    @Resource
+    private ProcessTotaldealMapper processTotaldealMapper;
+
+    @Resource
+    private ProcessSampleMapper processSampleMapper;
+
+    @Resource
+    private ProcessDealService processDealService;
+
+    @Resource
+    private InspectionOrderMapper inspectionOrderMapper;
+
+   @Resource
+   private ProcessDealMapper processDealMapper;
+
+    @Value("${file.path}")
+    private String imgUrl;
+
+
+    @Resource
+    private UserMapper userMapper;
+
+    @Override
+    public IPage<ProcessTotaldeal> pageProcessTotaldeal(Page page, ProcessTotaldeal processTotaldeal) {
+        return processTotaldealMapper.pageProcessTotaldeal(page, QueryWrappers.queryWrappers(processTotaldeal));
+
+    }
+
+    @Override
+    public int submitProcessTotaldeal(Integer id) {
+        Integer userId = SecurityUtils.getUserId().intValue();
+        User user = userMapper.selectById(userId);
+        if (ObjectUtils.isEmpty(user.getSignatureUrl())) {
+            throw new ErrorException("鏈壘鍒板~琛ㄤ汉鐨勭數瀛愮鍚�,璇蜂笂浼犺嚜宸辩殑鐢靛瓙绛惧悕!");
+        }
+        ProcessTotaldeal processTotaldeal = processTotaldealMapper.selectById(id);
+        processTotaldeal.setSubmitUser(userId);
+        processTotaldeal.setSubmitState("宸叉彁浜�");
+        return processTotaldealMapper.updateById(processTotaldeal);
+    }
+
+    @Override
+    public int checkProcessTotaldeal(Integer id, String state) {
+        Integer userId = SecurityUtils.getUserId().intValue();
+        User user = userMapper.selectById(userId);
+        if (ObjectUtils.isEmpty(user.getSignatureUrl())) {
+            throw new ErrorException("鏈壘鍒板鏍镐汉鐨勭數瀛愮鍚�,璇蜂笂浼犺嚜宸辩殑鐢靛瓙绛惧悕!");
+        }
+        ProcessTotaldeal processTotaldeal = processTotaldealMapper.selectById(id);
+        processTotaldeal.setExamineUser(userId);
+        processTotaldeal.setExamineState(state);
+        if (state.equals("涓嶉�氳繃")) {
+            processTotaldeal.setSubmitState("寰呮彁浜�");
+        }
+        return processTotaldealMapper.updateById(processTotaldeal);
+    }
+
+    @Override
+    public int ratifyProcessTotaldeal(Integer id, String state) {
+        Integer userId = SecurityUtils.getUserId().intValue();
+        User user = userMapper.selectById(userId);
+        if (ObjectUtils.isEmpty(user.getSignatureUrl())) {
+            throw new ErrorException("鏈壘鍒版壒鍑嗕汉鐨勭數瀛愮鍚�,璇蜂笂浼犺嚜宸辩殑鐢靛瓙绛惧悕!");
+        }
+        ProcessTotaldeal processTotaldeal = processTotaldealMapper.selectById(id);
+        processTotaldeal.setRatifyUser(userId);
+        processTotaldeal.setRatifyState(state);
+        if (state.equals("涓嶉�氳繃")) {
+            processTotaldeal.setExamineState(state);
+            processTotaldeal.setSubmitState("寰呮彁浜�");
+        }
+        return processTotaldealMapper.updateById(processTotaldeal);
+    }
+
+    @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<ProcessDealDto> sampleDealDtos = processDealMapper.selectDeal(id);
+        ProcessTotaldeal processTotaldeal = processTotaldealMapper.selectById(id);
+
+        // 鑾峰彇璺緞
+        InputStream inputStream = this.getClass().getResourceAsStream("/static/sample-deal.docx");
+        Configure configure = Configure.builder()
+                .bind("sampleList", new HackLoopTableRenderPolicy())
+                .build();
+        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+                new HashMap<String, Object>() {{
+                    put("sampleList", sampleDealDtos);
+                    put("writeUrl",UserUtils.getFinalUserSignatureUrl(processTotaldeal.getSubmitUser()));//鎻愪氦浜�
+                    put("examineUrl", UserUtils.getFinalUserSignatureUrl(processTotaldeal.getExamineUser()));//瀹℃牳浜�
+                    put("ratifyUrl", UserUtils.getFinalUserSignatureUrl(processTotaldeal.getRatifyUser()));//鎵瑰噯浜�
+                }});
+        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();
+            inputStream.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new RuntimeException("瀵煎嚭澶辫触");
+        }
+    }
+}

--
Gitblit v1.9.3