24282 há 2 anos atrás
pai
commit
384277c6fd

+ 9 - 0
hx-service/storage/src/main/java/com/fjhx/stock/controller/StockBackController.java

@@ -258,5 +258,14 @@ public class StockBackController {
         return R.success(result);
     }
 
+    /**
+     * 修正
+     */
+    @PostMapping("/correct")
+    public R correct(@RequestBody Condition condition) {
+        List<Map<String, Object>> result = stockBackDetailsService.correct(condition);
+        return R.success(result);
+    }
+
 }
 

+ 6 - 0
hx-service/storage/src/main/java/com/fjhx/stock/mapper/StockBackDetailsMapper.java

@@ -28,4 +28,10 @@ public interface StockBackDetailsMapper extends BaseMapper<StockBackDetails> {
                                                     @Param("tech") String tech,
                                                     @Param("beginTime") Date beginTime,
                                                     @Param("endTime") Date endTime);
+
+    List<Map<String, Object>> getCorrectList(@Param("ew") QueryWrapper<Object> wrapper,
+                                             @Param("tech") String tech,
+                                             @Param("beginTime") Date beginTime,
+                                             @Param("endTime") Date endTime);
+
 }

+ 35 - 21
hx-service/storage/src/main/java/com/fjhx/stock/mapper/StockBackDetailsMapper.xml

@@ -13,37 +13,51 @@
             swd.ChangeNum changeNum,
             (m.width * swd.ChangeNum / 100) area
         from stock_waterdetial swd
-        left join material m on swd.MaterialCode = m.code
-        left join u_user uu on uu.ID = swd.OperUserId
-        <if test="tech neq null and tech neq ''">
-            inner join (select distinct plan_material from stock_back_plan
-            where tech=#{tech} and create_time between #{beginTime} and #{endTime}) sbp
-            on (sbp.plan_material = m.`Name` or m.`Name` like (concat(sbp.plan_material,'-%')))
-        </if>
+            left join material m on swd.MaterialCode = m.code
+            left join u_user uu on uu.ID = swd.OperUserId
+        <include refid="selectTech"/>
         ${ew.customSqlSegment}
     </select>
 
     <select id="getReturnMaterialList" resultType="java.util.Map">
         select
-        <if test="tech neq null and tech neq ''">DISTINCT</if>
-        sb.operation_time createTime,
-        uu.RealName realName,
-        m.CODE materialCode,
-        m.NAME materialName,
-        sbd.rfid rfidCode,
-        sbd.material_meters changeNum,
-        (m.width * sbd.material_meters / 100) area
+            <if test="tech neq null and tech neq ''">DISTINCT</if>
+            sb.operation_time createTime,
+            uu.RealName realName,
+            m.CODE materialCode,
+            m.NAME materialName,
+            sbd.rfid rfidCode,
+            sbd.material_meters changeNum,
+            (m.width * sbd.material_meters / 100) area
         from stock_back sb
-        left join stock_back_details sbd on sb.id = sbd.stock_back_id
-        left join material m on sbd.material_id = m.id
-        left join acc_account aa on sb.operator_id = aa.AccountNo
-        left join u_user uu on uu.ID = aa.ID
+            left join stock_back_details sbd on sb.id = sbd.stock_back_id
+            left join material m on sbd.material_id = m.id
+            left join acc_account aa on sb.operator_id = aa.AccountNo
+            left join u_user uu on uu.ID = aa.ID
+        <include refid="selectTech"/>
+        ${ew.customSqlSegment}
+    </select>
+    <select id="getCorrectList" resultType="java.util.Map">
+        SELECT
+            <if test="tech neq null and tech neq ''">DISTINCT</if>
+            sc.correct_date createTime,
+            uu.RealName realName,
+            m.CODE materialCode,
+            m.NAME materialName,
+            sc.correct_area area
+        FROM stock_correct sc
+            LEFT JOIN material m ON sc.material_id = m.ID
+            LEFT JOIN u_user uu ON sc.correct_user = uu.ID
+        <include refid="selectTech"/>
+        ${ew.customSqlSegment}
+    </select>
+
+    <sql id="selectTech">
         <if test="tech neq null and tech neq ''">
             inner join (select distinct plan_material from stock_back_plan
             where tech=#{tech} and create_time between #{beginTime} and #{endTime}) sbp
             on (sbp.plan_material = m.`Name` or m.`Name` like (concat(sbp.plan_material,'-%')))
         </if>
-        ${ew.customSqlSegment}
-    </select>
+    </sql>
 
 </mapper>

+ 2 - 0
hx-service/storage/src/main/java/com/fjhx/stock/service/StockBackDetailsService.java

@@ -31,4 +31,6 @@ public interface StockBackDetailsService extends BaseService<StockBackDetails> {
 
     List<Map<String, Object>> returnMaterial(Condition condition);
 
+    List<Map<String, Object>> correct(Condition condition);
+
 }

+ 43 - 0
hx-service/storage/src/main/java/com/fjhx/stock/service/impl/StockBackDetailsServiceImpl.java

@@ -155,4 +155,47 @@ public class StockBackDetailsServiceImpl extends ServiceImpl<StockBackDetailsMap
         return baseMapper.getReturnMaterialList(wrapper, tech, beginTime, endTime);
     }
 
+    @Override
+    public List<Map<String, Object>> correct(Condition condition) {
+        // 开始时间
+        Date beginTime = condition.getBeginTime();
+        // 结束时间
+        Date endTime = condition.getEndTime();
+
+        Assert.notEmpty(beginTime, "开始时间不能为空");
+        Assert.notEmpty(endTime, "结束时间不能为空");
+
+        // 人员
+        String userId = condition.getStr("userId");
+        // 物料名称
+        String materialName = condition.getStr("materialName");
+        // 工艺
+        String tech = condition.getStr("tech");
+
+        Map<String, PlanConfig> configMap = planConfigService.list().stream()
+                .collect(Collectors.toMap(PlanConfig::getCode, item -> item));
+
+        QueryWrapper<Object> wrapper = Wrappers.query()
+                .between("sc.correct_date", beginTime, endTime)
+                .func(q -> {
+                    // 用户id不为空
+                    if (ObjectUtil.isNotEmpty(userId)) {
+                        q.eq("uu.ID", userId);
+                    }
+                    // 用户id为空,查询指定部门全部人员
+                    else {
+                        List<String> deptIdList = new ArrayList<>();
+                        deptIdList.addAll(Arrays.asList(configMap.get("returnWarehouse").getDeptIdSet().split(",")));
+                        deptIdList.addAll(Arrays.asList(configMap.get("returnWarehouseA008").getDeptIdSet().split(",")));
+                        q.in("uu.DepartmentID", deptIdList);
+                    }
+                })
+                // 物料名称
+                .and(ObjectUtil.isNotEmpty(materialName), q ->
+                        q.eq("m.Name", materialName).or().likeRight("m.Name", materialName + "-"))
+                .notIn("m.CategoryCode", Arrays.asList(configMap.get("headTailCorrect").getNotCategoryCodeSet().split(",")));
+
+        return baseMapper.getCorrectList(wrapper, tech, beginTime, endTime);
+    }
+
 }