From bcc80a6833abe9f24abdb978f7c7f01b664a574f Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期二, 18 二月 2025 14:48:45 +0800
Subject: [PATCH] 优化调整

---
 cnas-server/src/main/resources/mapper/DeviceMapper.xml                                 |   19 +++
 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsProductServiceImpl.java   |   29 +++--
 cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceDto.java                           |    3 
 inspect-server/src/main/java/com/yuanchu/mom/controller/WarehouseController.java       |    6 
 inspect-server/src/main/java/com/yuanchu/mom/pojo/WarehouseShelf.java                  |   10 +
 inspect-server/src/main/java/com/yuanchu/mom/service/impl/WarehouseServiceImpl.java    |   12 +
 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java |  132 +++++++++++++++++++++----
 inspect-server/src/main/resources/mapper/WarehouseMapper.xml                           |   39 ++++++-
 inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java    |    9 +
 inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java          |    3 
 10 files changed, 203 insertions(+), 59 deletions(-)

diff --git a/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceDto.java b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceDto.java
index 2295cbf..e140fc0 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceDto.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/dto/DeviceDto.java
@@ -43,4 +43,7 @@
     @ValueTableShow(value = 16, name = "涓嬫鏍″噯鏃ユ湡")
     @ApiModelProperty(value = "涓嬫鏍″噯鏃ユ湡")
     private LocalDateTime nextCalibrationDateTwo;
+
+    @ApiModelProperty(value = "鏍″噯鎻愰啋")
+    private String status;
 }
diff --git a/cnas-server/src/main/resources/mapper/DeviceMapper.xml b/cnas-server/src/main/resources/mapper/DeviceMapper.xml
index 6d1de4a..4a8ddca 100644
--- a/cnas-server/src/main/resources/mapper/DeviceMapper.xml
+++ b/cnas-server/src/main/resources/mapper/DeviceMapper.xml
@@ -102,12 +102,25 @@
         SEPARATOR ';'
         ) AS insProductItem,
         u.name ,
-        l.laboratory_name
+        l.laboratory_name,
+        cmr.next_calibration_date nextCalibrationDateTwo,
+        CASE
+        WHEN cmr.next_calibration_date IS NULL THEN 0
+        WHEN cmr.next_calibration_date BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 45 DAY) THEN 1
+        ELSE 0
+        END AS status
         FROM
         device d
         LEFT JOIN `user` u ON u.id = d.equipment_manager
         LEFT JOIN laboratory l ON l.id = d.subordinate_departments_id
-        LEFT JOIN device_metric_record cmr ON d.id = cmr.device_id
+        LEFT JOIN (SELECT
+        device_id,
+        type,
+        MAX(next_calibration_date) AS next_calibration_date
+        FROM
+        device_metric_record
+        GROUP BY
+        device_id )cmr ON d.id = cmr.device_id
         LEFT JOIN structure_item_parameter sip ON FIND_IN_SET(sip.id, d.ins_product_ids)
         <where>
             <if test="laboratoryNameIsNull != null and laboratoryNameIsNull == true">
@@ -117,7 +130,7 @@
         </where>
         GROUP BY
         d.id,
-        u.name, l.laboratory_name
+        u.name, l.laboratory_name,cmr.next_calibration_date,status
         ) a
         <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
             ${ew.customSqlSegment}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java b/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java
index 339e4e6..d171ba1 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java
@@ -109,6 +109,13 @@
         return Result.success(insOrderPlanService.verifyPlan(sampleId, laboratory, type, tell));
     }
 
+    @ValueClassify("妫�楠屼换鍔�")
+    @ApiOperation(value = "绾犳澶嶆牳")
+    @PostMapping("/verifyPlan2")
+    public Result<?> verifyPlan2(Integer sampleId, String laboratory, Integer type, String tell) throws IOException {
+        return Result.success(insOrderPlanService.verifyPlan2(sampleId, laboratory, type, tell));
+    }
+
     @ValueAuth
     @ApiOperation(value = "鏍¢獙妫�楠屼换鍔℃彁浜�")
     @PostMapping("/checkSubmitPlan")
@@ -245,7 +252,6 @@
     @ValueAuth
     @PostMapping("/getInsProduct2")
     @ApiOperation("鏌ョ湅妫�楠屽巻鍙�")
