24282 2 سال پیش
والد
کامیت
8445ab1677

+ 1 - 1
hx-common/code-generator/src/main/java/com/fjhx/modular/Storage.java

@@ -37,7 +37,7 @@ public class Storage {
     public static String MODULAR_NAME = "storage";
 
     // 需要生成的表名称,多表用,隔开
-    public static String INCLUDE = "stock_waterdetial";
+    public static String INCLUDE = "plan_config";
 
     // mysql连接
     public static String MYSQL_URL = "rm-wz9f1jcr5466b42415o.mysql.rds.aliyuncs.com:3306";

+ 65 - 0
hx-service-api/storage-api/src/main/java/com/fjhx/entity/plan/PlanConfig.java

@@ -0,0 +1,65 @@
+package com.fjhx.entity.plan;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author ${author}
+ * @since 2023-01-06
+ */
+@Data
+public class PlanConfig implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    @TableId(value = "id", type = IdType.ASSIGN_ID)
+    private String id;
+
+
+    /**
+     * 配置编码
+     */
+    private String code;
+
+    /**
+     * 部门id集合
+     */
+    private String deptIdSet;
+
+    /**
+     * 不属于分类编码
+     */
+    private String notCategoryCodeSet;
+
+    /**
+     * 开始时间
+     */
+    private String beginTime;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 天数
+     */
+    private Integer days;
+
+    /**
+     * 其他配置
+     */
+    private String other;
+
+
+}

+ 17 - 0
hx-service-api/storage-api/src/main/java/com/fjhx/params/plan/PlanConfigEx.java

@@ -0,0 +1,17 @@
+package com.fjhx.params.plan;
+
+import com.fjhx.entity.plan.PlanConfig;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 
+ *
+ * @author ${author}
+ * @since 2023-01-06
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PlanConfigEx extends PlanConfig {
+
+}

+ 17 - 0
hx-service-api/storage-api/src/main/java/com/fjhx/params/plan/PlanConfigVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.params.plan;
+
+import com.fjhx.entity.plan.PlanConfig;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 
+ *
+ * @author ${author}
+ * @since 2023-01-06
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class PlanConfigVo extends PlanConfig {
+
+}

+ 34 - 0
hx-service/storage/src/main/java/com/fjhx/plan/controller/PlanConfigController.java

@@ -0,0 +1,34 @@
+package com.fjhx.plan.controller;
+
+import com.fjhx.params.plan.PlanConfigVo;
+import com.fjhx.plan.service.PlanConfigService;
+import org.springblade.core.tool.api.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author ${author}
+ * @since 2023-01-06
+ */
+@RestController
+@RequestMapping("/planConfig")
+public class PlanConfigController {
+
+    @Autowired
+    private PlanConfigService planConfigService;
+
+    @PostMapping("/edit")
+    public R edit(@RequestBody PlanConfigVo planConfigVo){
+        planConfigService.edit(planConfigVo);
+        return R.success();
+    }
+
+}
+

+ 16 - 0
hx-service/storage/src/main/java/com/fjhx/plan/mapper/PlanConfigMapper.java

@@ -0,0 +1,16 @@
+package com.fjhx.plan.mapper;
+
+import com.fjhx.entity.plan.PlanConfig;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author ${author}
+ * @since 2023-01-06
+ */
+public interface PlanConfigMapper extends BaseMapper<PlanConfig> {
+
+}

+ 5 - 0
hx-service/storage/src/main/java/com/fjhx/plan/mapper/PlanConfigMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.plan.mapper.PlanConfigMapper">
+
+</mapper>

+ 28 - 0
hx-service/storage/src/main/java/com/fjhx/plan/service/PlanConfigService.java

@@ -0,0 +1,28 @@
+package com.fjhx.plan.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.entity.plan.PlanConfig;
+import com.fjhx.params.plan.PlanConfigVo;
+import com.fjhx.base.BaseService;
+
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2023-01-06
+ */
+public interface PlanConfigService extends BaseService<PlanConfig> {
+
+    Page<PlanConfig> getPage(Map<String, Object> condition);
+
+    void add(PlanConfigVo planConfigVo);
+
+    void edit(PlanConfigVo planConfigVo);
+
+    void delete(PlanConfigVo planConfigVo);
+
+}

+ 48 - 0
hx-service/storage/src/main/java/com/fjhx/plan/service/impl/PlanConfigServiceImpl.java

