From 23eb9c9a21afc8ed065706f0e6494ee998a217b5 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期三, 04 三月 2026 16:35:27 +0800
Subject: [PATCH] fix:1.班次页面:月度统计时间调整为上月26到本月25;班次支持右键添加批注 2.外购下单:KJNS域订单免检自动更新批次属性;外购下单-全部页新增【更新IFS批次属性】按钮,支持更新已提交订单的批次属性 3.资源要求-设备:设备核查计划:核查负责人回显问题修复;设备使用授权:检验项目导出数据错误问题修复

---
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/IfsSplitOrderRecordServiceImpl.java      |    3 
 cnas-device/src/main/java/com/ruoyi/device/service/DeviceImpowerService.java                         |    2 
 cnas-device/src/main/resources/static/word/device-impower.docx                                       |    0 
 performance-server/src/main/java/com/ruoyi/performance/pojo/PerformanceShift.java                    |    4 
 inspect-server/src/main/resources/mapper/IfsPartPropsRecordMapper.xml                                |   21 +++
 inspect-server/src/main/java/com/ruoyi/inspect/service/IfsPartPropsRecordService.java                |    3 
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java         |    9 -
 inspect-server/src/main/java/com/ruoyi/inspect/mapper/IfsSplitOrderRecordMapper.java                 |    2 
 performance-server/src/main/java/com/ruoyi/performance/service/PerformanceShiftService.java          |    2 
 performance-server/src/main/java/com/ruoyi/performance/service/impl/PerformanceShiftServiceImpl.java |   61 +++++----
 performance-server/src/main/java/com/ruoyi/performance/mapper/PerformanceShiftMapper.java            |    4 
 cnas-device/src/main/resources/mapper/DeviceExaminePlanDetailsMapper.xml                             |   20 +++
 cnas-device/src/main/java/com/ruoyi/device/controller/DeviceImpowerController.java                   |    4 
 cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceImpowerServiceImpl.java                |    3 
 inspect-server/src/main/java/com/ruoyi/inspect/aspect/PushIfsPartPropsRecordAspect.java              |   90 +++++++++++++++
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/IfsPartPropsRecordServiceImpl.java       |   57 +++++----
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java                |    2 
 inspect-server/src/main/java/com/ruoyi/inspect/mapper/IfsPartPropsRecordMapper.java                  |    5 
 performance-server/src/main/resources/mapper/PerformanceShiftMapper.xml                              |    7 
 performance-server/src/main/java/com/ruoyi/performance/controller/PerformanceShiftController.java    |    6 +
 ruoyi-admin-ztns/src/main/resources/application-druid.yml                                            |    6 
 inspect-server/src/main/java/com/ruoyi/inspect/service/IfsSplitOrderRecordService.java               |    3 
 22 files changed, 235 insertions(+), 79 deletions(-)

diff --git a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceImpowerController.java b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceImpowerController.java
index 092f7c5..23c6155 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceImpowerController.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/controller/DeviceImpowerController.java
@@ -101,8 +101,8 @@
      */
     @ApiOperation("瀵煎嚭浣跨敤鎺堟潈")
     @GetMapping("/exportDeviceImpower")
-    public Result exportDeviceImpower(@RequestParam("impowerId") Integer impowerId, HttpServletResponse response) {
-        return deviceImpowerService.exportDeviceImpowerDto(impowerId, response);
+    public void exportDeviceImpower(@RequestParam("impowerId") Integer impowerId, HttpServletResponse response) {
+        deviceImpowerService.exportDeviceImpowerDto(impowerId, response);
     }
 
 }
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/DeviceImpowerService.java b/cnas-device/src/main/java/com/ruoyi/device/service/DeviceImpowerService.java
index d18475a..1ea5f4a 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/service/DeviceImpowerService.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/DeviceImpowerService.java
@@ -67,5 +67,5 @@
     /**
      * 浣跨敤鎺堟潈瀵煎嚭
      */
-    Result exportDeviceImpowerDto(Integer impowerId, HttpServletResponse response);
+    void exportDeviceImpowerDto(Integer impowerId, HttpServletResponse response);
 }
diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceImpowerServiceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceImpowerServiceImpl.java
index c190fa1..e2ef5e3 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceImpowerServiceImpl.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceImpowerServiceImpl.java
@@ -249,7 +249,7 @@
      * @param impowerId 璁惧浣跨敤id
      */
     @Override
-    public Result exportDeviceImpowerDto(Integer impowerId, HttpServletResponse response) {
+    public void exportDeviceImpowerDto(Integer impowerId, HttpServletResponse response) {
         // 鏌ヨ璁惧浣跨敤鎺堟潈璁″垝
         DeviceImpower deviceImpower = baseMapper.selectById(impowerId);
         DeviceImpowerDto deviceImpowerDto = new DeviceImpowerDto();
@@ -295,6 +295,5 @@
             e.printStackTrace();
             throw new RuntimeException("瀵煎嚭澶辫触");
         }
-        return Result.success();
     }
 }
