|
@@ -1,5 +1,6 @@
|
|
|
package com.fjhx.stock.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
@@ -218,14 +219,8 @@ public class StockDetailServiceImpl extends ServiceImpl<StockDetailMapper, Stock
|
|
|
|
|
|
setAppoint(result, list, outputList);
|
|
|
|
|
|
-
|
|
|
- result.setAppointOutputRatio(BigDecimalUtil.init(result.getAppointArea()).divide(result.getPlanArea(), 4).getValue());
|
|
|
-
|
|
|
-
|
|
|
- result.setActualOutputRatio(BigDecimalUtil.init(result.getActualArea()).divide(result.getPlanArea(), 4).getValue());
|
|
|
-
|
|
|
-
|
|
|
- result.setOutputRatioDifference(result.getAppointOutputRatio().subtract(result.getActualOutputRatio()));
|
|
|
+
|
|
|
+ setRatio(result);
|
|
|
|
|
|
return result;
|
|
|
}
|
|
@@ -234,11 +229,10 @@ public class StockDetailServiceImpl extends ServiceImpl<StockDetailMapper, Stock
|
|
|
public List<Map<String, Object>> appointInfo(Map<String, String> condition) {
|
|
|
String pickingType = condition.get("pickingType");
|
|
|
Assert.notEmpty(pickingType, "领料类型不能为空");
|
|
|
-
|
|
|
String materialId = condition.get("materialId");
|
|
|
+ String jobNo = condition.get("jobNo");
|
|
|
|
|
|
QueryWrapper<Object> wrapper = pickingTrackingStatisticsGetWrapper("ss.plan_date", condition);
|
|
|
- String jobNo = condition.get("jobNo");
|
|
|
List<Map<String, Object>> list = baseMapper.getPlanListByUser(wrapper, jobNo);
|
|
|
|
|
|
|
|
@@ -267,11 +261,12 @@ public class StockDetailServiceImpl extends ServiceImpl<StockDetailMapper, Stock
|
|
|
List<String> rfidCodeList = new ArrayList<>();
|
|
|
|
|
|
for (Map.Entry<String, List<Map<String, Object>>> entry : inOutStorageNoMap.entrySet()) {
|
|
|
- String key = entry.getKey();
|
|
|
- List<Map<String, Object>> value = entry.getValue();
|
|
|
+ String key = entry.getKey();
|
|
|
+ List<Map<String, Object>> value = entry.getValue();
|
|
|
|
|
|
- String rfid = collect.get(key);
|
|
|
+ String rfid = collect.get(key);
|
|
|
|
|
|
+
|
|
|
List<String> rfidCode = value.stream().map(item -> item.get("rfidCode").toString()).collect(Collectors.toList());
|
|
|
|
|
|
if (pickingType.equals("1")) {
|
|
@@ -300,6 +295,101 @@ public class StockDetailServiceImpl extends ServiceImpl<StockDetailMapper, Stock
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public List<Map<String, Object>> pickingTrackingList(Map<String, String> condition) {
|
|
|
+
|
|
|
+
|
|
|
+ QueryWrapper<Object> wrapper = pickingTrackingStatisticsGetWrapper("ss.plan_date", condition);
|
|
|
+ String jobNo = condition.get("jobNo");
|
|
|
+ List<Map<String, Object>> list = baseMapper.getPlanListByUser(wrapper, jobNo);
|
|
|
+
|
|
|
+ if (list.size() == 0) {
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ Map<String, List<Map<String, Object>>> listGroupCode = list.stream()
|
|
|
+ .collect(Collectors.groupingBy(item -> item.get("code").toString()));
|
|
|
+
|
|
|
+
|
|
|
+ List<Map<String, Object>> materialList = baseMapper.getMaterialWidthByCode(
|
|
|
+ Wrappers.query().in("m.Code", listGroupCode.keySet()));
|
|
|
+
|
|
|
+
|
|
|
+ Map<String, List<Map<String, Object>>> materialGroupName = materialList.stream().collect(Collectors.groupingBy(
|
|
|
+ item -> item.get("name").toString().split("-")[0]));
|
|
|
+
|
|
|
+ List<Map<String, Object>> result = new ArrayList<>();
|
|
|
+
|
|
|
+
|
|
|
+ Map<String, Float> codeWidthMap = materialList.stream().collect(Collectors.toMap(
|
|
|
+ item -> item.get("code").toString(),
|
|
|
+ item -> (Float) item.get("width")
|
|
|
+ ));
|
|
|
+
|
|
|
+ for (Map.Entry<String, List<Map<String, Object>>> entry : materialGroupName.entrySet()) {
|
|
|
+ String key = entry.getKey();
|
|
|
+ List<Map<String, Object>> value = entry.getValue();
|
|
|
+
|
|
|
+ for (Map<String, Object> map : value) {
|
|
|
+ String code = map.get("code").toString();
|
|
|
+ List<Map<String, Object>> listByCode = listGroupCode.get(code);
|
|
|
+
|
|
|
+ PickingTrackingNumStatisticsResult temp = new PickingTrackingNumStatisticsResult();
|
|
|
+
|
|
|
+
|
|
|
+ setPlan(temp, listByCode, codeWidthMap);
|
|
|
+
|
|
|
+
|
|
|
+ List<String> inOutStorageNo = listByCode.stream().filter(item -> ObjectUtil.isNotEmpty(item.get("inOutStorageNo")))
|
|
|
+ .map(item -> item.get("inOutStorageNo").toString()).distinct().collect(Collectors.toList());
|
|
|
+
|
|
|
+
|
|
|
+ if (inOutStorageNo.size() == 0) {
|
|
|
+ map.putAll(BeanUtil.beanToMap(temp));
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ List<Map<String, Object>> outputList = baseMapper.getOutputList(
|
|
|
+ Wrappers.query().in("si.InOutStorageNo", inOutStorageNo));
|
|
|
+
|
|
|
+
|
|
|
+ setActual(temp, outputList, codeWidthMap);
|
|
|
+
|
|
|
+
|
|
|
+ setAppoint(temp, listByCode, outputList);
|
|
|
+
|
|
|
+
|
|
|
+ setRatio(temp);
|
|
|
+
|
|
|
+ map.putAll(BeanUtil.beanToMap(temp));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ HashMap<String, Object> map = new HashMap<>();
|
|
|
+ map.put(key, value);
|
|
|
+ result.add(map);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * 赋值比例相关属性
|
|
|
+ */
|
|
|
+ private void setRatio(PickingTrackingNumStatisticsResult result) {
|
|
|
+
|
|
|
+ result.setAppointOutputRatio(BigDecimalUtil.init(result.getAppointArea()).divide(result.getPlanArea(), 4).getValue());
|
|
|
+
|
|
|
+
|
|
|
+ result.setActualOutputRatio(BigDecimalUtil.init(result.getActualArea()).divide(result.getPlanArea(), 4).getValue());
|
|
|
+
|
|
|
+
|
|
|
+ result.setOutputRatioDifference(result.getAppointOutputRatio().subtract(result.getActualOutputRatio()));
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
* 赋值实际领料
|
|
|
*/
|