-    //杩欓噷鐨刬d鏄牱鍝乮d
     public Result<?> getInsProduct2(Integer id, Integer type, String laboratory, HttpServletRequest request, Integer num) {
         return Result.success(insOrderPlanService.getInsProduct2(id, type, laboratory, request, num));
     }
@@ -274,7 +280,6 @@
     @ValueAuth
     @PostMapping("/getCheckUser")
     @ApiOperation("鑾峰彇褰撳墠妫�楠屼换鍔$殑鎵�鏈夋楠屽憳淇℃伅")
-    //杩欓噷鐨勪紶鍙傛槸鏍峰搧id,绛夋楠屼换鍔¢偅鍧楀叏鏀逛簡涔嬪悗杩欓噷灏辨病闂
     public Result<?> getCheckUser(Integer id,String sonLaboratory) {
         List<InsSampleUser> insSampleUsers = insSampleUserMapper.selectList(Wrappers.<InsSampleUser>lambdaQuery()
                 .eq(InsSampleUser::getState, 0)   //妫�楠屼汉
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/controller/WarehouseController.java b/inspect-server/src/main/java/com/yuanchu/mom/controller/WarehouseController.java
index 3a2a4b2..1265f2f 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/controller/WarehouseController.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/controller/WarehouseController.java
@@ -29,10 +29,12 @@
 
     @ValueClassify("鏍峰搧绠$悊")
     @GetMapping("/selectWarehouse")
-    @ApiOperation("鏌ヨ浠撳簱")
+    @ApiOperation("鏌ヨ浠撳簱---浠呮煡璇负绌鸿揣鏋�")
     public Result selectWarehouse() {
         return Result.success(warehouseService.selectWarehouse());
     }
+
+
     @ValueClassify("鏍峰搧绠$悊")
     @PostMapping("/addShelf")
     @ApiOperation("娣诲姞璐ф灦")
@@ -95,4 +97,4 @@
     public Result getSampleRecord(Integer id) {
         return Result.success(warehouseService.getSampleRecord(id));
     }
-}
\ No newline at end of file
+}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/pojo/WarehouseShelf.java b/inspect-server/src/main/java/com/yuanchu/mom/pojo/WarehouseShelf.java
index 15f5597..3f142cd 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/pojo/WarehouseShelf.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/pojo/WarehouseShelf.java
@@ -6,6 +6,7 @@
 
 import java.io.Serializable;
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * 璐ф灦
@@ -15,7 +16,7 @@
 @Data
 public class WarehouseShelf implements Serializable {
     /**
-     * 
+     *
      */
     @TableId(type = IdType.AUTO)
     private Integer id;
@@ -38,7 +39,7 @@
     private Integer col;
 
     /**
-     * 
+     *
      */
     @TableField(fill = FieldFill.INSERT)
     private Integer createUser;
@@ -58,4 +59,7 @@
      * 澶栭敭锛氫粨搴搃d
      */
     private Integer warehouseId;
-}
\ No newline at end of file
+
+    @TableField(select = false,exist = false)
+    List<WarehouseCell> warehouseCellList;
+}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java b/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java
index e76c725..20e5f5e 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java
@@ -39,6 +39,9 @@
 
     int verifyPlan(Integer sampleId, String laboratory, Integer type, String tell) throws IOException;
 
+    //绾犳澶嶆牳閿欒鐨勬儏鍐�
+    int verifyPlan2(Integer sampleId, String laboratory, Integer type, String tell) throws IOException;
+
     int submitPlan(SubmitPlanDto submitPlanDto);
 
     //鎾ら攢鎻愪氦
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
index 3a32619..bac2940 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
@@ -354,7 +354,7 @@
                 dianLuUtils.readDianLuFile1(sampleId, insOrderFile);
             } else if (ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("鐢佃矾璇曢獙") && split[split.length - 1].equals("csv") && filename.contains("椹绘尝")) {
                 dianLuUtils.readDianLuFile2(sampleId, insOrderFile);
-            }else if (ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("鐢佃矾璇曢獙") && split[split.length - 1].equals("csv") && insOrder.getSampleType().equals("鏃犳簮鍣ㄤ欢")) {
+            } else if (ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("鐢佃矾璇曢獙") && split[split.length - 1].equals("csv") && insOrder.getSampleType().equals("鏃犳簮鍣ㄤ欢")) {
                 dianLuUtils.readDianLuFile3(sampleId, insOrderFile);
             }
         } catch (Exception e) {
@@ -891,7 +891,7 @@
         for (InsProductResultDto insProductResultDto : insProductResultDtos.getInsProductResultDtos()) {
             saveInsContext2(insProductResultDto);
         }
-       return  1;
+        return 1;
     }
 
     //娓╂箍搴﹁瘯楠�+鍔熺巼璇曢獙鐨勪繚瀛樻楠屽唴瀹�
@@ -1061,16 +1061,9 @@
                             .set(InsOrderState::getVerifyTell, tell)
                             .set(InsOrderState::getVerifyUser, userId));
                     //濡傛灉璁㈠崟绫诲瀷鏄師鐞嗘牱鏈�,鍒欒璁㈠崟鐩存帴闂幆
-                    if (insOrder.getFormType().equals("鍘熺悊鏍锋満")) {
-                        //鍑哄簱
-                        try {
-                            List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, insSample.getInsOrderId()));
-                            for (InsSample sample : insSamples) {
-                                outInsOrderState(laboratory, sample.getSampleCode(), insOrder.getEntrustCode());
-                            }
-                        } catch (Exception e) {
-
-                        }
+                    List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, insSample.getInsOrderId()));
+                    for (InsSample sample : insSamples) {
+                        outInsOrderState(laboratory, sample.getSampleCode(), insOrder.getEntrustCode());
                     }
                     insOrder.setState(4);
                     insOrderMapper.updateById(insOrder);
@@ -1080,7 +1073,98 @@
         return 1;
     }
 
-    private void getTemplateThing(Set<Integer> set, Map<Integer, String> map2, List<InsProduct> insProducts) {
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int verifyPlan2(Integer sampleId, String laboratory, Integer type, String tell) throws IOException {
+        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
+        InsSample insSample = insSampleMapper.selectById(sampleId);
+        InsOrder insOrder = insOrderMapper.selectById(insSample.getInsOrderId());
+        /*type=0  鍐嶆璇曢獙; type=1 缁х画璇曢獙 ; type=2 缁撴潫璇曢獙*/
+        // 鏌ヨ鏍规嵁 id 鍊掑簭鎺掑垪鐨勭涓�鏉¤褰�
+        InsOrderState record = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery()
+                .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId())
+                .eq(InsOrderState::getInsSampleId, sampleId)
+                .eq(InsOrderState::getLaboratory, laboratory)
+                .orderByDesc(InsOrderState::getId)
+                .last("LIMIT 1")); // 纭繚鍙彇涓�鏉¤褰�
+        if (record != null) {
+            //鏇存柊璁板綍
+            insOrderUserMapper.update(null, Wrappers.<InsOrderUser>lambdaUpdate()
+                    .eq(InsOrderUser::getInsOrderStateId, record.getId())
+                    .eq(InsOrderUser::getNum, record.getNum())
+                    .set(InsOrderUser::getTell, tell));
+            switch (type) {
+                case 0:
+                    //鍐嶆璇曢獙:璇ュ崟瀛愰��鍥炲埌妫�楠岀姸鎬�(鎺掑簭鏀规垚褰撳墠鐨勬渶鍚�),娆℃暟閫掑(淇濈暀浠ュ墠鐨勬暟鎹�)锛�
+                    insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate()
+                            .eq(InsOrderState::getId, record.getId())
+                            .set(InsOrderState::getInsTime, LocalDateTime.now())
+                            .set(InsOrderState::getInsState, 4)
+                            .set(InsOrderState::getVerifyTell, tell)
+                            .set(InsOrderState::getVerifyUser, userId)
+                            .set(InsOrderState::getNum, record.getNum() + 1)//娆℃暟鍔�1
+                            .set(InsOrderState::getCreateTime, LocalDateTime.now()));
+                    insOrder.setState(3);
+                    break;
+                case 1:
+                    //缁х画璇曢獙:璇ユ牱鍝佽绔欑偣浠诲姟缁撴潫(鍙互鍐嶆鎵爜妫�楠�)锛�
+                    //鍏堝垽鏂笂涓�涓鏍告槸浠�涔堢粨璁�
+                    if (record.getInsState()==4){
+                        insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate()
+                                .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId())
+                                .eq(InsOrderState::getInsSampleId, sampleId)
+                                .eq(InsOrderState::getLaboratory, laboratory)
+                                .set(InsOrderState::getInsState, 6)
+                                .set(InsOrderState::getVerifyTell, tell)
+                                .set(InsOrderState::getNum, record.getNum() - 1)//娆℃暟-1
+                                .set(InsOrderState::getVerifyUser, userId));
+                    }else {
+                        insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate()
+                                .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId())
+                                .eq(InsOrderState::getInsSampleId, sampleId)
+                                .eq(InsOrderState::getLaboratory, laboratory)
+                                .set(InsOrderState::getInsState, 6)
+                                .set(InsOrderState::getVerifyTell, tell)
+                                .set(InsOrderState::getVerifyUser, userId));
+                    }
+                    insOrder.setState(3);
+                    break;
+                case 2:
+                    //缁撴潫璇曢獙:姝ゅ鎵樺崟鍋滄璇曢獙(鏃犳硶鍐嶆妫�楠�)銆�
+                    //鍏堝垽鏂笂涓�涓鏍告槸浠�涔堢粨璁�
+                    if (record.getInsState()==4){
+                        insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate()
+                                .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId())
+                                .eq(InsOrderState::getInsSampleId, sampleId)
+                                .eq(InsOrderState::getLaboratory, laboratory)
+                                .set(InsOrderState::getInsState, 5)
+                                .set(InsOrderState::getNum, record.getNum() - 1)//娆℃暟-1
+                                .set(InsOrderState::getVerifyTell, tell)
+                                .set(InsOrderState::getVerifyUser, userId));
+                    }else {
+                        insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate()
+                                .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId())
+                                .eq(InsOrderState::getInsSampleId, sampleId)
+                                .eq(InsOrderState::getLaboratory, laboratory)
+                                .set(InsOrderState::getInsState, 5)
+                                .set(InsOrderState::getVerifyTell, tell)
+                                .set(InsOrderState::getVerifyUser, userId));
+                    }
+                    //鍑哄簱
+                    List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, insSample.getInsOrderId()));
+                    for (InsSample sample : insSamples) {
+                        outInsOrderState(laboratory, sample.getSampleCode(), insOrder.getEntrustCode());
+                    }
+                    insOrder.setState(4);
+                    break;
+            }
+            insOrderMapper.updateById(insOrder);
+        }
+        return 1;
+    }
+
+    private void getTemplateThing
+            (Set<Integer> set, Map<Integer, String> map2, List<InsProduct> insProducts) {
         for (InsProduct product : insProducts) {
             if (product.getTemplateId() == null) {
                 product.setTemplate(new ArrayList<>());
@@ -1194,7 +1278,7 @@
         if (submitPlanDto.getLaboratory().equals("鐢佃矾璇曢獙")) {
             if (!insOrder.getSampleType().equals("鏃犳簮鍣ㄤ欢")) {
                 wordUtils.generateWord(submitPlanDto.getTerm(), orderState);
-            }else {
+            } else {
                 wordUtils.generateWord2(submitPlanDto.getTerm(), orderState);
             }
             //todo 鐢佃矾绔欑偣鎶ュ憡 姝e紡搴撻儴缃叉斁寮�
@@ -1283,8 +1367,8 @@
         InsSample insSample = insSampleMapper.selectById(orderState.getInsSampleId());
         /*鍒犻櫎璁板綍妫�楠屼换鍔℃瘡娆$殑澶囨敞淇℃伅*/
         insOrderUserMapper.delete(Wrappers.<InsOrderUser>lambdaQuery()
-        .eq(InsOrderUser::getInsOrderStateId,orderState.getId())
-        .eq(InsOrderUser::getNum,orderState.getNum()));
+                .eq(InsOrderUser::getInsOrderStateId, orderState.getId())
+                .eq(InsOrderUser::getNum, orderState.getNum()));
         //鎾ら攢鎻愪氦
         insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate()
                 .eq(InsOrderState::getInsOrderId, orderState.getInsOrderId())
@@ -1305,15 +1389,15 @@
         informationNotificationService.addInformationNotification(info);
         //鍒犻櫎澶嶆牳浜�--妫�楠屽崟鐩稿叧璐熻矗浜�
         insSampleUserMapper.delete(Wrappers.<InsSampleUser>lambdaQuery()
-        .eq(InsSampleUser::getState,1)
-        .eq(InsSampleUser::getSonLaboratory,orderState.getLaboratory())
-        .eq(InsSampleUser::getUserId,orderState.getVerifyUser())
-        .eq(InsSampleUser::getInsSampleId,orderState.getInsSampleId()));
+                .eq(InsSampleUser::getState, 1)
+                .eq(InsSampleUser::getSonLaboratory, orderState.getLaboratory())
+                .eq(InsSampleUser::getUserId, orderState.getVerifyUser())
+                .eq(InsSampleUser::getInsSampleId, orderState.getInsSampleId()));
         //鍒犻櫎鐢熸垚鐨勬姤鍛�
         if (orderState.getLaboratory().equals("鐢佃矾璇曢獙")) {
             List<InsOrderFile> insOrderFiles = insOrderFileMapper.selectList(Wrappers.<InsOrderFile>lambdaQuery()
                     .eq(InsOrderFile::getType, 2)
-                    .like(InsOrderFile::getFileName,"鐢佃矾鍙傛暟.docx")
+                    .like(InsOrderFile::getFileName, "鐢佃矾鍙傛暟.docx")
                     .eq(InsOrderFile::getInsOrderId, insOrder.getId())
                     .eq(InsOrderFile::getInsSampleId, orderState.getInsSampleId())
                     .eq(InsOrderFile::getSonLaboratory, orderState.getLaboratory()));
@@ -1328,9 +1412,9 @@
         List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery().eq(InsProduct::getInsSampleId, insSample.getId()));
         List<Integer> productIds = insProducts.stream().map(InsProduct::getId).distinct().collect(Collectors.toList());
         auxiliaryOutputWorkingHoursMapper.delete(Wrappers.<AuxiliaryOutputWorkingHours>lambdaQuery()
-                .eq(AuxiliaryOutputWorkingHours::getSample,insSample.getSampleCode())
-                .in(AuxiliaryOutputWorkingHours::getInsProductId,productIds)
-                .eq(AuxiliaryOutputWorkingHours::getNum,orderState.getNum()));
+                .eq(AuxiliaryOutputWorkingHours::getSample, insSample.getSampleCode())
+                .in(AuxiliaryOutputWorkingHours::getInsProductId, productIds)
+                .eq(AuxiliaryOutputWorkingHours::getNum, orderState.getNum()));
 
         //  todo 浼佷笟寰俊娑堟伅鎺ㄩ�丂zss
         HashMap<String, Object> map = new HashMap<>();
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsProductServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsProductServiceImpl.java
index d4123f0..f4c5291 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsProductServiceImpl.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsProductServiceImpl.java
@@ -11,9 +11,11 @@
 import com.yuanchu.mom.mapper.InsOrderMapper;
 import com.yuanchu.mom.mapper.InsProductMapper;
 import com.yuanchu.mom.mapper.InsSampleMapper;
+import com.yuanchu.mom.mapper.WarehouseHistoryMapper;
 import com.yuanchu.mom.pojo.InsOrder;
 import com.yuanchu.mom.pojo.InsProduct;
 import com.yuanchu.mom.pojo.InsSample;
+import com.yuanchu.mom.pojo.WarehouseHistory;
 import com.yuanchu.mom.service.InsProductService;
 import com.yuanchu.mom.utils.QueryWrappers;
 import com.yuanchu.mom.vo.InsOrderPlanVO;
@@ -33,6 +35,8 @@
     private InsOrderMapper insOrderMapper;
 
     private InsSampleMapper insSampleMapper;
+
+    private WarehouseHistoryMapper warehouseHistoryMapper;
 
     @Override
     public int selectOrderManDay(Integer orderId) {
@@ -83,6 +87,7 @@
     @Override
     public void checkUpdate(Integer orderId, Integer state) {
         InsOrder insOrder = insOrderMapper.selectById(orderId);
+        //閫氳繃
         if (state == 1) {
             List<String> list = new ArrayList<>();
             try {
@@ -99,29 +104,29 @@
             if (insProducts.stream().map(InsProduct::getId).collect(Collectors.toList()).equals(ids)) {
                 //濡傛灉璇ユ楠屽崟涓嬬殑鎵�鏈夐」鐩叏閮ㄩ兘鎾ら攢,閭d箞杩欎釜鍗曞瓙涔熼渶瑕佹挙閿�
                 insOrder.setState(3);
-            }
-            else {
+                //鍑哄叆搴撹褰曞叏閮ㄥ垹鎺�
+                warehouseHistoryMapper.delete(Wrappers.<WarehouseHistory>lambdaQuery().in(WarehouseHistory::getInsSampleId, collect));
+                //鍏ㄩ儴鎾ら攢,鏍峰搧鍜岄」鐩笉鑳藉垹鎺�,涓嶇劧妫�楠屼笅鍗曠殑鎾ら攢娌℃湁鏁版嵁
+            } else {
                 List<InsProduct> products = insProductMapper.selectBatchIds(ids);
-                //棣栧厛鏍规嵁閫夋嫨鐨勯」鐩甶d杩涜鎾ら攢椤圭洰
-                updateBatchById(products.stream().map(insProduct -> {
-                    insProduct.setState(0);
-                    return insProduct;
-                }).collect(Collectors.toList()));
-                //濡傛灉璇ユ楠屽崟鏌愪釜鏍峰搧涓嬬殑椤圭洰鍏ㄩ儴閮芥挙閿�浜�,閭d箞杩欎釜鏍峰搧涔熼渶瑕佸垹鎺�
+                //濡傛灉璇ユ楠屽崟鏌愪釜鏍峰搧涓嬬殑椤圭洰鍏ㄩ儴閮芥挙閿�浜�,閭d箞杩欎釜鏍峰搧鐨勫嚭鍏ュ簱璁板綍涔熼渶瑕佸垹鎺�
                 List<Integer> sampleIds = products.stream().map(InsProduct::getInsSampleId).distinct().collect(Collectors.toList());
+                //椤圭洰鍒犳帀
+                insProductMapper.deleteBatchIds(ids);
                 for (Integer sampleId : sampleIds) {
                     Long count = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery()
                             .eq(InsProduct::getInsSampleId, sampleId)
                             .eq(InsProduct::getState, 1));
-                    if(count<=0){
+                    if (count <= 0) {
+                        //鍑哄叆搴撹褰曞叏閮ㄥ垹鎺�
+                        warehouseHistoryMapper.delete(Wrappers.<WarehouseHistory>lambdaQuery().eq(WarehouseHistory::getInsSampleId, sampleId));
+                        //瀵瑰簲鐨勬牱鍝佸垹鎺�
                         insSampleMapper.deleteById(sampleId);
                     }
                 }
             }
-            //insProductMapper.updateInspected(id);
         }
-        //涓嶉�氳繃
-        insOrder.setIsRevocation(0);
+        insOrder.setIsRevocation(state);
         insOrderMapper.updateById(insOrder);
 
     }
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/WarehouseServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/WarehouseServiceImpl.java
index 8d2ab9d..4c41723 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/WarehouseServiceImpl.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/WarehouseServiceImpl.java
@@ -151,9 +151,11 @@
         if(tree.length < 4){
             throw new ErrorException("搴撲綅閫夋嫨閿欒");
         }
-        List<InsOrder> insOrders = insOrderMapper.selectList(Wrappers.<InsOrder>lambdaQuery().eq(InsOrder::getEntrustCode, entrustCode));
+        List<InsOrder> insOrders = insOrderMapper.selectList(Wrappers.<InsOrder>lambdaQuery()
+                .ne(InsOrder::getState,3)//鎺掗櫎鎾ら攢鐨勮鍗�
+                .eq(InsOrder::getEntrustCode, entrustCode));
         if(insOrders.size()!=1){
-            throw new ErrorException("璁㈠崟缂栧彿杈撳叆鏈夎");
+            throw new ErrorException("璁㈠崟缂栧彿杈撳叆鏈夎,鎴栬�呰璁㈠崟缂栧彿宸茬粡鎾ら攢");
         }
         List<InsSample> samples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
                 .eq(InsSample::getSampleCode, sampleCode)
@@ -180,9 +182,11 @@
 
     @Override
     public int outWarehouse(String sampleCode, boolean a,String entrustCode) {
-        List<InsOrder> insOrders = insOrderMapper.selectList(Wrappers.<InsOrder>lambdaQuery().eq(InsOrder::getEntrustCode, entrustCode));
+        List<InsOrder> insOrders = insOrderMapper.selectList(Wrappers.<InsOrder>lambdaQuery()
+                .ne(InsOrder::getState,3)//鎺掗櫎鎾ら攢鐨勮鍗�
+                .eq(InsOrder::getEntrustCode, entrustCode));
         if(insOrders.size()!=1){
-            throw new ErrorException("璁㈠崟缂栧彿杈撳叆鏈夎");
+            throw new ErrorException("璁㈠崟缂栧彿杈撳叆鏈夎,鎴栬�呰璁㈠崟缂栧彿宸茬粡鎾ら攢");
         }
         List<InsSample> samples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
                 .eq(InsSample::getSampleCode, sampleCode)
diff --git a/inspect-server/src/main/resources/mapper/WarehouseMapper.xml b/inspect-server/src/main/resources/mapper/WarehouseMapper.xml
index 0be1e14..0a64ac5 100644
--- a/inspect-server/src/main/resources/mapper/WarehouseMapper.xml
+++ b/inspect-server/src/main/resources/mapper/WarehouseMapper.xml
@@ -3,14 +3,13 @@
         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.yuanchu.mom.mapper.WarehouseMapper">
-
     <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.Warehouse">
-            <id property="id" column="id" jdbcType="INTEGER"/>
-            <result property="name" column="name" jdbcType="VARCHAR"/>
-            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
-            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
-            <result property="createUser" column="create_user" jdbcType="INTEGER"/>
-            <result property="updateUser" column="update_user" jdbcType="INTEGER"/>
+        <id property="id" column="id" jdbcType="INTEGER"/>
+        <result property="name" column="name" jdbcType="VARCHAR"/>
+        <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+        <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+        <result property="createUser" column="create_user" jdbcType="INTEGER"/>
+        <result property="updateUser" column="update_user" jdbcType="INTEGER"/>
     </resultMap>
 
     <resultMap id="Warehouse" type="com.yuanchu.mom.dto.WarehouseDto">
@@ -24,10 +23,32 @@
         <result property="name" column="sName" jdbcType="VARCHAR"/>
         <result property="row" column="row" jdbcType="INTEGER"/>
         <result property="col" column="col" jdbcType="INTEGER"/>
+        <collection property="warehouseCellList" resultMap="cell"/>
+    </resultMap>
+
+    <resultMap id="cell" type="com.yuanchu.mom.pojo.WarehouseCell">
+        <id property="id" column="cId" jdbcType="INTEGER"/>
+        <result property="row" column="crow" jdbcType="INTEGER"/>
+        <result property="col" column="ccol" jdbcType="INTEGER"/>
     </resultMap>
 
     <select id="selectWarehouseList" resultMap="Warehouse">
-        select w.id,w.name,ws.id sId,ws.name sName,ws.row,ws.col,ws.warehouse_id from warehouse w
-        left join warehouse_shelf ws on w.id = ws.warehouse_id
+        select w.id,
+               w.name,
+               ws.id   sId,
+               ws.name sName,
+               ws.row,
+               ws.col,
+               wc.id   cId,
+               wc.row  crow,
+               wc.col  ccol
+        from warehouse w
+                 left join warehouse_shelf ws on w.id = ws.warehouse_id
+                 left join warehouse_cell wc on shelf_id = ws.id
+                 left join
+                 (select cell_id, count(*) num from warehouse_history group by cell_id) a on cell_id = wc.id
+        where num is null
+           or num % 2 = 0
+        order by id, sId, crow, ccol
     </select>
 </mapper>

--
Gitblit v1.9.3