diff --git a/cnas-device/src/main/resources/mapper/DeviceExaminePlanDetailsMapper.xml b/cnas-device/src/main/resources/mapper/DeviceExaminePlanDetailsMapper.xml
index 2de8c93..bb72997 100644
--- a/cnas-device/src/main/resources/mapper/DeviceExaminePlanDetailsMapper.xml
+++ b/cnas-device/src/main/resources/mapper/DeviceExaminePlanDetailsMapper.xml
@@ -6,7 +6,24 @@
     <!--璁惧鏍告煡璁″垝璇︽儏鍒楄〃-->
     <select id="pageDeviceExaminePlanDetail" resultType="com.ruoyi.device.dto.DeviceExaminePlanDetailsDto">
         select * from (
-        select d.*,
+        select
+        d.plan_details_id,
+        d.plan_id,
+        d.device_id,
+        d.device_number,
+        d.device_name,
+        d.check_time,
+        d.check_index,
+        d.check_method,
+        d.how_results,
+        d.check_charger_user_id,
+        CASE WHEN d.check_charger_user='' or d.check_charger_user is null THEN u.name
+        ELSE d.check_charger_user END AS check_charger_user,
+        d.remark,
+        d.create_user,
+        d.create_time,
+        d.update_user,
+        d.update_time,
         CASE
         WHEN dc.review_status = 0 THEN 3
         WHEN dc.review_status = 1 THEN 2
@@ -18,6 +35,7 @@
         WHEN dd.record_contrast_id IS NOT NULL THEN 1
         ELSE 0 END record_contrast_status
         from device_examine_plan_details d
+        left join user u on u.id = d.check_charger_user_id
         left join device_examine_record dc on d.plan_details_id = dc.plan_details_id
         left join device_examine_record_contrast dd on dd.plan_details_id = dc.plan_details_id
         order by check_time asc
diff --git a/cnas-device/src/main/resources/static/word/device-impower.docx b/cnas-device/src/main/resources/static/word/device-impower.docx
index 84f72bd..3389110 100644
--- a/cnas-device/src/main/resources/static/word/device-impower.docx
+++ b/cnas-device/src/main/resources/static/word/device-impower.docx
Binary files differ
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/aspect/PushIfsPartPropsRecordAspect.java b/inspect-server/src/main/java/com/ruoyi/inspect/aspect/PushIfsPartPropsRecordAspect.java
new file mode 100644
index 0000000..3573090
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/aspect/PushIfsPartPropsRecordAspect.java
@@ -0,0 +1,90 @@
+package com.ruoyi.inspect.aspect;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.ruoyi.basic.dto.IfsInventoryQuantityDto;
+import com.ruoyi.basic.mapper.IfsInventoryQuantityMapper;
+import com.ruoyi.basic.pojo.IfsInventoryQuantity;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.common.enums.ContractType;
+import com.ruoyi.common.enums.OrderType;
+import com.ruoyi.common.utils.api.IfsApiUtils;
+import com.ruoyi.inspect.dto.IfsPartPropsRecordDTO;
+import com.ruoyi.inspect.service.IfsPartPropsRecordService;
+import com.ruoyi.inspect.service.IfsSplitOrderRecordService;
+import lombok.extern.slf4j.Slf4j;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Isolation;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+/**
+ * 澶栬喘涓嬪崟锛欿JNS鍩熻鍗曞厤妫�鍚庯紝鏌ヨZTNS鍩熺浉鍚岃鍗曠殑鎵规灞炴�у苟鎺ㄩ�佸埌IFS
+ */
+@Aspect
+@Slf4j
+@Component
+public class PushIfsPartPropsRecordAspect {
+
+    @Autowired
+    private IfsInventoryQuantityMapper ifsInventoryQuantityMapper;
+
+    @Autowired
+    private IfsApiUtils ifsApiUtils;
+
+    @Autowired
+    private IfsPartPropsRecordService ifsPartPropsRecordService;
+
+    @Before(value = "execution(* com.ruoyi.inspect.service.impl.RawMaterialOrderServiceImpl.rawOrderRelease(..))")
+    @Transactional(rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED)
+    public void doAfterReturning(JoinPoint joinPoint) {
+        Object[] args = joinPoint.getArgs();
+        if(Objects.nonNull(args) && args.length>0) {
+            Long ifsInventoryId = (Long)args[0];
+            log.info("id:{}",ifsInventoryId);
+            IfsInventoryQuantity ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(ifsInventoryId);
+            //濡傛灉璁㈠崟鏄疜JNS鍩熺殑澶栬喘璁㈠崟锛屽厤妫�鏃跺悓姝TNS鍩熺殑IFS鎵规灞炴��
+            if(StringUtils.equals(ContractType.KJNS.getValue(),ifsInventoryQuantity.getContract()) && StringUtils.equals(OrderType.WG.getValue(),ifsInventoryQuantity.getOrderType())){
+                //鏌ヨZTNS鍩熺殑鐩稿悓鎵规璁㈠崟娑堟伅
+                IfsInventoryQuantityDto ifsInventoryQuantityDto = new IfsInventoryQuantityDto();
+                BeanUtil.copyProperties(ifsInventoryQuantity,ifsInventoryQuantityDto);
+                ifsInventoryQuantityDto.setContract(ContractType.ZTNS.getValue());
+                IfsPartPropsRecordDTO oneByContract = ifsPartPropsRecordService.getOneByContract(ifsInventoryQuantityDto);
+                if(Objects.nonNull(oneByContract)){
+                    //鏇存柊IFS鎵规灞炴��
+                    Map<String, Object> inAttrMap = new HashMap<>();
+                    String actionType = "New";
+                    inAttrMap.put("RECORD_ID", UUID.randomUUID().toString());
+                    inAttrMap.put("SYSCODE", "LIMS");
+                    inAttrMap.put("SYSMODEL", "搴撳瓨鐗╂枡鎵规灞炴�т慨鏀�");
+                    HashMap<String, Object> batchInfoMap = new HashMap<>();
+                    batchInfoMap.put("CONTRACT",ContractType.KJNS.getValue());//鍩�
+                    batchInfoMap.put("PART_NO",oneByContract.getPartNo());//闆朵欢鍙�
+                    batchInfoMap.put("LOT_BATCH_NO",oneByContract.getLotBatchNo());//鎵规鍙�
+                    batchInfoMap.put("ATTR1",oneByContract.getDrumNo());//杞藉叿缂栧彿
+                    batchInfoMap.put("ATTR2",oneByContract.getStartMeterMark().toString());//璧峰绫虫爣
+                    batchInfoMap.put("ATTR3",oneByContract.getEndMeterMark().toString());//鎴绫虫爣
+                    batchInfoMap.put("ATTR4", oneByContract.getOuterColor());//澶栨姢棰滆壊
+                    batchInfoMap.put("ATTR5",oneByContract.getInsulationColor());//缁濈紭棰滆壊
+                    batchInfoMap.put("ATTR8",oneByContract.getLetteringInfo());//鍗板瓧淇℃伅
+                    batchInfoMap.put("ATTR23","杞﹂棿璁㈠崟");//鍏ュ簱鏉ユ簮
+                    batchInfoMap.put("ATTR24","0");//鍒嗗壊棰勭暀鏁伴噺
+                    batchInfoMap.put("ACTION_TYPE",actionType);//鎿嶄綔绫诲瀷
+                    inAttrMap.put("BATCH_INFO", Collections.singletonList(batchInfoMap));
+                    Result result = ifsApiUtils.importPartLotAttr(ContractType.KJNS.getValue(), JSONUtil.toJsonStr(inAttrMap));
+                    if(result.getCode()!=200){
+                        throw new RuntimeException("搴撳瓨鐗╂枡鎵规灞炴�ф洿鏂板け璐ワ細"+result.getMessage());
+                    }
+                }
+                ifsPartPropsRecordService.save(oneByContract);
+            }
+        }
+    }
+
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/IfsPartPropsRecordMapper.java b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/IfsPartPropsRecordMapper.java
index 9548beb..43f8291 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/IfsPartPropsRecordMapper.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/IfsPartPropsRecordMapper.java
@@ -1,5 +1,7 @@
 package com.ruoyi.inspect.mapper;
 
+import com.ruoyi.basic.dto.IfsInventoryQuantityDto;
+import com.ruoyi.inspect.dto.IfsPartPropsRecordDTO;
 import com.ruoyi.inspect.pojo.IfsPartPropsRecord;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
@@ -15,6 +17,9 @@
 public interface IfsPartPropsRecordMapper extends BaseMapper<IfsPartPropsRecord> {
 
     Long selectCountByPartNoAndLotBatchNo(@Param("partNo") String partNo, @Param("lotBatchNo") String lotBatchNo);
+
+    IfsPartPropsRecordDTO selectOneByContract(@Param("dto") IfsInventoryQuantityDto ifsInventoryQuantityDto);
+
 }
 
 
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/IfsSplitOrderRecordMapper.java b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/IfsSplitOrderRecordMapper.java
index 98e719b..578afa6 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/IfsSplitOrderRecordMapper.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/IfsSplitOrderRecordMapper.java
@@ -1,7 +1,7 @@
 package com.ruoyi.inspect.mapper;
 
-import com.ruoyi.inspect.pojo.IfsSplitOrderRecord;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.inspect.pojo.IfsSplitOrderRecord;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/IfsPartPropsRecordService.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/IfsPartPropsRecordService.java
index 8d70c77..50e14ab 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/IfsPartPropsRecordService.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/IfsPartPropsRecordService.java
@@ -1,5 +1,6 @@
 package com.ruoyi.inspect.service;
 
+import com.ruoyi.basic.dto.IfsInventoryQuantityDto;
 import com.ruoyi.inspect.dto.IfsPartPropsRecordDTO;
 import com.ruoyi.inspect.pojo.IfsPartPropsRecord;
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -14,4 +15,6 @@
     boolean saveOrUpdateProps(IfsPartPropsRecordDTO ifsPartPropsRecord);
 
     IfsPartPropsRecord getOneByIfsId(Long ifsId);
+
+    IfsPartPropsRecordDTO getOneByContract(IfsInventoryQuantityDto ifsInventoryQuantityDto);
 }
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/IfsSplitOrderRecordService.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/IfsSplitOrderRecordService.java
index 89da504..3d1b84d 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/IfsSplitOrderRecordService.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/IfsSplitOrderRecordService.java
@@ -1,7 +1,7 @@
 package com.ruoyi.inspect.service;
 
-import com.ruoyi.inspect.pojo.IfsSplitOrderRecord;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.inspect.pojo.IfsSplitOrderRecord;
 
 /**
 * @author 27233
@@ -9,5 +9,4 @@
 * @createDate 2025-09-23 11:20:20
 */
 public interface IfsSplitOrderRecordService extends IService<IfsSplitOrderRecord> {
-
 }
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/IfsPartPropsRecordServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/IfsPartPropsRecordServiceImpl.java
index fe99925..97c3271 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/IfsPartPropsRecordServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/IfsPartPropsRecordServiceImpl.java
@@ -3,6 +3,7 @@
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.basic.dto.IfsInventoryQuantityDto;
 import com.ruoyi.basic.mapper.IfsInventoryQuantityMapper;
 import com.ruoyi.basic.pojo.IfsInventoryQuantity;
 import com.ruoyi.common.core.domain.Result;
@@ -48,36 +49,33 @@
         if(Objects.isNull(ifsPartPropsRecord)){
             throw new RuntimeException("鍙傛暟涓嶈兘涓虹┖");
         }
-        //鏌ヨ鏄惁宸叉湁鍚屾壒娆″悓闆朵欢鍙风殑鎵规灞炴�э紝娌℃湁鎵嶆洿鏂�
-        Long count = baseMapper.selectCountByPartNoAndLotBatchNo(ifsPartPropsRecord.getPartNo(),ifsPartPropsRecord.getLotBatchNo());
-        if(count==0){
-            //鍒ゆ柇鏄柊澧炶繕鏄洿鏂�
-            String actionType = Objects.isNull(ifsPartPropsRecord.getId())?"New":"Modify";
-            Map<String, Object> inAttrMap = new HashMap<>();
-            inAttrMap.put("RECORD_ID", UUID.randomUUID().toString());
-            inAttrMap.put("SYSCODE", "LIMS");
-            inAttrMap.put("SYSMODEL", "搴撳瓨鐗╂枡鎵规灞炴�т慨鏀�");
-            HashMap<String, Object> batchInfoMap = new HashMap<>();
-            batchInfoMap.put("CONTRACT",ifsPartPropsRecord.getContract());//鍩�
-            batchInfoMap.put("PART_NO",ifsPartPropsRecord.getPartNo());//闆朵欢鍙�
-            batchInfoMap.put("LOT_BATCH_NO",ifsPartPropsRecord.getLotBatchNo());//鎵规鍙�
-            batchInfoMap.put("ATTR1",ifsPartPropsRecord.getDrumNo());//杞藉叿缂栧彿
-            batchInfoMap.put("ATTR2",ifsPartPropsRecord.getStartMeterMark().toString());//璧峰绫虫爣
-            batchInfoMap.put("ATTR3",ifsPartPropsRecord.getEndMeterMark().toString());//鎴绫虫爣
-            batchInfoMap.put("ATTR4", ifsPartPropsRecord.getOuterColor());//澶栨姢棰滆壊
-            batchInfoMap.put("ATTR5",ifsPartPropsRecord.getInsulationColor());//缁濈紭棰滆壊
-            batchInfoMap.put("ATTR8",ifsPartPropsRecord.getLetteringInfo());//鍗板瓧淇℃伅
-            batchInfoMap.put("ATTR23","杞﹂棿璁㈠崟");//鍏ュ簱鏉ユ簮
-            batchInfoMap.put("ATTR24","0");//鍒嗗壊棰勭暀鏁伴噺
-            batchInfoMap.put("ACTION_TYPE",actionType);//鎿嶄綔绫诲瀷
-            inAttrMap.put("BATCH_INFO", Collections.singletonList(batchInfoMap));
-            Result result = ifsApiUtils.importPartLotAttr(ifsPartPropsRecord.getContract(),JSONUtil.toJsonStr(inAttrMap));
-            if(result.getCode()!=200){
-                throw new RuntimeException("搴撳瓨鐗╂枡鎵规灞炴�ф洿鏂板け璐ワ細"+result.getMessage());
-            }
+        //鍒ゆ柇鏄柊澧炶繕鏄洿鏂�
+        String actionType = Objects.isNull(ifsPartPropsRecord.getId())?"New":"Modify";
+        Map<String, Object> inAttrMap = new HashMap<>();
+        inAttrMap.put("RECORD_ID", UUID.randomUUID().toString());
+        inAttrMap.put("SYSCODE", "LIMS");
+        inAttrMap.put("SYSMODEL", "搴撳瓨鐗╂枡鎵规灞炴�т慨鏀�");
+        HashMap<String, Object> batchInfoMap = new HashMap<>();
+        batchInfoMap.put("CONTRACT",ifsPartPropsRecord.getContract());//鍩�
+        batchInfoMap.put("PART_NO",ifsPartPropsRecord.getPartNo());//闆朵欢鍙�
+        batchInfoMap.put("LOT_BATCH_NO",ifsPartPropsRecord.getLotBatchNo());//鎵规鍙�
+        batchInfoMap.put("ATTR1",ifsPartPropsRecord.getDrumNo());//杞藉叿缂栧彿
+        batchInfoMap.put("ATTR2",ifsPartPropsRecord.getStartMeterMark().toString());//璧峰绫虫爣
+        batchInfoMap.put("ATTR3",ifsPartPropsRecord.getEndMeterMark().toString());//鎴绫虫爣
+        batchInfoMap.put("ATTR4", ifsPartPropsRecord.getOuterColor());//澶栨姢棰滆壊
+        batchInfoMap.put("ATTR5",ifsPartPropsRecord.getInsulationColor());//缁濈紭棰滆壊
+        batchInfoMap.put("ATTR8",ifsPartPropsRecord.getLetteringInfo());//鍗板瓧淇℃伅
+        batchInfoMap.put("ATTR23","杞﹂棿璁㈠崟");//鍏ュ簱鏉ユ簮
+        batchInfoMap.put("ATTR24","0");//鍒嗗壊棰勭暀鏁伴噺
+        batchInfoMap.put("ACTION_TYPE",actionType);//鎿嶄綔绫诲瀷
+        inAttrMap.put("BATCH_INFO", Collections.singletonList(batchInfoMap));
+        Result result = ifsApiUtils.importPartLotAttr(ifsPartPropsRecord.getContract(),JSONUtil.toJsonStr(inAttrMap));
+        if(result.getCode()!=200){
+            throw new RuntimeException("搴撳瓨鐗╂枡鎵规灞炴�ф洿鏂板け璐ワ細"+result.getMessage());
         }
         return this.saveOrUpdate(ifsPartPropsRecord);
     }
+
 
     @Override
     public IfsPartPropsRecord getOneByIfsId(Long ifsId) {
@@ -112,6 +110,11 @@
         }
         return this.getOne(Wrappers.<IfsPartPropsRecord>lambdaQuery().eq(IfsPartPropsRecord::getIfsInventoryId,ifsId).last("limit 1"));
     }