@@ -0,0 +1,48 @@
+package com.fjhx.plan.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.entity.plan.PlanConfig;
+import com.fjhx.params.plan.PlanConfigVo;
+import com.fjhx.plan.mapper.PlanConfigMapper;
+import com.fjhx.plan.service.PlanConfigService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.utils.wrapperUtil.IWrapper;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2023-01-06
+ */
+@Service
+public class PlanConfigServiceImpl extends ServiceImpl<PlanConfigMapper, PlanConfig> implements PlanConfigService {
+
+    @Override
+    public Page<PlanConfig> getPage(Map<String, Object> condition) {
+
+        IWrapper<PlanConfig> wrapper = IWrapper.getWrapper(condition);
+
+        return page(condition, wrapper);
+    }
+
+    @Override
+    public void add(PlanConfigVo planConfigVo) {
+        save(planConfigVo);
+    }
+
+    @Override
+    public void edit(PlanConfigVo planConfigVo) {
+        updateById(planConfigVo);
+    }
+
+    @Override
+    public void delete(PlanConfigVo planConfigVo) {
+        removeById(planConfigVo.getId());
+    }
+
+}

+ 2 - 6
hx-service/storage/src/main/java/com/fjhx/stock/service/StockBackPlanService.java

@@ -1,12 +1,8 @@
 package com.fjhx.stock.service;
 
 import com.fjhx.base.BaseService;
-import com.fjhx.base.Condition;
 import com.fjhx.entity.stock.StockBackPlan;
 
-import java.util.List;
-import java.util.Map;
-
 /**
  * <p>
  * 服务类
@@ -17,9 +13,9 @@ import java.util.Map;
  */
 public interface StockBackPlanService extends BaseService<StockBackPlan> {
 
-    void getScheduleTask(int offset);
+    void synchronousScheduling();
 
-    void statisticsScheduleDateTask(int offset);
+    // void statisticsScheduleDateTask(int offset);
 
 
 }

+ 242 - 120
hx-service/storage/src/main/java/com/fjhx/stock/service/impl/StockBackPlanServiceImpl.java

@@ -7,8 +7,10 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.constants.StatusConstant;
+import com.fjhx.entity.plan.PlanConfig;
 import com.fjhx.entity.stock.StockBackPlan;
 import com.fjhx.entity.stock.StockBackPlanDetails;
+import com.fjhx.plan.service.PlanConfigService;
 import com.fjhx.stock.mapper.StockBackPlanMapper;
 import com.fjhx.stock.service.StockBackPlanDetailsService;
 import com.fjhx.stock.service.StockBackPlanService;
