From cf9a5039e6db9d1d5963e3fe1a37d00169ec2ef7 Mon Sep 17 00:00:00 2001
From: whyclxw <810412026@qq.com>
Date: 星期三, 25 六月 2025 11:18:22 +0800
Subject: [PATCH] 验收报告修改

---
 src/main/java/com/whyc/service/ProductHistoryService.java |  206 +++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 166 insertions(+), 40 deletions(-)

diff --git a/src/main/java/com/whyc/service/ProductHistoryService.java b/src/main/java/com/whyc/service/ProductHistoryService.java
index f25ce1a..34c60d0 100644
--- a/src/main/java/com/whyc/service/ProductHistoryService.java
+++ b/src/main/java/com/whyc/service/ProductHistoryService.java
@@ -4,25 +4,41 @@
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.whyc.dto.Response;
+import com.whyc.mapper.ProductBomHistoryMapper;
+import com.whyc.mapper.ProductBomMapper;
 import com.whyc.mapper.ProductHistoryMapper;
 import com.whyc.mapper.ProductMapper;
+import com.whyc.pojo.Material;
 import com.whyc.pojo.Product;
 import com.whyc.pojo.ProductHistory;
+import com.whyc.pojo.ProductLockLog;
+import com.whyc.util.ActionUtil;
+import com.whyc.util.DateUtil;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
-import java.awt.print.PrinterJob;
+import java.util.Date;
+import java.util.LinkedList;
 import java.util.List;
 
 @Service
 public class ProductHistoryService {
     @Autowired(required = false)
     private ProductHistoryMapper mapper;
+
     @Autowired(required = false)
     private ProductMapper productMapper;
 
+    @Autowired(required = false)
+    private ProductBomMapper productBomMapper;
 
+    @Autowired(required = false)
+    private ProductBomHistoryMapper productBomHistoryMapper;
 
+    @Autowired
+    private ProductLockLogService lockLogService;
 
     //浜у搧璇︽儏鏌ョ湅鐗堟湰淇℃伅
     public Response getProductVersion(String parentCode,String customCode) {
@@ -35,10 +51,38 @@
     }
 
     /**鏂板杩藉姞鐨勭増鏈苟灏嗗師鍏堢殑鐗堟湰鐨勫惎鐢ㄨ缃负鏈惎鐢�*/
+    @Transactional
     public void insertAndUpdateEnabled(ProductHistory productHistory) {
+        QueryWrapper<ProductHistory> query = Wrappers.query();
+        query.eq("parent_code",productHistory.getParentCode())
+                .eq("custom_code",productHistory.getCustomCode()).ne("enabled",0);
+        List<ProductHistory> productNoZeroList = mapper.selectList(query);
+        //娣诲姞鏂板鏃ュ織鍒皌b_product_lock_log琛�
+        List<ProductLockLog> lockLogs = new LinkedList<>();
+        for (ProductHistory historyNoZero : productNoZeroList) {
+            ProductLockLog lockLog = new ProductLockLog();
+            lockLog.setParentCode(historyNoZero.getParentCode());
+            lockLog.setCustomCode(historyNoZero.getCustomCode());
+            lockLog.setVersion(historyNoZero.getVersion());
+            lockLog.setVersionTime(DateUtil.YYYY_MM_DD_HH_MM_SS.format(historyNoZero.getVersionTime()));
+            if(historyNoZero.getEnabled() == 1) {
+                lockLog.setReason("浜у搧bom涓婁紶,鍘熺敓鏁堢増鏈攣瀹�");
+            }else{
+                lockLog.setReason("浜у搧bom涓婁紶,鍘熷緟瀹℃牳鐗堟湰閿佸畾");
+            }
+            lockLog.setOwner(ActionUtil.getUser().getName());
+            lockLog.setCreateTime(new Date());
+            //1浠h〃鏃ュ織绫诲瀷涓�:閿佸畾
+            lockLog.setLockFlag(1);
+
+            lockLogs.add(lockLog);
+        }
+        if(lockLogs.size()>0) {
+            lockLogService.insertBatch(lockLogs);
+        }
         UpdateWrapper<ProductHistory> update = Wrappers.update();
         update.set("enabled",0).eq("parent_code",productHistory.getParentCode())
-                .eq("custom_code",productHistory.getCustomCode()).eq("enabled",1);
+                .eq("custom_code",productHistory.getCustomCode()).ne("enabled",0);
         mapper.update(null,update);
 
         mapper.insert(productHistory);
@@ -69,58 +113,107 @@
         query.eq("parent_code",parentCode).eq("custom_code",customCode).orderByDesc("version").last(" limit 1");
         return mapper.selectOne(query);
     }
-    //鍘嗗彶鐗堟湰鍙敤鎬ц瀹�
-    public Response setpHistoryEnable(String parentCode, String customCode, int version, int enabled) {
-        UpdateWrapper wrapper=new UpdateWrapper();
-        wrapper.eq("parent_code",parentCode);
-        wrapper.eq("custom_code",customCode);
-
+    //鍘嗗彶鐗堟湰鍙敤鎬ц瀹�<浜у搧涓寘鍚挘閲戜欢锛�0120锛夊鏋滃寘鍚渶瑕佹妸褰撴垚浜у搧鐨勯挘閲戜欢閿佹帀
+    @Transactional
+    public Response setpHistoryEnable(String parentCode, String customCode, int version, int enabled, String reason, String versionTime) {
         int flag=0;
-        if(enabled==1){
+        QueryWrapper qWrapper=new QueryWrapper();
+        qWrapper.eq("parent_code",parentCode);
+        qWrapper.eq("custom_code",customCode);
+        //1.鏌ヨ褰撳墠product涓殑淇℃伅
+        Product product=productMapper.selectOne(qWrapper);
+        if(enabled==1){//瑙i攣
             //鍏堝皢鎵�鏈夌殑閿佸畾
+            UpdateWrapper wrapper=new UpdateWrapper();
+            wrapper.eq("parent_code",parentCode);
+            wrapper.eq("custom_code",customCode);
             wrapper.set("enabled",0);
-            flag=mapper.update(null,wrapper);
-            //鍐嶅皢閫変腑鐨勮涓哄彲鐢�
-            wrapper.eq("version",version);
-            wrapper.set("enabled",1);
-            flag=mapper.update(null,wrapper);
+            mapper.update(null,wrapper);
+            //鍐嶅皢閫変腑鐨勮涓哄彲鐢�(鏌ュ嚭瑕佷娇鐢ㄧ増鏈�)
+            QueryWrapper hisWrapper=new QueryWrapper();
+            hisWrapper.eq("parent_code",parentCode);
+            hisWrapper.eq("custom_code",customCode);
+            hisWrapper.eq("version",version);
+            ProductHistory his=mapper.selectOne(hisWrapper);
+            UpdateWrapper wrapper1=new UpdateWrapper();
+            wrapper1.eq("parent_code",parentCode);
+            wrapper1.eq("custom_code",customCode);
+            wrapper1.eq("id",his.getId());
+            wrapper1.set("enabled",1);
+            flag=mapper.update(null,wrapper1);
             if(flag>0){
-                QueryWrapper qWrapper=new QueryWrapper();
-                qWrapper.eq("parent_code",parentCode);
-                qWrapper.eq("custom_code",customCode);
-                //灏嗛�変腑鐨勭増鏈殑鍘嗗彶淇℃伅鏌ヨ鍑烘潵
-                qWrapper.eq("version",version);
-                ProductHistory pHistory=mapper.selectOne(qWrapper);
-                //prodcut涓垹闄ゆ棫鐨勪骇鍝佷俊鎭�
+                //2.灏嗛�変腑鐨勭増鏈殑鍘嗗彶淇℃伅鏌ヨ鍑烘潵
+                /*qWrapper.eq("id",his.getId());
+                ProductHistory pHistory=mapper.selectOne(qWrapper);*/
+                //3:prodcut涓垹闄ゆ棫鐨勪骇鍝佷俊鎭�
                 UpdateWrapper deleteWrapper=new UpdateWrapper();
-                deleteWrapper.eq("parent_code",parentCode);
-                deleteWrapper.eq("custom_code",customCode);
+                deleteWrapper.eq("id",product.getId());
                 productMapper.delete(deleteWrapper);
-                //鍐嶅湪product涓煡璇㈣瀹氬彲鐢ㄧ殑pHistory
-                if(pHistory!=null){
-                    Product product=new Product();
-                    product.setParentCode(pHistory.getParentCode());
-                    product.setParentName(pHistory.getParentName());
-                    product.setParentModel(pHistory.getParentModel());
-                    product.setCustomCode(pHistory.getCustomCode());
-                    product.setCreateTime(pHistory.getCreateTime());
-                    product.setVersionTime(pHistory.getVersionTime());
-                    product.setVersion(pHistory.getVersion());
-                    productMapper.insert(product);
+                //4.productBom涓垹闄ゆ棫鐨勪俊鎭�
+                if(product!=null){
+                    UpdateWrapper bomWrapper=new UpdateWrapper();
+                    bomWrapper.eq("product_id",product.getId());
+                    productBomMapper.delete(bomWrapper);
+                }
+                if(his!=null){
+                    // 5.鍦╬roduct涓彃鍏ヨ瀹氬彲鐢ㄧ殑pHistory
+                    productMapper.insertPselectPH(his.getId());
+                    //6.鍦╬roductBom涓彃鍏HsitoryBom鏌ヨ鍑虹殑鏁版嵁
+                    productBomMapper.insertBomSelectBomH(his.getId(),his.getSubVersionMax());
                 }
             }
         }else{
+            UpdateWrapper wrapper=new UpdateWrapper();
+            wrapper.eq("parent_code",parentCode);
+            wrapper.eq("custom_code",customCode);
             wrapper.eq("version",version);
             wrapper.set("enabled",0);
             flag=mapper.update(null,wrapper);
-            if(flag>0){
-                //prodcut涓垹闄ゆ棫鐨勪骇鍝佷俊鎭�
-                UpdateWrapper deleteWrapper=new UpdateWrapper();
-                deleteWrapper.eq("parent_code",parentCode);
-                deleteWrapper.eq("custom_code",customCode);
-                productMapper.delete(deleteWrapper);
+
+            //3:prodcut涓骇鍝佺増鏈缃负-1
+            UpdateWrapper uWrapper=new UpdateWrapper();
+            uWrapper.eq("parent_code",parentCode);
+            uWrapper.eq("custom_code",customCode);
+            //璁句负涓嶅彲鐢ㄧ増鏈负-1
+            uWrapper.set("version",-1);
+            productMapper.update(null,uWrapper);
+
+            //4.鏌ヨ浜у搧鏄惁瀛樺湪鐗╂枡鏃堕挘閲戜欢鐨勪骇鍝�
+            List<Material> list=productMapper.selectMaterial_0120(parentCode,customCode);
+            //濡傛灉瀛樺湪鍒欓攣瀹�
+            if(list!=null&&list.size()>0){
+                for (Material material_0120:list) {
+                    //鍏堥攣瀹氬巻鍙�
+                    UpdateWrapper wrapperHistory_0120=new UpdateWrapper();
+                    wrapperHistory_0120.eq("parent_code",material_0120.getSubCode());
+                    wrapperHistory_0120.set("enabled",0);
+                    mapper.update(null,wrapperHistory_0120);
+                    //鍐嶈缃疄鏃朵负-1
+                    UpdateWrapper wrapper_0120=new UpdateWrapper();
+                    wrapper_0120.eq("parent_code",material_0120.getSubCode());
+                    //璁句负涓嶅彲鐢ㄧ増鏈负-1
+                    wrapper_0120.set("version",-1);
+                    productMapper.update(null,wrapper_0120);
+                }
             }
 
+        }
+        //閿佸畾鍜岃В閿佽褰曟坊鍔�
+        if(flag>0){ //鎿嶄綔鎴愬姛
+            ProductLockLog lockLog = new ProductLockLog();
+            lockLog.setParentCode(parentCode);
+            lockLog.setCustomCode(customCode);
+            lockLog.setVersion(version);
+            lockLog.setVersionTime(versionTime);
+            lockLog.setReason(reason);
+            lockLog.setOwner(ActionUtil.getUser().getName());
+            lockLog.setCreateTime(new Date());
+            if(enabled==0){ //閿佸畾
+                lockLog.setLockFlag(1);
+            }else{ //瑙i攣
+                lockLog.setLockFlag(0);
+            }
+            lockLogService.insert(lockLog);
         }
         return new Response().set(1,flag>0,"鍘嗗彶鐗堟湰鍙敤鎬ц瀹�");
     }
@@ -128,4 +221,37 @@
     public void insert(ProductHistory his) {
         mapper.insert(his);
     }
+
+    /**
+     *  鑾峰彇鏍囧噯浜у搧
+     * @param parentCode
+     * @return
+     */
+    public ProductHistory getStandard(String parentCode) {
+        QueryWrapper<ProductHistory> query = Wrappers.query();
+        query.eq("parent_code",parentCode);
+        List<ProductHistory> historyList = mapper.selectList(query);
+        for (ProductHistory history : historyList) {
+            String customCode = history.getCustomCode();
+            if(customCode == null || customCode.trim().equals("")){ //涓嶅瓨鍦ㄥ畾鍒惰〃鍗曞彿,鏄爣鍑嗕骇鍝�
+                return history;
+            }
+        }
+        return null;
+    }
+
+    public boolean checkExists(String parentCode, String customCode) {
+        QueryWrapper<ProductHistory> query = Wrappers.query();
+        query.eq("parent_code",parentCode);
+        if(!StringUtils.isBlank(customCode)){ //鏍囧噯浜у搧
+            query.eq("custom_code",customCode);
+        }
+        query.last(" limit 1");
+        ProductHistory productHistory = mapper.selectOne(query);
+        return productHistory!=null;
+    }
+
+    public ProductHistory getById(Integer id) {
+        return mapper.selectById(id);
+    }
 }

--
Gitblit v1.9.1