+
+    @Override
+    public IfsPartPropsRecordDTO getOneByContract(IfsInventoryQuantityDto ifsInventoryQuantityDto) {
+        return baseMapper.selectOneByContract(ifsInventoryQuantityDto);
+    }
 }
 
 
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/IfsSplitOrderRecordServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/IfsSplitOrderRecordServiceImpl.java
index 21fa339..b19c71e 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/IfsSplitOrderRecordServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/IfsSplitOrderRecordServiceImpl.java
@@ -1,9 +1,9 @@
 package com.ruoyi.inspect.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.inspect.mapper.IfsSplitOrderRecordMapper;
 import com.ruoyi.inspect.pojo.IfsSplitOrderRecord;
 import com.ruoyi.inspect.service.IfsSplitOrderRecordService;
-import com.ruoyi.inspect.mapper.IfsSplitOrderRecordMapper;
 import org.springframework.stereotype.Service;
 
 /**
@@ -14,7 +14,6 @@
 @Service
 public class IfsSplitOrderRecordServiceImpl extends ServiceImpl<IfsSplitOrderRecordMapper, IfsSplitOrderRecord>
     implements IfsSplitOrderRecordService{
-
 }
 
 
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java
index 620ed51..816444e 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java
@@ -875,8 +875,6 @@
             });
 
         }
-
-
     }
 
     /**
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java
index 7ae57fc..e253ca4 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java
@@ -7,6 +7,7 @@
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.io.IoUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONUtil;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.ExcelWriter;
 import com.alibaba.excel.support.ExcelTypeEnum;
@@ -27,6 +28,7 @@
 import com.ruoyi.common.constant.InsOrderTypeConstants;
 import com.ruoyi.common.core.domain.Result;
 import com.ruoyi.common.core.domain.entity.User;
+import com.ruoyi.common.enums.ContractType;
 import com.ruoyi.common.enums.OrderType;
 import com.ruoyi.common.numgen.NumberGenerator;
 import com.ruoyi.common.utils.LimsDateUtil;
@@ -35,10 +37,7 @@
 import com.ruoyi.common.utils.WxCpUtils;
 import com.ruoyi.common.utils.api.IfsApiUtils;
 import com.ruoyi.framework.exception.ErrorException;
-import com.ruoyi.inspect.dto.CopperInsOrderDto;
-import com.ruoyi.inspect.dto.OrderSplitDTO;
-import com.ruoyi.inspect.dto.RawMaterialStandardTreeDto;
-import com.ruoyi.inspect.dto.SampleProductDto;
+import com.ruoyi.inspect.dto.*;
 import com.ruoyi.inspect.excel.OrderSplitExcelData;
 import com.ruoyi.inspect.excel.OrderSplitExcelListener;
 import com.ruoyi.inspect.mapper.InsOrderMapper;
@@ -101,8 +100,6 @@
     private IfsApiUtils ifsApiUtils;
 
     private IfsSplitOrderRecordService ifsSplitOrderRecordService;
-
-    private InsUnqualifiedHandlerMapper insUnqualifiedHandlerMapper;
 
     private final NumberGenerator<IfsSplitOrderRecord> splitOrderRecordNumberGenerator;
 
diff --git a/inspect-server/src/main/resources/mapper/IfsPartPropsRecordMapper.xml b/inspect-server/src/main/resources/mapper/IfsPartPropsRecordMapper.xml
index 4cccb84..9c474c9 100644
--- a/inspect-server/src/main/resources/mapper/IfsPartPropsRecordMapper.xml
+++ b/inspect-server/src/main/resources/mapper/IfsPartPropsRecordMapper.xml
@@ -31,4 +31,25 @@
           and iiq.update_batch_no= #{lotBatchNo}
           and ippr.id  is not null
     </select>
+    <select id="selectOneByContract" resultType="com.ruoyi.inspect.dto.IfsPartPropsRecordDTO">
+        select iiq.part_no,
+               iiq.update_batch_no as lot_batch_no,
+               iiq.contract,
+               ippr.id,
+               ippr.ifs_inventory_id,
+               ippr.drum_no,
+               ippr.start_meter_mark,
+               ippr.end_meter_mark,
+               ippr.insulation_color,
+               ippr.outer_color,
+               ippr.lettering_info,
+               ippr.part_props_flag
+        from ifs_inventory_quantity iiq
+                 left join ifs_part_props_record ippr on iiq.id = ippr.ifs_inventory_id
+        where iiq.contract = #{dto.contract}
+          AND iiq.update_batch_no = #{dto.updateBatchNo}
+          AND iiq.part_no = #{dto.partNo}
+          AND iiq.order_type = #{dto.orderType}
+        LIMIT 1
+    </select>
 </mapper>
diff --git a/performance-server/src/main/java/com/ruoyi/performance/controller/PerformanceShiftController.java b/performance-server/src/main/java/com/ruoyi/performance/controller/PerformanceShiftController.java
index b49c9f8..d3f2cd4 100644
--- a/performance-server/src/main/java/com/ruoyi/performance/controller/PerformanceShiftController.java
+++ b/performance-server/src/main/java/com/ruoyi/performance/controller/PerformanceShiftController.java
@@ -55,6 +55,12 @@
     @Resource
     private UserService userService;
 
+    @ApiOperation(value = "缂栬緫鎵规敞鍐呭")
+    @PostMapping("editAnnotationText")
+    public Result<?> editAnnotationText(@RequestBody PerformanceShift performanceShift){
+        return Result.success(performanceShiftService.editAnnotationText(performanceShift));
+    }
+
     @ApiOperation(value = "鎺掔彮")
     @PostMapping("add")
     public Result<?> performanceShiftAdd(@RequestBody PerformanceShiftAddDto performanceShiftAddDto) {
diff --git a/performance-server/src/main/java/com/ruoyi/performance/mapper/PerformanceShiftMapper.java b/performance-server/src/main/java/com/ruoyi/performance/mapper/PerformanceShiftMapper.java
index b339b4f..29a4691 100644
--- a/performance-server/src/main/java/com/ruoyi/performance/mapper/PerformanceShiftMapper.java
+++ b/performance-server/src/main/java/com/ruoyi/performance/mapper/PerformanceShiftMapper.java
@@ -7,6 +7,7 @@
 import com.ruoyi.performance.pojo.PerformanceShift;
 import org.apache.ibatis.annotations.Param;
 
+import java.time.LocalDate;
 import java.util.List;
 import java.util.Map;
 
@@ -22,7 +23,8 @@
 
     IPage<PerformanceShiftMapDto> performanceShiftPage(
             Page<Object> page,
-            @Param("time") String time,
+            @Param("firstDayOfMonth") LocalDate firstDayOfMonth,
+            @Param("lastDayOfMonth") LocalDate lastDayOfMonth,
             @Param("userName") String userName,
             @Param("laboratory") String laboratory
     );
diff --git a/performance-server/src/main/java/com/ruoyi/performance/pojo/PerformanceShift.java b/performance-server/src/main/java/com/ruoyi/performance/pojo/PerformanceShift.java
index bad6986..a0c9075 100644
--- a/performance-server/src/main/java/com/ruoyi/performance/pojo/PerformanceShift.java
+++ b/performance-server/src/main/java/com/ruoyi/performance/pojo/PerformanceShift.java
@@ -51,4 +51,8 @@
     @ApiModelProperty("鏇存柊鏃堕棿")
     @TableField(fill = FieldFill.INSERT_UPDATE)
     private LocalDateTime updateTime;
+
+    @ApiModelProperty("鎵规敞鍐呭")
+    private String annotationText;
+
 }
diff --git a/performance-server/src/main/java/com/ruoyi/performance/service/PerformanceShiftService.java b/performance-server/src/main/java/com/ruoyi/performance/service/PerformanceShiftService.java
index dce8d3a..c792180 100644
--- a/performance-server/src/main/java/com/ruoyi/performance/service/PerformanceShiftService.java
+++ b/performance-server/src/main/java/com/ruoyi/performance/service/PerformanceShiftService.java
@@ -29,4 +29,6 @@
     Map<Object, Object> exportToYearExcel(String time, String userName, String laboratory) throws Exception;
 
     Map<Object, Object> exportToMonthExcel(String time, String userName, String laboratory);
+
+    boolean editAnnotationText(PerformanceShift performanceShift);
 }
diff --git a/performance-server/src/main/java/com/ruoyi/performance/service/impl/PerformanceShiftServiceImpl.java b/performance-server/src/main/java/com/ruoyi/performance/service/impl/PerformanceShiftServiceImpl.java
index 966317f..507af3f 100644
--- a/performance-server/src/main/java/com/ruoyi/performance/service/impl/PerformanceShiftServiceImpl.java
+++ b/performance-server/src/main/java/com/ruoyi/performance/service/impl/PerformanceShiftServiceImpl.java
@@ -147,7 +147,16 @@
                 laboratory = departLims;
             }
         }
-        IPage<PerformanceShiftMapDto> mapIPage = baseMapper.performanceShiftPage(page, time, userName, laboratory);
+        // 鑾峰彇header鏃堕棿
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        DateTimeFormatter formatters = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        // 灏嗗瓧绗︿覆鏃堕棿杞崲涓� LocalDateTime 绫诲瀷鏃堕棿
+        LocalDateTime localDateTime = LocalDateTime.parse(time, formatters);
+        //鐝鏃堕棿鑼冨洿涓轰笂涓湀鐨�26鍙峰埌鏈湀鐨�25鍙�
+        LocalDate firstDayOfMonth = localDateTime.toLocalDate().minusMonths(1L).withDayOfMonth(26);
+        LocalDate lastDayOfMonth = localDateTime.toLocalDate().withDayOfMonth(25);
+
+        IPage<PerformanceShiftMapDto> mapIPage = baseMapper.performanceShiftPage(page, firstDayOfMonth,lastDayOfMonth, userName, laboratory);
 
         List<SysDictData> shiftType = dictTypeService.selectDictDataByName("鐝绫诲瀷");
         List<Map<String, Object>> mapYearIPage = baseMapper.performanceShiftYearPage(time, userName, laboratory);
@@ -168,22 +177,23 @@
                         i.getMonthlyAttendance().put(enums.getDictLabel(), bigDecimal.add(new BigDecimal("1")));
                     }
                     // 鍗婏紝鍙﹀鍗婂ぉ绠楃粰鏃�
-                    if (shiftTimeAndShift[1].equals("5") && enums.getDictValue().equals("0")) {
-                        BigDecimal bigDecimal = new BigDecimal(i.getMonthlyAttendance().get(enums.getDictLabel()).toString());
-                        i.getMonthlyAttendance().put(enums.getDictLabel(), bigDecimal.add(new BigDecimal("0.5")));
-                    }
+//                    if (shiftTimeAndShift[1].equals("5") && enums.getDictValue().equals("0")) {
+//                        BigDecimal bigDecimal = new BigDecimal(i.getMonthlyAttendance().get(enums.getDictLabel()).toString());
+//                        i.getMonthlyAttendance().put(enums.getDictLabel(), bigDecimal.add(new BigDecimal("0.5")));
+//                    }
                 }
                 // 鏃╋紝涓紝澶滐紝宸�
-                if (shiftTimeAndShift[1].equals("1") || shiftTimeAndShift[1].equals("2") || shiftTimeAndShift[1].equals("0") || shiftTimeAndShift[1].equals("6")) {
+                if (shiftTimeAndShift[1].equals("2") || shiftTimeAndShift[1].equals("3") || shiftTimeAndShift[1].equals("4")) {
                     i.getMonthlyAttendance().put("totalAttendance", totalAttendance += 1);
                 }
                 // 鍗�
-                if (shiftTimeAndShift[1].equals("5")) {
-                    i.getMonthlyAttendance().put("totalAttendance", totalAttendance += 0.5);
-                }
-                hashMap.put("id", shiftTimeAndShift[2]);
+//                if (shiftTimeAndShift[1].equals("5")) {
+//                    i.getMonthlyAttendance().put("totalAttendance", totalAttendance += 0.5);
+//                }
+                hashMap.put("id", shiftTimeAndShift[3]);
                 hashMap.put("shift", shiftTimeAndShift[1]);
                 hashMap.put("time", shiftTimeAndShift[0]);
+                hashMap.put("annotationText", shiftTimeAndShift[2]);
                 map.add(hashMap);
             }
             double totalYearAttendance = 0;
@@ -199,31 +209,24 @@
                             hashMap.put(enums.getDictLabel(), num.add(new BigDecimal("1")));
                         }
                         // 鍗婏紝鍙﹀鍗婂ぉ绠楃粰鏃�
-                        if (record.get("shift").equals("5") && enums.getDictValue().equals("0")) {
-                            BigDecimal bigDecimal = new BigDecimal(hashMap.get(enums.getDictLabel()).toString());
-                            hashMap.put(enums.getDictLabel(), bigDecimal.add(new BigDecimal("0.5")));
-                        }
+//                        if (record.get("shift").equals("5") && enums.getDictValue().equals("0")) {
+//                            BigDecimal bigDecimal = new BigDecimal(hashMap.get(enums.getDictLabel()).toString());
+//                            hashMap.put(enums.getDictLabel(), bigDecimal.add(new BigDecimal("0.5")));
+//                        }
                     }
-                    if (record.get("shift").equals("1") || record.get("shift").equals("2") || record.get("shift").equals("0") || record.get("shift").equals("6")) {
+                    if (record.get("shift").equals("2") || record.get("shift").equals("3") || record.get("shift").equals("4")) {
                         hashMap.put("totalAttendance", totalYearAttendance += 1);
                     }
                     // 鍗�
-                    if (record.get("shift").equals("5")) {
-                        hashMap.put("totalAttendance", totalYearAttendance += 0.5);
-                    }
+//                    if (record.get("shift").equals("5")) {
+//                        hashMap.put("totalAttendance", totalYearAttendance += 0.5);
+//                    }
                 }
             }
             i.setSidebarAnnualAttendance(hashMap);
             i.setList(map);
             i.setShiftTime(null);
         });
-        // 鑾峰彇header鏃堕棿
-        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-        DateTimeFormatter formatters = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-        // 灏嗗瓧绗︿覆鏃堕棿杞崲涓� LocalDateTime 绫诲瀷鏃堕棿
-        LocalDateTime localDateTime = LocalDateTime.parse(time, formatters);
-        LocalDate firstDayOfMonth = localDateTime.toLocalDate().withDayOfMonth(1);
-        LocalDate lastDayOfMonth = localDateTime.toLocalDate().with(TemporalAdjusters.lastDayOfMonth());
         List<LocalDateTime> localDateTimesBetween = getLocalDateTimesBetween(firstDayOfMonth.atStartOfDay(), lastDayOfMonth.atStartOfDay());
         List<Object> list1 = new ArrayList<>();
         for (LocalDateTime dateTime : localDateTimesBetween) {
@@ -409,9 +412,10 @@
                 if (shiftTimeAndShift[1].equals("5")) {
                     i.getMonthlyAttendance().put("totalAttendance", totalAttendance += 0.5);
                 }
-                hashMap.put("id", shiftTimeAndShift[2]);
+                hashMap.put("id", shiftTimeAndShift[3]);
                 hashMap.put("shift", shiftTimeAndShift[1]);
                 hashMap.put("time", shiftTimeAndShift[0]);
+                hashMap.put("annotationText", shiftTimeAndShift[2]);
                 map.add(hashMap);
             }
             i.setList(map);
@@ -427,6 +431,11 @@
         return map;
     }
 
+    @Override
+    public boolean editAnnotationText(PerformanceShift performanceShift) {
+        return this.updateById(performanceShift);
+    }
+
     // 鑾峰彇涓や釜localDateTime鐨勬瘡涓�澶�
     public static List<LocalDateTime> getLocalDateTimesBetween(LocalDateTime start, LocalDateTime end) {
         List<LocalDateTime> localDateTimes = new ArrayList<>();
diff --git a/performance-server/src/main/resources/mapper/PerformanceShiftMapper.xml b/performance-server/src/main/resources/mapper/PerformanceShiftMapper.xml
index 56bd55b..cbdee95 100644
--- a/performance-server/src/main/resources/mapper/PerformanceShiftMapper.xml
+++ b/performance-server/src/main/resources/mapper/PerformanceShiftMapper.xml
@@ -12,7 +12,8 @@
     <select id="performanceShiftPage" resultMap="performanceShiftPageMap">
         SELECT
         u2.name name,
-        GROUP_CONCAT(s.work_time, '锛�', s.shift, '锛�', s.id order by s.work_time SEPARATOR ';') AS shift_time, u2.id user_id
+        GROUP_CONCAT(s.work_time, '锛�', s.shift, '锛�',IFNULL(s.annotation_text,''), '锛�',s.id order by s.work_time SEPARATOR ';') AS shift_time,
+        u2.id user_id
         FROM performance_shift s
         LEFT JOIN (SELECT distinct u.* from
         user u
@@ -25,8 +26,8 @@
          ) u2    on u2.id = s.user_id
         <where>
             name is not null
-            <if test="time != null and time != ''">
-                and DATE_FORMAT(s.work_time, '%Y-%m') = DATE_FORMAT(#{time}, '%Y-%m' )
+            <if test="firstDayOfMonth != null and lastDayOfMonth != null">
+                AND s.work_time BETWEEN #{firstDayOfMonth} AND #{lastDayOfMonth}
             </if>
             <if test="userName != null and userName != ''">
                 and u2.name like concat('%', #{userName}, '%')
diff --git a/ruoyi-admin-ztns/src/main/resources/application-druid.yml b/ruoyi-admin-ztns/src/main/resources/application-druid.yml
index aa0059c..9ddd314 100644
--- a/ruoyi-admin-ztns/src/main/resources/application-druid.yml
+++ b/ruoyi-admin-ztns/src/main/resources/application-druid.yml
@@ -167,9 +167,9 @@
     - contract: KJNS #绉戞妧鑰愪笣鍩�
       contract-key-get: ueWGmvzoc4iR0y%2FsP6iOMeYn3ohC45KTCl3dZ94WaNk%3D #get璇锋眰瀵嗛挜
       contract-key-post: ueWGmvzoc4iR0y/sP6iOMeYn3ohC45KTCl3dZ94WaNk=    #post璇锋眰瀵嗛挜
-      custorder: http://192.168.20.50/PurchService.ashx?                 #get璇锋眰鍦板潃
-      custorder-port: http://192.168.20.50:8008/PurchService.ashx?       #post璇锋眰鍦板潃
-      erp-services: http://192.168.20.50:8081                            #erp璇锋眰鍦板潃
+      custorder: http://192.168.47.50/PurchService.ashx?                 #get璇锋眰鍦板潃
+      custorder-port: http://192.168.20.47:8008/PurchService.ashx?       #post璇锋眰鍦板潃
+      erp-services: http://192.168.20.47:8081                            #erp璇锋眰鍦板潃
       tobe-inspected-location: A101                                      #寰呮搴撲綅
       raw-qualified-location: A201                                       #鍘熸潗鏂欏悎鏍煎簱浣�
       product-qualified-location: C101                                   #鎴愬搧鍚堟牸搴撲綅

--
Gitblit v1.9.3