|
@@ -125,6 +125,80 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
|
|
|
.between(StockBackPlanDetails::getPlanTime, beginDate, endDate));
|
|
|
|
|
|
// 查询出库
|
|
|
+ issue(beginDate, stockBackPlanMap);
|
|
|
+
|
|
|
+ // 查询回仓
|
|
|
+ returnWarehouse(beginDate, stockBackPlanMap);
|
|
|
+
|
|
|
+ // 物料修正
|
|
|
+ correct(beginDate, stockBackPlanMap);
|
|
|
+
|
|
|
+ // 转入
|
|
|
+ transferIn(beginDate, stockBackPlanMap);
|
|
|
+
|
|
|
+ // 转出
|
|
|
+ transferOut(beginDate, stockBackPlanMap);
|
|
|
+
|
|
|
+ stockBackPlanDetailsService.saveBatch(new ArrayList<>(stockBackPlanMap.values()));
|
|
|
+ }
|
|
|
+
|
|
|
+ private StockBackPlanDetails createStockBackPlanDetails(String jobNo, String materialName, Date planDate) {
|
|
|
+ StockBackPlanDetails stockBackPlanDetails = new StockBackPlanDetails();
|
|
|
+ stockBackPlanDetails.setPlanMaterial(materialName);
|
|
|
+ stockBackPlanDetails.setPlanTime(planDate);
|
|
|
+ stockBackPlanDetails.setQuantity(BigDecimal.ZERO);
|
|
|
+ stockBackPlanDetails.setJobNo(jobNo);
|
|
|
+ stockBackPlanDetails.setCorrectArea(BigDecimal.ZERO);
|
|
|
+ stockBackPlanDetails.setPickingMoney(BigDecimal.ZERO);
|
|
|
+ stockBackPlanDetails.setPickingNum(0);
|
|
|
+ stockBackPlanDetails.setPickingMeters(BigDecimal.ZERO);
|
|
|
+ stockBackPlanDetails.setPickingArea(BigDecimal.ZERO);
|
|
|
+ stockBackPlanDetails.setBackMoney(BigDecimal.ZERO);
|
|
|
+ stockBackPlanDetails.setBackNum(0);
|
|
|
+ stockBackPlanDetails.setBackMeters(BigDecimal.ZERO);
|
|
|
+ stockBackPlanDetails.setBackArea(BigDecimal.ZERO);
|
|
|
+ return stockBackPlanDetails;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取token
|
|
|
+ */
|
|
|
+ private String getToken() {
|
|
|
+ String url = "http://mes.cfmfactory.com:8087/portal/getAccessTokenAction.do?AppId=1&AppSecret=a2b1c2d3";
|
|
|
+ String result = restTemplate.getForEntity(url, String.class).getBody();
|
|
|
+ if (ObjectUtil.isEmpty(result)) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(result);
|
|
|
+ return jsonObject.getString("token");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 赋值排班数据
|
|
|
+ */
|
|
|
+ private void addOrEditFlagMap(Map<String, StockBackPlan> flagMap, String jobNo, BigDecimal plantotalsquare, String planDate, String material, Date date) {
|
|
|
+ String key = jobNo + material + planDate;
|
|
|
+ StockBackPlan stockBackPlan = flagMap.get(key);
|
|
|
+
|
|
|
+ if (stockBackPlan == null) {
|
|
|
+ stockBackPlan = new StockBackPlan();
|
|
|
+ stockBackPlan.setJobNo(jobNo);
|
|
|
+ stockBackPlan.setPlanMaterial(material.trim());
|
|
|
+ stockBackPlan.setPlanTime(DateUtil.parse(planDate));
|
|
|
+ stockBackPlan.setQuantity(plantotalsquare);
|
|
|
+ stockBackPlan.setCreateTime(date);
|
|
|
+
|
|
|
+ flagMap.put(key, stockBackPlan);
|
|
|
+ } else {
|
|
|
+ BigDecimal quantity = stockBackPlan.getQuantity();
|
|
|
+ stockBackPlan.setQuantity(quantity.add(plantotalsquare));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 出库
|
|
|
+ */
|
|
|
+ private void issue(Date beginDate, Map<String, StockBackPlanDetails> stockBackPlanMap) {
|
|
|
List<Map<String, Object>> pickingList = baseMapper.getWater(Wrappers.query()
|
|
|
.ge("swd.CreatedTime", DateUtil.format(beginDate, "yyyy-MM-dd 7:30:00"))
|
|
|
.in("swd.StockChangeType", 20, 23)
|
|
@@ -132,13 +206,6 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
|
|
|
.in("uu.DepartmentID", "A007", "A008", "A012")
|
|
|
.likeRight("m.Code", "01.")
|
|
|
.isNotNull("uu.JobNo"));
|
|
|
- // 转仓
|
|
|
- List<Map<String, Object>> transferPickingList = baseMapper.getTransferPickingList(Wrappers.query()
|
|
|
- .ge("st.submit_time", DateUtil.format(beginDate, "yyyy-MM-dd 7:30:00"))
|
|
|
- .eq("st.status", StatusConstant.YES)
|
|
|
- .eq("st.del_flag", 0)
|
|
|
- );
|
|
|
- pickingList.addAll(transferPickingList);
|
|
|
|
|
|
for (Map<String, Object> map : pickingList) {
|
|
|
|
|
@@ -187,22 +254,18 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
|
|
|
stockBackPlanDetails.setPickingArea(stockBackPlanDetails.getPickingArea().add(
|
|
|
BigDecimalUtil.init(changeNum).multiply(width).divide(100, 2).getValue()));
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- // 查询回仓
|
|
|
+ /**
|
|
|
+ * 回仓
|
|
|
+ */
|
|
|
+ private void returnWarehouse(Date beginDate, Map<String, StockBackPlanDetails> stockBackPlanMap) {
|
|
|
List<Map<String, Object>> backList = baseMapper.getWater(Wrappers.query()
|
|
|
.ge("swd.CreatedTime", DateUtil.format(beginDate, "yyyy-MM-dd 10:00:00"))
|
|
|
.eq("swd.StockChangeType", 16)
|
|
|
.likeRight("m.Code", "01.")
|
|
|
.isNotNull("uu.JobNo"));
|
|
|
|
|
|
- // 转仓
|
|
|
- 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)
|
|
|
- );
|
|
|
- backList.addAll(transferBackList);
|
|
|
-
|
|
|
for (Map<String, Object> map : backList) {
|
|
|
|
|
|
// 出库时间
|
|
@@ -248,8 +311,12 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
|
|
|
stockBackPlanDetails.setBackArea(stockBackPlanDetails.getBackArea().add(
|
|
|
BigDecimalUtil.init(changeNum).multiply(width).divide(100, 2).getValue()));
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- // 物料修正
|
|
|
+ /**
|
|
|
+ * 修正
|
|
|
+ */
|
|
|
+ private void correct(Date beginDate, Map<String, StockBackPlanDetails> stockBackPlanMap) {
|
|
|
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"));
|
|
@@ -274,60 +341,123 @@ public class StockBackPlanServiceImpl extends ServiceImpl<StockBackPlanMapper, S
|
|
|
// 金额
|
|
|
stockBackPlanDetails.setCorrectArea(stockBackPlanDetails.getCorrectArea().add(correctArea));
|
|
|
}
|
|
|
-
|
|
|
- stockBackPlanDetailsService.saveBatch(new ArrayList<>(stockBackPlanMap.values()));
|
|
|
- }
|
|
|
-
|
|
|
- private StockBackPlanDetails createStockBackPlanDetails(String jobNo, String materialName, Date planDate) {
|
|
|
- StockBackPlanDetails stockBackPlanDetails = new StockBackPlanDetails();
|
|
|
- stockBackPlanDetails.setPlanMaterial(materialName);
|
|
|
- stockBackPlanDetails.setPlanTime(planDate);
|
|
|
- stockBackPlanDetails.setQuantity(BigDecimal.ZERO);
|
|
|
- stockBackPlanDetails.setJobNo(jobNo);
|
|
|
- stockBackPlanDetails.setCorrectArea(BigDecimal.ZERO);
|
|
|
- stockBackPlanDetails.setPickingMoney(BigDecimal.ZERO);
|
|
|
- stockBackPlanDetails.setPickingNum(0);
|
|
|
- stockBackPlanDetails.setPickingMeters(BigDecimal.ZERO);
|
|
|
- stockBackPlanDetails.setPickingArea(BigDecimal.ZERO);
|
|
|
- stockBackPlanDetails.setBackMoney(BigDecimal.ZERO);
|
|
|
- stockBackPlanDetails.setBackNum(0);
|
|
|
- stockBackPlanDetails.setBackMeters(BigDecimal.ZERO);
|
|
|
- stockBackPlanDetails.setBackArea(BigDecimal.ZERO);
|
|
|
- return stockBackPlanDetails;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 获取token
|
|
|
+ * 转入
|
|
|
*/
|
|
|
- private String getToken() {
|
|
|
- String url = "http://mes.cfmfactory.com:8087/portal/getAccessTokenAction.do?AppId=1&AppSecret=a2b1c2d3";
|
|
|
- String result = restTemplate.getForEntity(url, String.class).getBody();
|
|
|
- if (ObjectUtil.isEmpty(result)) {
|
|
|
- return null;
|
|
|
+ private void transferIn(Date beginDate, Map<String, StockBackPlanDetails> stockBackPlanMap) {
|
|
|
+ List<Map<String, Object>> transferPickingList = baseMapper.getTransferPickingList(Wrappers.query()
|
|
|
+ .ge("st.submit_time", DateUtil.format(beginDate, "yyyy-MM-dd 7:30:00"))
|
|
|
+ .eq("st.status", StatusConstant.YES)
|
|
|
+ .eq("st.del_flag", 0)
|
|
|
+ );
|
|
|
+
|
|
|
+ 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 < 7 || (h == 7 && m <= 30)) {
|
|
|
+ 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.setTransferInMoney(
|
|
|
+ BigDecimalUtil.init(stockBackPlanDetails.getPickingMoney()).add(price.multiply(changeNum)).getValue(2));
|
|
|
+
|
|
|
+ // 数量
|
|
|
+ stockBackPlanDetails.setTransferInNum(stockBackPlanDetails.getPickingNum() + 1);
|
|
|
+
|
|
|
+ // 米
|
|
|
+ stockBackPlanDetails.setTransferInMeters(stockBackPlanDetails.getPickingMeters().add(changeNum));
|
|
|
+
|
|
|
+ // 面积
|
|
|
+ stockBackPlanDetails.setTransferInArea(stockBackPlanDetails.getPickingArea().add(
|
|
|
+ BigDecimalUtil.init(changeNum).multiply(width).divide(100, 2).getValue()));
|
|
|
}
|
|
|
- JSONObject jsonObject = JSONObject.parseObject(result);
|
|
|
- return jsonObject.getString("token");
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 赋值排班数据
|
|
|
+ * 转出
|
|
|
*/
|
|
|
- private void addOrEditFlagMap(Map<String, StockBackPlan> flagMap, String jobNo, BigDecimal plantotalsquare, String planDate, String material, Date date) {
|
|
|
- String key = jobNo + material + planDate;
|
|
|
- StockBackPlan stockBackPlan = flagMap.get(key);
|
|
|
+ private void transferOut(Date beginDate, Map<String, StockBackPlanDetails> stockBackPlanMap) {
|
|
|
|
|
|
- if (stockBackPlan == null) {
|
|
|
- stockBackPlan = new StockBackPlan();
|
|
|
- stockBackPlan.setJobNo(jobNo);
|
|
|
- stockBackPlan.setPlanMaterial(material.trim());
|
|
|
- stockBackPlan.setPlanTime(DateUtil.parse(planDate));
|
|
|
- stockBackPlan.setQuantity(plantotalsquare);
|
|
|
- stockBackPlan.setCreateTime(date);
|
|
|
+ List<Map<String, Object>> transferBackList = baseMapper.getTransferBackList(Wrappers.query()
|
|
|
+ .ge("st.submit_time", DateUtil.format(beginDate, "yyyy-MM-dd 07:30:00"))
|
|
|
+ .eq("st.status", StatusConstant.YES)
|
|
|
+ .eq("st.del_flag", 0)
|
|
|
+ );
|
|
|
|
|
|
- flagMap.put(key, stockBackPlan);
|
|
|
- } else {
|
|
|
- BigDecimal quantity = stockBackPlan.getQuantity();
|
|
|
- stockBackPlan.setQuantity(quantity.add(plantotalsquare));
|
|
|
+ for (Map<String, Object> map : transferBackList) {
|
|
|
+
|
|
|
+ // 出库时间
|
|
|
+ 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)) {
|
|
|
+ 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.setTransferOutMoney(
|
|
|
+ BigDecimalUtil.init(stockBackPlanDetails.getBackMoney()).add(price.multiply(changeNum)).getValue(2));
|
|
|
+
|
|
|
+ // 数量
|
|
|
+ stockBackPlanDetails.setTransferOutNum(stockBackPlanDetails.getBackNum() + 1);
|
|
|
+
|
|
|
+ // 米
|
|
|
+ stockBackPlanDetails.setTransferOutMeters(stockBackPlanDetails.getBackMeters().add(changeNum));
|
|
|
+
|
|
|
+ // 面积
|
|
|
+ stockBackPlanDetails.setTransferOutArea(stockBackPlanDetails.getBackArea().add(
|
|
|
+ BigDecimalUtil.init(changeNum).multiply(width).divide(100, 2).getValue()));
|
|
|
}
|
|
|
}
|
|
|
|