@@ -33,61 +35,74 @@ import java.util.stream.Collectors;
 @Service
 public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, StockBackPlan> implements StockBackPlanService {
 
+    @Autowired
+    private PlanConfigService planConfigService;
+
     private static final RestTemplate restTemplate = new RestTemplate();
 
     private static final Object obj = new Object();
 
-    private static final List<String> materialNameList = Arrays.asList(
-            "黑色 170克100%精梳棉",
-            "灰色 170克100%精梳棉",
-            "空白鼠标垫+密锁边",
-            "法兰绒"
-    );
+    // private static final List<String> materialNameList = Arrays.asList(
+    //         "黑色 170克100%精梳棉",
+    //         "灰色 170克100%精梳棉",
+    //         "空白鼠标垫+密锁边",
+    //         "法兰绒"
+    // );
 
     @Autowired
     private StockBackPlanDetailsService stockBackPlanDetailsService;
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public void getScheduleTask(int offset) {
+    public void synchronousScheduling() {
 
         synchronized (obj) {
 
+            // 配置map
+            Map<String, PlanConfig> planConfigMap = planConfigService.list()
+                    .stream().collect(Collectors.toMap(PlanConfig::getCode, item -> item));
+
+            Integer nextStatisticsDay = planConfigMap.get("nextStatisticsDay").getDays();
+            Integer defaultStatisticsDay = planConfigMap.get("defaultStatisticsDay").getDays();
+            int offset = nextStatisticsDay - 1;
+
+
+            List<String> materialNameList = Arrays.asList(planConfigMap.get("excludeMaterial").getOther().split(","));
+
             // 请求v3接口获取token
             String token = getToken();
 
             // 请求v3接口获取所有人领料信息
             Date date = new Date();
 
-            String beginDate = DateUtil.format(DateUtil.offsetDay(date, -offset), "yyyy-MM-dd 00:00:00");
-            String endDate = DateUtil.format(date, "yyyy-MM-dd 23:59:59");
+            String beginDateStr = DateUtil.format(DateUtil.offsetDay(date, -offset), "yyyy-MM-dd 00:00:00");
+            String endDateStr = DateUtil.format(date, "yyyy-MM-dd 23:59:59");
 
             String url = "http://mes.cfmfactory.com:8087/MesWeb/planPersonOutAction.do?action=list&beginDate="
-                    + beginDate + "&endDate=" + endDate + "&access_token=" + token;
+                    + beginDateStr + "&endDate=" + endDateStr + "&access_token=" + token;
 
             String resultStr = restTemplate.getForEntity(url, String.class).getBody();
             JSONObject resultMap = JSONObject.parseObject(resultStr);
+
             // 接收到的消息
             List<JSONObject> items = (List<JSONObject>) resultMap.get("items");
 
-            remove(Wrappers.<StockBackPlan>lambdaQuery().between(StockBackPlan::getPlanTime, beginDate, endDate));
+            remove(Wrappers.<StockBackPlan>lambdaQuery().between(StockBackPlan::getPlanTime, beginDateStr, endDateStr));
 
             Map<String, StockBackPlan> flagMap = new HashMap<>();
 
-            Date newDate = new Date();
-
             // 循环领料信息
             items.forEach(item -> {
                 // 喷印人员工号
-                String distributor = item.get("distributor").toString();
+                String distributor = item.getString("distributor");
                 // 打纸人员工号
-                String paperMan = item.get("paperMan").toString();
+                String paperMan = item.getString("paperMan");
                 // 排班面积
-                BigDecimal plantotalsquare = new BigDecimal(item.get("plantotalsquare").toString());
+                BigDecimal plantotalsquare = new BigDecimal(item.getString("plantotalsquare"));
                 // 物料名称
-                String material = item.get("material").toString();
+                String material = item.getString("material");
                 // 排班时间
-                String planDate = item.get("planDate").toString();
+                String planDate = item.getString("planDate");
 
                 if (materialNameList.contains(material)) {
                     return;
@@ -107,38 +122,29 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
 
                 if (!"胶印".equals(tech)) {
                     // 喷印人员工号添加领料记录标记
-                    addOrEditFlagMap(flagMap, distributor, plantotalsquare, planDate, material, tech, newDate);
+                    addOrEditFlagMap(flagMap, distributor, plantotalsquare, planDate, material, tech, date);
 
                     // 打纸人员工号添加领料记录标记
-                    addOrEditFlagMap(flagMap, paperMan, plantotalsquare, planDate, "热转印纸", "打纸", newDate);
+                    addOrEditFlagMap(flagMap, paperMan, plantotalsquare, planDate, "热转印纸", "打纸", date);
                 }
 
             });
 
-            // 更新当天的出库单
-            saveBatch(new ArrayList<>(flagMap.values()));
-
-        }
-    }
+            // 当天出库
+            List<StockBackPlan> stockBackPlanList = new ArrayList<>(flagMap.values());
 
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public void statisticsScheduleDateTask(int offset) {
-
-        synchronized (obj) {
-
-            // 统计近 offset 天排班
-            Date endDate = new Date();
-            Date beginDate = DateUtil.beginOfDay(DateUtil.offsetDay(endDate, -offset));
+            // 更新当天的出库单
+            saveBatch(stockBackPlanList);
 
-            List<StockBackPlan> list = list(Wrappers.<StockBackPlan>lambdaQuery()
-                    .between(StockBackPlan::getPlanTime, beginDate, endDate));
+            // 开始时间
+            Date beginDate = DateUtil.beginOfDay(DateUtil.offsetDay(date, -offset));
 
+            // 删除排班统计
             stockBackPlanDetailsService.remove(Wrappers.<StockBackPlanDetails>lambdaQuery()
-                    .between(StockBackPlanDetails::getPlanTime, beginDate, endDate));
+                    .between(StockBackPlanDetails::getPlanTime, beginDate, date));
 
             // 工号,物料名称,排班时间封装成key,对象为value
-            Map<String, StockBackPlanDetails> stockBackPlanMap = list.stream().collect(Collectors.toMap(
+            Map<String, StockBackPlanDetails> stockBackPlanMap = stockBackPlanList.stream().collect(Collectors.toMap(
                     item -> item.getJobNo() + item.getPlanMaterial() + item.getPlanTime().getTime(),
                     item -> {
                         StockBackPlanDetails stockBackPlanDetails =
@@ -150,35 +156,107 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
             ));
 
             // 查询出库
-            issue(beginDate, stockBackPlanMap);
+            issue(planConfigMap.get("issue"), beginDate, stockBackPlanMap);
 
             // 转印部门出库
-            issueA008(beginDate, stockBackPlanMap);
+            issueA008(planConfigMap.get("issueA008"), beginDate, stockBackPlanMap);
 
             // 回仓
-            returnWarehouse(beginDate, stockBackPlanMap);
+            returnWarehouse(planConfigMap.get("returnWarehouse"), beginDate, stockBackPlanMap);
 
             // 转印部门回仓
-            returnWarehouseA008(beginDate, stockBackPlanMap);
+            returnWarehouseA008(planConfigMap.get("returnWarehouseA008"), beginDate, stockBackPlanMap);
 
             // 物料修正
-            correct(beginDate, stockBackPlanMap);
+            correct(planConfigMap.get("correct"), beginDate, stockBackPlanMap);
 
             // 转入
-            transferIn(beginDate, stockBackPlanMap);
+            transferIn(planConfigMap.get("transferIn"), beginDate, stockBackPlanMap);
 
             // 转出
-            transferOut(beginDate, stockBackPlanMap);
+            transferOut(planConfigMap.get("transferOut"), beginDate, stockBackPlanMap);
 
             // 布头布尾修正
-            headTailCorrect(beginDate, stockBackPlanMap);
+            headTailCorrect(planConfigMap.get("headTailCorrect"), beginDate, stockBackPlanMap);
 
             stockBackPlanDetailsService.saveBatch(new ArrayList<>(stockBackPlanMap.values()));
 
-        }
+            // 如果时间不相同
+            if (!Objects.equals(defaultStatisticsDay, nextStatisticsDay)) {
+                planConfigService.update(Wrappers.<PlanConfig>lambdaUpdate()
+                        .eq(PlanConfig::getCode, "nextStatisticsDay")
+                        .eq(PlanConfig::getDays, nextStatisticsDay)
+                        .set(PlanConfig::getDays, defaultStatisticsDay)
+                );
+            }
 
+            // 最近一次更新时间
+            planConfigService.update(Wrappers.<PlanConfig>lambdaUpdate()
+                    .eq(PlanConfig::getCode, "lastStatisticsTime")
+                    .set(PlanConfig::getOther, DateUtil.format(date, "yyyy-MM-dd HH:mm:ss"))
+            );
+
+        }
     }
 
+    // @Transactional(rollbackFor = Exception.class)
+    // @Override
+    // public void statisticsScheduleDateTask(int offset) {
+    //
+    //     synchronized (obj) {
+    //
+    //         // 统计近 offset 天排班
+    //         Date endDate = new Date();
+    //         Date beginDate = DateUtil.beginOfDay(DateUtil.offsetDay(endDate, -offset));
+    //
+    //         List<StockBackPlan> list = list(Wrappers.<StockBackPlan>lambdaQuery()
+    //                 .between(StockBackPlan::getPlanTime, beginDate, endDate));
+    //
+    //         stockBackPlanDetailsService.remove(Wrappers.<StockBackPlanDetails>lambdaQuery()
+    //                 .between(StockBackPlanDetails::getPlanTime, beginDate, endDate));
+    //
+    //         // 工号,物料名称,排班时间封装成key,对象为value
+    //         Map<String, StockBackPlanDetails> stockBackPlanMap = list.stream().collect(Collectors.toMap(
+    //                 item -> item.getJobNo() + item.getPlanMaterial() + item.getPlanTime().getTime(),
+    //                 item -> {
+    //                     StockBackPlanDetails stockBackPlanDetails =
+    //                             createStockBackPlanDetails(item.getJobNo(), item.getPlanMaterial(), item.getPlanTime());
+    //                     stockBackPlanDetails.setQuantity(item.getQuantity());
+    //                     stockBackPlanDetails.setTech(item.getTech());
+    //                     return stockBackPlanDetails;
+    //                 }
+    //         ));
+    //
+    //         // 查询出库
+    //         issue(beginDate, stockBackPlanMap);
+    //
+    //         // 转印部门出库
+    //         issueA008(beginDate, stockBackPlanMap);
+    //
+    //         // 回仓
+    //         returnWarehouse(beginDate, stockBackPlanMap);
+    //
+    //         // 转印部门回仓
+    //         returnWarehouseA008(beginDate, stockBackPlanMap);
+    //
+    //         // 物料修正
+    //         correct(beginDate, stockBackPlanMap);
+    //
+    //         // 转入
+    //         transferIn(beginDate, stockBackPlanMap);
+    //
+    //         // 转出
+    //         transferOut(beginDate, stockBackPlanMap);
+    //
+    //         // 布头布尾修正
+    //         headTailCorrect(beginDate, stockBackPlanMap);
+    //
+    //         stockBackPlanDetailsService.saveBatch(new ArrayList<>(stockBackPlanMap.values()));
+    //
+    //     }
+    //
+    // }
+
 
     private StockBackPlanDetails createStockBackPlanDetails(String jobNo, String materialName, Date planDate) {
         StockBackPlanDetails stockBackPlanDetails = new StockBackPlanDetails();
@@ -258,15 +336,22 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
     /**
      * 出库
      */
-    private void issue(Date beginDate, Map<String, StockBackPlanDetails> stockBackPlanMap) {
+    private void issue(PlanConfig planConfig, Date beginDate, Map<String, StockBackPlanDetails> stockBackPlanMap) {
+
+        String beginTime = planConfig.getBeginTime();
+        List<String> deptIdList = Arrays.asList(planConfig.getDeptIdSet().split(","));
+        List<String> notCategoryCodeList = Arrays.asList(planConfig.getNotCategoryCodeSet().split(","));
+
+        String[] split = beginTime.split(":");
+        int configH = Convert.toInt(split[0]);
+        int configM = Convert.toInt(split[1]);
+
         List<Map<String, Object>> pickingList = baseMapper.getWater(Wrappers.query()
-                .ge("swd.CreatedTime", DateUtil.format(beginDate, "yyyy-MM-dd 7:00:00"))
+                .ge("swd.CreatedTime", DateUtil.format(beginDate, "yyyy-MM-dd " + beginTime))
                 .in("swd.StockChangeType", 20, 23)
                 .eq("uu.IsDelete", 0)
-                .in("uu.DepartmentID", "A007", "A012", "A017")
-//                .likeRight("m.Code", "01.")
-//                .notIn("m.Code", "01.002.0045", "01.002.0124", "01.002.0381", "01.002.0383")
-                .notIn("m.CategoryCode", "99.999.", "01.007.")
+                .in("uu.DepartmentID", deptIdList)
+                .notIn("m.CategoryCode", notCategoryCodeList)
                 .isNotNull("uu.JobNo"));
 
         for (Map<String, Object> map : pickingList) {
@@ -276,9 +361,9 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
             // 时
             int h = Integer.parseInt(DateUtil.format(createTime, "H"));
             // 分
-//            int m = Integer.parseInt(DateUtil.format(createTime, "m"));
-            // 小于7点30算前一日
-            if (h < 7) {
+            int m = Integer.parseInt(DateUtil.format(createTime, "m"));
+            // 小于配置时分算前一日
+            if (h < configH || (h == configH && m < configM)) {
                 createTime = DateUtil.offsetDay(createTime, -1);
             }
 
@@ -318,16 +403,23 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
         }
     }
 
-    private void issueA008(Date beginDate, Map<String, StockBackPlanDetails> stockBackPlanMap) {
+    private void issueA008(PlanConfig planConfig, Date beginDate, Map<String, StockBackPlanDetails> stockBackPlanMap) {
+
+        String beginTime = planConfig.getBeginTime();
+        List<String> deptIdList = Arrays.asList(planConfig.getDeptIdSet().split(","));
+        List<String> notCategoryCodeList = Arrays.asList(planConfig.getNotCategoryCodeSet().split(","));
+
+        String[] split = beginTime.split(":");
+        int configH = Convert.toInt(split[0]);
+        int configM = Convert.toInt(split[1]);
+
 
         List<Map<String, Object>> pickingList = baseMapper.getWater(Wrappers.query()
-                .ge("swd.CreatedTime", DateUtil.format(beginDate, "yyyy-MM-dd 8:30:00"))
+                .ge("swd.CreatedTime", DateUtil.format(beginDate, "yyyy-MM-dd " + beginTime))
                 .in("swd.StockChangeType", 20, 23)
                 .eq("uu.IsDelete", 0)
-                .eq("uu.DepartmentID", "A008")
-//                .likeRight("m.Code", "01.")
-//                .notIn("m.Code", "01.002.0045", "01.002.0124", "01.002.0381", "01.002.0383")
-                .notIn("m.CategoryCode", "99.999.", "01.007.")
+                .in("uu.DepartmentID", deptIdList)
+                .notIn("m.CategoryCode", notCategoryCodeList)
                 .isNotNull("uu.JobNo"));
 
         for (Map<String, Object> map : pickingList) {
@@ -338,9 +430,9 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
             int h = Integer.parseInt(DateUtil.format(createTime, "H"));
             // 分
             int m = Integer.parseInt(DateUtil.format(createTime, "m"));
-            // 小于7点30算前一日
-            if (h < 8 || (h == 8 && m <= 30)) {
-//            if (h < 8) {
+
+            // 小于配置算前一日
+            if (h < configH || (h == configH && m < configM)) {
                 createTime = DateUtil.offsetDay(createTime, -1);
             }
 
@@ -385,16 +477,22 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
     /**
      * 回仓
      */
-    private void returnWarehouse(Date beginDate, Map<String, StockBackPlanDetails> stockBackPlanMap) {
-        List<Map<String, Object>> backList = baseMapper.getReturnWarehouse(Wrappers.query()
-                        .ge("sb.operation_time", DateUtil.format(beginDate, "yyyy-MM-dd 10:00:00"))
-                        .eq("uu.IsDelete", 0)
-                        .in("uu.DepartmentID", "A007", "A012", "A017")
-                        .isNotNull("uu.JobNo")
-                        .notIn("m.CategoryCode", "99.999.", "01.007.")
-//                .likeRight("m.Code", "01.")
-//                .notIn("m.Code", "01.002.0045", "01.002.0124", "01.002.0381", "01.002.0383")
+    private void returnWarehouse(PlanConfig planConfig, Date beginDate, Map<String, StockBackPlanDetails> stockBackPlanMap) {
+
+        String beginTime = planConfig.getBeginTime();
+        List<String> deptIdList = Arrays.asList(planConfig.getDeptIdSet().split(","));
+        List<String> notCategoryCodeList = Arrays.asList(planConfig.getNotCategoryCodeSet().split(","));
 
+        String[] split = beginTime.split(":");
+        int configH = Convert.toInt(split[0]);
+        int configM = Convert.toInt(split[1]);
+
+        List<Map<String, Object>> backList = baseMapper.getReturnWarehouse(Wrappers.query()
+                .ge("sb.operation_time", DateUtil.format(beginDate, "yyyy-MM-dd " + beginTime))
+                .eq("uu.IsDelete", 0)
+                .in("uu.DepartmentID", deptIdList)
+                .isNotNull("uu.JobNo")
+                .notIn("m.CategoryCode", notCategoryCodeList)
         );
 
         for (Map<String, Object> map : backList) {
@@ -403,9 +501,10 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
             Date createTime = (Date) map.get("createTime");
 
             int h = Integer.parseInt(DateUtil.format(createTime, "H"));
-            // int m = Integer.parseInt(DateUtil.format(createTime, "m"));
-            // 小于10点算前一日
-            if (h < 10) {
+            int m = Integer.parseInt(DateUtil.format(createTime, "m"));
+
+            // 小于配置算前一日
+            if (h < configH || (h == configH && m < configM)) {
                 createTime = DateUtil.offsetDay(createTime, -1);
             }
             // 排班时间
@@ -445,26 +544,35 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
     }
 
 
-    private void returnWarehouseA008(Date beginDate, Map<String, StockBackPlanDetails> stockBackPlanMap) {
+    /**
+     * 转印部门回仓
+     */
+    private void returnWarehouseA008(PlanConfig planConfig, Date beginDate, Map<String, StockBackPlanDetails> stockBackPlanMap) {
+
+        String beginTime = planConfig.getBeginTime();
+        List<String> deptIdList = Arrays.asList(planConfig.getDeptIdSet().split(","));
+        List<String> notCategoryCodeList = Arrays.asList(planConfig.getNotCategoryCodeSet().split(","));
+
+        String[] split = beginTime.split(":");
+        int configH = Convert.toInt(split[0]);
+        int configM = Convert.toInt(split[1]);
+
         List<Map<String, Object>> backList = baseMapper.getReturnWarehouse(Wrappers.query()
-                        .ge("sb.operation_time", DateUtil.format(beginDate, "yyyy-MM-dd 10:00:00"))
-                        .eq("uu.IsDelete", 0)
-                        .eq("uu.DepartmentID", "A008")
-                        .isNotNull("uu.JobNo")
-                        .notIn("m.CategoryCode", "99.999.", "01.007.")
-//                .likeRight("m.Code", "01.")
-//                .notIn("m.Code", "01.002.0045", "01.002.0124", "01.002.0381", "01.002.0383")
+                .ge("sb.operation_time", DateUtil.format(beginDate, "yyyy-MM-dd " + beginTime))
+                .eq("uu.IsDelete", 0)
+                .in("uu.DepartmentID", deptIdList)
+                .notIn("m.CategoryCode", notCategoryCodeList)
+                .isNotNull("uu.JobNo")
         );
 
         for (Map<String, Object> map : backList) {
-
             // 出库时间
             Date createTime = (Date) map.get("createTime");
 
             int h = Integer.parseInt(DateUtil.format(createTime, "H"));
-            // int m = Integer.parseInt(DateUtil.format(createTime, "m"));
-            // 小于10点算前一日
-            if (h < 10) {
+            int m = Integer.parseInt(DateUtil.format(createTime, "m"));
+            // 小于配置算前一日
+            if (h < configH || (h == configH && m < configM)) {
                 createTime = DateUtil.offsetDay(createTime, -1);
             }
             // 排班时间
@@ -508,13 +616,15 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
     /**
      * 修正
      */
-    private void correct(Date beginDate, Map<String, StockBackPlanDetails> stockBackPlanMap) {
+    private void correct(PlanConfig planConfig, Date beginDate, Map<String, StockBackPlanDetails> stockBackPlanMap) {
+        List<String> notCategoryCodeList = Arrays.asList(planConfig.getNotCategoryCodeSet().split(","));
+
         List<Map<String, Object>> correctList = baseMapper.getCorrect(Wrappers.query()
-                        .gt("sbc.correct_time", DateUtil.format(beginDate, "yyyy-MM-dd 00:00:00"))
-                        .isNotNull("uu.JobNo")
-//                .notIn("m.Code", "01.002.0045", "01.002.0124", "01.002.0381", "01.002.0383")
-                        .notIn("m.CategoryCode", "99.999.", "01.007.")
+                .gt("sbc.correct_time", DateUtil.format(beginDate, "yyyy-MM-dd 00:00:00"))
+                .notIn("m.CategoryCode", notCategoryCodeList)
+                .isNotNull("uu.JobNo")
         );
+
         for (Map<String, Object> map : correctList) {
             // 出库时间
             Date createTime = (Date) map.get("createTime");
@@ -541,27 +651,33 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
     /**
      * 转入
      */
-    private void transferIn(Date beginDate, Map<String, StockBackPlanDetails> stockBackPlanMap) {
+    private void transferIn(PlanConfig planConfig, Date beginDate, Map<String, StockBackPlanDetails> stockBackPlanMap) {
+        String beginTime = planConfig.getBeginTime();
+        List<String> notCategoryCodeList = Arrays.asList(planConfig.getNotCategoryCodeSet().split(","));
+
+        String[] split = beginTime.split(":");
+        int configH = Convert.toInt(split[0]);
+        int configM = Convert.toInt(split[1]);
+
+
         List<Map<String, Object>> transferPickingList = baseMapper.getTransferPickingList(Wrappers.query()
-                        .ge("st.submit_time", DateUtil.format(beginDate, "yyyy-MM-dd 00:00:00"))
-                        .eq("st.status", StatusConstant.YES)
-                        .eq("st.del_flag", 0)
-//                .notIn("m.Code", "01.002.0045", "01.002.0124", "01.002.0381", "01.002.0383")
-                        .notIn("m.CategoryCode", "99.999.", "01.007.")
+                .ge("st.submit_time", DateUtil.format(beginDate, "yyyy-MM-dd " + beginTime))
+                .eq("st.status", StatusConstant.YES)
+                .eq("st.del_flag", 0)
+                .notIn("m.CategoryCode", notCategoryCodeList)
         );
 
         for (Map<String, Object> map : transferPickingList) {
 
             // 出库时间
             Date createTime = (Date) map.get("createTime");
-            // 时
-//            int h = Integer.parseInt(DateUtil.format(createTime, "H"));
-            // 分
-//            int m = Integer.parseInt(DateUtil.format(createTime, "m"));
-            // 小于7点30算前一日
-//            if (h < 10) {
-//                createTime = DateUtil.offsetDay(createTime, -1);
-//            }
+
+            int h = Integer.parseInt(DateUtil.format(createTime, "H"));
+            int m = Integer.parseInt(DateUtil.format(createTime, "m"));
+            // 小于配置算前一日
+            if (h < configH || (h == configH && m < configM)) {
+                createTime = DateUtil.offsetDay(createTime, -1);
+            }
 
             // 排班时间
             Date planDate = DateUtil.beginOfDay(createTime);
@@ -603,14 +719,19 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
     /**
      * 转出
      */
-    private void transferOut(Date beginDate, Map<String, StockBackPlanDetails> stockBackPlanMap) {
+    private void transferOut(PlanConfig planConfig, Date beginDate, Map<String, StockBackPlanDetails> stockBackPlanMap) {
+        String beginTime = planConfig.getBeginTime();
+        List<String> notCategoryCodeList = Arrays.asList(planConfig.getNotCategoryCodeSet().split(","));
+
+        String[] split = beginTime.split(":");
+        int configH = Convert.toInt(split[0]);
+        int configM = Convert.toInt(split[1]);
 
         List<Map<String, Object>> transferBackList = baseMapper.getTransferBackList(Wrappers.query()
-                        .ge("st.submit_time", DateUtil.format(beginDate, "yyyy-MM-dd 10:00:00"))
-                        .eq("st.status", StatusConstant.YES)
-                        .eq("st.del_flag", 0)
-//                .notIn("m.Code", "01.002.0045", "01.002.0124", "01.002.0381", "01.002.0383")
-                        .notIn("m.CategoryCode", "99.999.", "01.007.")
+                .ge("st.submit_time", DateUtil.format(beginDate, "yyyy-MM-dd " + beginTime))
+                .eq("st.status", StatusConstant.YES)
+                .eq("st.del_flag", 0)
+                .notIn("m.CategoryCode", notCategoryCodeList)
         );
 
         for (Map<String, Object> map : transferBackList) {
@@ -619,9 +740,9 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
             Date createTime = (Date) map.get("createTime");
 
             int h = Integer.parseInt(DateUtil.format(createTime, "H"));
-//            int m = Integer.parseInt(DateUtil.format(createTime, "m"));
-            // 小于7点30点算前一日
-            if (h < 10) {
+            int m = Integer.parseInt(DateUtil.format(createTime, "m"));
+            // 小于配置算前一日
+            if (h < configH || (h == configH && m < configM)) {
                 createTime = DateUtil.offsetDay(createTime, -1);
             }
             // 排班时间
@@ -660,10 +781,12 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
         }
     }
 
-    private void headTailCorrect(Date beginDate, Map<String, StockBackPlanDetails> stockBackPlanMap) {
+    private void headTailCorrect(PlanConfig planConfig, Date beginDate, Map<String, StockBackPlanDetails> stockBackPlanMap) {
+        List<String> notCategoryCodeList = Arrays.asList(planConfig.getNotCategoryCodeSet().split(","));
+
         List<Map<String, Object>> list = baseMapper.getHeadTailCorrectList(Wrappers.query()
                 .ge("sc.correct_date", beginDate)
-                .notIn("m.CategoryCode", "99.999.", "01.007.")
+                .notIn("m.CategoryCode", notCategoryCodeList)
         );
 
         for (Map<String, Object> map : list) {
@@ -675,7 +798,6 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
             // 排班时间
             Date planDate = DateUtil.beginOfDay((Date) map.get("createTime"));
 
-
             // 排班对象
             StockBackPlanDetails stockBackPlanDetails = stockBackPlanMap.get(jobNo + materialName + planDate.getTime());
             if (stockBackPlanDetails == null) {

+ 15 - 15
hx-service/storage/src/main/java/com/fjhx/task/controller/ScheduleTaskController.java

@@ -51,30 +51,30 @@ public class ScheduleTaskController {
      * 获取排班面积
      */
     @Scheduled(cron = "0 0/5 * * * ?")
-//    @PostConstruct
-    private void getScheduleTask() {
+    // @PostConstruct
+    private void synchronousScheduling() {
         if (BladeApplication.isLocalDev()) {
             return;
         }
-        stockBackPlanService.getScheduleTask(4);
+        stockBackPlanService.synchronousScheduling();
     }
 
-    /**
-     * 统计排班数据
-     */
-    @Scheduled(cron = "30 0/5 * * * ?")
-//    @PostConstruct
-    private void statisticsScheduleDateTask() {
-        if (BladeApplication.isLocalDev()) {
-            return;
-        }
-        stockBackPlanService.statisticsScheduleDateTask(4);
-    }
+//     /**
+//      * 统计排班数据
+//      */
+//     @Scheduled(cron = "30 0/5 * * * ?")
+// //    @PostConstruct
+//     private void statisticsScheduleDateTask() {
+//         if (BladeApplication.isLocalDev()) {
+//             return;
+//         }
+//         stockBackPlanService.statisticsScheduleDateTask(4);
+//     }
 
     /**
      * 盘点
      */
-   @Scheduled(cron = "0 0 1 * * ?")
+    @Scheduled(cron = "0 0 1 * * ?")
 //    @PostConstruct
     private void checkStart() {
         if (BladeApplication.isLocalDev()) {