|
@@ -5,7 +5,6 @@ import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
-import com.fjhx.base.Condition;
|
|
|
import com.fjhx.constants.StatusConstant;
|
|
|
import com.fjhx.entity.stock.StockBackPlan;
|
|
|
import com.fjhx.entity.stock.StockBackPlanDetails;
|
|
@@ -110,13 +109,13 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@Override
|
|
|
- public void statisticsScheduleDateTask() {
|
|
|
+ public void statisticsScheduleDateTask(int offset) {
|
|
|
|
|
|
synchronized (obj) {
|
|
|
|
|
|
- // 统计近3天排班
|
|
|
+ // 统计近 offset 天排班
|
|
|
Date endDate = new Date();
|
|
|
- Date beginDate = DateUtil.beginOfDay(DateUtil.offsetDay(endDate, -2));
|
|
|
+ Date beginDate = DateUtil.beginOfDay(DateUtil.offsetDay(endDate, -offset));
|
|
|
|
|
|
List<StockBackPlan> list = list(Wrappers.<StockBackPlan>lambdaQuery()
|
|
|
.between(StockBackPlan::getPlanTime, beginDate, endDate));
|
|
@@ -138,9 +137,15 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
|
|
|
// 查询出库
|
|
|
issue(beginDate, stockBackPlanMap);
|
|
|
|
|
|
- // 查询回仓
|
|
|
+ // 转印部门出库
|
|
|
+ issueA008(beginDate, stockBackPlanMap);
|
|
|
+
|
|
|
+ // 回仓
|
|
|
returnWarehouse(beginDate, stockBackPlanMap);
|
|
|
|
|
|
+ // 转印部门回仓
|
|
|
+ returnWarehouseA008(beginDate, stockBackPlanMap);
|
|
|
+
|
|
|
// 物料修正
|
|
|
correct(beginDate, stockBackPlanMap);
|
|
|
|
|
@@ -156,8 +161,6 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
|
|
|
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
private StockBackPlanDetails createStockBackPlanDetails(String jobNo, String materialName, Date planDate) {
|
|
|
StockBackPlanDetails stockBackPlanDetails = new StockBackPlanDetails();
|
|
|
stockBackPlanDetails.setPlanMaterial(materialName);
|
|
@@ -234,7 +237,7 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
|
|
|
.ge("swd.CreatedTime", DateUtil.format(beginDate, "yyyy-MM-dd 7:30:00"))
|
|
|
.in("swd.StockChangeType", 20, 23)
|
|
|
.eq("uu.IsDelete", 0)
|
|
|
- .in("uu.DepartmentID", "A007", "A008", "A012")
|
|
|
+ .in("uu.DepartmentID", "A007", "A012")
|
|
|
.likeRight("m.Code", "01.")
|
|
|
.isNotNull("uu.JobNo"));
|
|
|
|
|
@@ -287,6 +290,68 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private void issueA008(Date beginDate, Map<String, StockBackPlanDetails> stockBackPlanMap) {
|
|
|
+
|
|
|
+ List<Map<String, Object>> pickingList = baseMapper.getWater(Wrappers.query()
|
|
|
+ .ge("swd.CreatedTime", DateUtil.format(beginDate, "yyyy-MM-dd 9:00:00"))
|
|
|
+ .in("swd.StockChangeType", 20, 23)
|
|
|
+ .eq("uu.IsDelete", 0)
|
|
|
+ .eq("uu.DepartmentID", "A008")
|
|
|
+ .likeRight("m.Code", "01.")
|
|
|
+ .isNotNull("uu.JobNo"));
|
|
|
+
|
|
|
+ for (Map<String, Object> map : pickingList) {
|
|
|
+
|
|
|
+ // 出库时间
|
|
|
+ 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 < 7 || (h == 7 && m <= 30)) {
|
|
|
+ if (h < 9) {
|
|
|
+ createTime = DateUtil.offsetDay(createTime, -1);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 排班时间
|
|
|
+ Date planDate = DateUtil.beginOfDay(createTime);
|
|
|
+ // 工号
|
|
|
+ String jobNo = map.get("jobNo").toString();
|
|
|
+ // 物料名称
|
|
|
+ String materialName = map.get("materialName").toString().split("-")[0];
|
|
|
+ // 数量
|
|
|
+ BigDecimal changeNum = BigDecimalUtil.keepDecimals(map.get("changeNum"));
|
|
|
+ // 单价
|
|
|
+ BigDecimal price = BigDecimalUtil.keepDecimals(map.get("price"));
|
|
|
+ // 门幅
|
|
|
+ BigDecimal width = BigDecimalUtil.keepDecimals(map.get("width"));
|
|
|
+
|
|
|
+ // 排班对象
|
|
|
+ StockBackPlanDetails stockBackPlanDetails = stockBackPlanMap.get(jobNo + materialName + planDate);
|
|
|
+ if (stockBackPlanDetails == null) {
|
|
|
+ stockBackPlanDetails = createStockBackPlanDetails(jobNo, materialName, planDate);
|
|
|
+ stockBackPlanMap.put(jobNo + materialName + planDate, stockBackPlanDetails);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 金额
|
|
|
+ stockBackPlanDetails.setPickingMoney(
|
|
|
+ BigDecimalUtil.init(stockBackPlanDetails.getPickingMoney()).add(price.multiply(changeNum)).getValue(2));
|
|
|
+
|
|
|
+ // 数量
|
|
|
+ stockBackPlanDetails.setPickingNum(stockBackPlanDetails.getPickingNum() + 1);
|
|
|
+
|
|
|
+ // 米
|
|
|
+ stockBackPlanDetails.setPickingMeters(stockBackPlanDetails.getPickingMeters().add(changeNum));
|
|
|
+
|
|
|
+ // 面积
|
|
|
+ stockBackPlanDetails.setPickingArea(stockBackPlanDetails.getPickingArea().add(
|
|
|
+ BigDecimalUtil.init(changeNum).multiply(width).divide(100, 2).getValue()));
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 回仓
|
|
|
*/
|
|
@@ -294,6 +359,7 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
|
|
|
List<Map<String, Object>> backList = baseMapper.getReturnWarehouse(Wrappers.query()
|
|
|
.ge("sb.checker_time", DateUtil.format(beginDate, "yyyy-MM-dd 10:00:00"))
|
|
|
.eq("uu.IsDelete", 0)
|
|
|
+ .in("uu.DepartmentID", "A007", "A012")
|
|
|
.isNotNull("uu.JobNo")
|
|
|
.likeRight("m.Code", "01."));
|
|
|
|
|
@@ -344,6 +410,64 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ private void returnWarehouseA008(Date beginDate, Map<String, StockBackPlanDetails> stockBackPlanMap) {
|
|
|
+ List<Map<String, Object>> backList = baseMapper.getReturnWarehouse(Wrappers.query()
|
|
|
+ .ge("sb.checker_time", DateUtil.format(beginDate, "yyyy-MM-dd 09:00:00"))
|
|
|
+ .eq("uu.IsDelete", 0)
|
|
|
+ .eq("uu.DepartmentID", "A008")
|
|
|
+ .isNotNull("uu.JobNo")
|
|
|
+ .likeRight("m.Code", "01."));
|
|
|
+
|
|
|
+ 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"));
|
|
|
+ // 小于9点算前一日
|
|
|
+ if (h < 9) {
|
|
|
+ createTime = DateUtil.offsetDay(createTime, -1);
|
|
|
+ }
|
|
|
+ // 排班时间
|
|
|
+ Date planDate = DateUtil.beginOfDay(createTime);
|
|
|
+ // 工号
|
|
|
+ String jobNo = map.get("jobNo").toString();
|
|
|
+ // 物料名称
|
|
|
+ String materialName = map.get("materialName").toString().split("-")[0];
|
|
|
+ // 数量
|
|
|
+ BigDecimal changeNum = BigDecimalUtil.keepDecimals(map.get("changeNum"));
|
|
|
+ // 单价
|
|
|
+ BigDecimal price = BigDecimalUtil.keepDecimals(map.get("price"));
|
|
|
+ // 门幅
|
|
|
+ BigDecimal width = BigDecimalUtil.keepDecimals(map.get("width"));
|
|
|
+
|
|
|
+ // 排班对象
|
|
|
+ StockBackPlanDetails stockBackPlanDetails = stockBackPlanMap.get(jobNo + materialName + planDate);
|
|
|
+ if (stockBackPlanDetails == null) {
|
|
|
+ stockBackPlanDetails = createStockBackPlanDetails(jobNo, materialName, planDate);
|
|
|
+ stockBackPlanMap.put(jobNo + materialName + planDate, stockBackPlanDetails);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 金额
|
|
|
+ stockBackPlanDetails.setBackMoney(
|
|
|
+ BigDecimalUtil.init(stockBackPlanDetails.getBackMoney()).add(price.multiply(changeNum)).getValue(2));
|
|
|
+
|
|
|
+ // 数量
|
|
|
+ stockBackPlanDetails.setBackNum(stockBackPlanDetails.getBackNum() + 1);
|
|
|
+
|
|
|
+ // 米
|
|
|
+ stockBackPlanDetails.setBackMeters(stockBackPlanDetails.getBackMeters().add(changeNum));
|
|
|
+
|
|
|
+ // 面积
|
|
|
+ stockBackPlanDetails.setBackArea(stockBackPlanDetails.getBackArea().add(
|
|
|
+ BigDecimalUtil.init(changeNum).multiply(width).divide(100, 2).getValue()));
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 修正
|
|
|
*/
|