add:增加组盘导入需同步ERP无物料信息的物料
This commit is contained in:
@@ -3,22 +3,22 @@ package org.nl.wms.md_manage.group_dick.service.impl;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.poi.excel.ExcelReader;
|
||||
import cn.hutool.poi.excel.ExcelUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.github.pagehelper.Page;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.kingdee.bos.webapi.sdk.K3CloudApi;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.TableDataInfo;
|
||||
import org.nl.common.domain.constant.DictConstantPool;
|
||||
import org.nl.common.domain.entity.PageQuery;
|
||||
import org.nl.common.domain.exception.BadRequestException;
|
||||
import org.nl.common.enums.StatusEnum;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.RedissonUtils;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.common.utils.*;
|
||||
import org.nl.wms.base_manage.material.service.IMdMeMaterialbaseService;
|
||||
import org.nl.wms.base_manage.material.service.dao.MdMeMaterialbase;
|
||||
import org.nl.wms.base_manage.vehicle.service.IBmVehicleInfoService;
|
||||
@@ -32,6 +32,9 @@ import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater;
|
||||
import org.nl.wms.md_manage.vehicleMater.service.dto.MdPbVehicleMaterVo;
|
||||
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
|
||||
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
|
||||
import org.nl.wms.sync_manage.service.form_mapping.dao.SyncFormMapping;
|
||||
import org.nl.wms.sync_manage.service.form_mapping.impl.SyncFormMappingServiceImpl;
|
||||
import org.nl.wms.system_manage.service.quartz.task.SyncErpBillsScheduleService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -59,7 +62,8 @@ import java.util.stream.Collectors;
|
||||
@Service
|
||||
public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGruopDick> implements IMdGruopDickService {
|
||||
|
||||
|
||||
@Autowired
|
||||
private SyncFormMappingServiceImpl syncFormMappingServiceImpl;
|
||||
@Autowired
|
||||
private IMdPbVehicleMaterService iMdPbVehicleMaterService;
|
||||
@Autowired
|
||||
@@ -68,6 +72,10 @@ public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGru
|
||||
private IBmVehicleInfoService iBmVehicleInfoService;
|
||||
@Autowired
|
||||
private IStIvtStructattrService iStIvtStructattrService;
|
||||
@Autowired
|
||||
private ErpServiceUtils erpServiceUtils;
|
||||
@Autowired
|
||||
private SyncErpBillsScheduleService syncErpBillsScheduleService;
|
||||
|
||||
@Override
|
||||
public Object queryAll(GroupDickQuery query, PageQuery pageQuery) {
|
||||
@@ -238,7 +246,14 @@ public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGru
|
||||
}
|
||||
MdMeMaterialbase materialCode = mdMeMaterialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>().eq("material_code", material_code));
|
||||
if (materialCode == null) {
|
||||
throw new BadRequestException("第" + (i + 1) +"行,"+material_code+ "物料编码不存在");
|
||||
K3CloudApi k3CloudApi = erpServiceUtils.getCloudApi();
|
||||
SyncFormMapping syncFormMapping = syncFormMappingServiceImpl.getOne(new LambdaQueryWrapper<SyncFormMapping>().in(SyncFormMapping::getForm_type, "BD_MATERIAL"));
|
||||
String materialMappingString = JSON.toJSONString(syncFormMapping.getMapping_json());
|
||||
boolean queryMaterialInfo = syncErpBillsScheduleService.queryMaterialInfo(materialMappingString, "BD_MATERIAL", false, material_code, k3CloudApi);
|
||||
if (!queryMaterialInfo) {
|
||||
throw new BadRequestException("第" + (i + 1) + "行," + material_code + "在ERP系统上检索不到相关物料信息,请检查!");
|
||||
}
|
||||
materialCode = mdMeMaterialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>().eq("material_code", material_code));
|
||||
}
|
||||
materialCode.setSingle_weight(new BigDecimal(single_weight));
|
||||
//更新单重
|
||||
|
||||
@@ -179,29 +179,42 @@ public class CockpitServiceImpl implements CockpitService {
|
||||
obj4.put("total", total4);
|
||||
obj4.put("box", box4);
|
||||
obj4.put("time", time4);
|
||||
List<TaskInfo> taskList = cockpitMapper.getTaskListByDays(0);
|
||||
List<TaskInfo> taskList1 = cockpitMapper.getTaskListByDays(0);
|
||||
List<TaskInfo> taskList = new ArrayList<>(taskList1.stream()
|
||||
.collect(Collectors.toMap(
|
||||
task -> task.getVehicle_code() + "_" + task.getCreate_time(),
|
||||
task -> task,
|
||||
(existing, replacement) -> existing
|
||||
))
|
||||
.values());
|
||||
if (ObjectUtil.isNotEmpty(taskList)) {
|
||||
//料箱库入库
|
||||
List<TaskInfo> stockList1 = taskList.stream()
|
||||
.filter(r -> Integer.parseInt(r.getTask_type()) <= 14 && "FStockId".equals(r.getStor_code()))
|
||||
.filter(r -> Integer.parseInt(r.getTask_type()) <= 12 && "FStockId".equals(r.getStor_code()))
|
||||
.collect(Collectors.toList());
|
||||
if (ObjectUtil.isNotEmpty(stockList1)) {
|
||||
obj1 = getElapsedTime(obj1, stockList1);
|
||||
}
|
||||
//料箱库出库
|
||||
List<TaskInfo> stockList2 = taskList.stream()
|
||||
.filter(r -> Integer.parseInt(r.getTask_type()) >= 20 && Integer.parseInt(r.getTask_type()) <= 25 && "FStockId".equals(r.getStor_code()))
|
||||
.filter(r -> (Integer.parseInt(r.getTask_type()) >= 20 && Integer.parseInt(r.getTask_type()) <= 25) && "FStockId".equals(r.getStor_code()) && Integer.parseInt(r.getTask_type()) != 23)
|
||||
.collect(Collectors.toList());
|
||||
if (ObjectUtil.isNotEmpty(stockList2)) {
|
||||
obj2 = getElapsedTime(obj2, stockList2);
|
||||
}
|
||||
//托盘库入库
|
||||
List<TaskInfo> stockList3 = taskList.stream().filter(r -> "30".equals(r.getTask_type()) && "FStockPallet".equals(r.getStor_code())).collect(Collectors.toList());
|
||||
List<TaskInfo> stockList3 = taskList.stream().filter(r -> (Integer.parseInt(r.getTask_type()) <= 14||Integer.parseInt(r.getTask_type()) == 30)&&r.getVehicle_code().contains("T")).collect(Collectors.toList());
|
||||
if (ObjectUtil.isNotEmpty(stockList3)) {
|
||||
obj3 = getElapsedTime(obj3, stockList3);
|
||||
}
|
||||
//托盘库出库
|
||||
List<TaskInfo> stockList4 = taskList.stream().filter(r -> "40".equals(r.getTask_type()) && "FStockPallet".equals(r.getStor_code())).collect(Collectors.toList());
|
||||
List<TaskInfo> stockList4 = taskList.stream()
|
||||
.filter(r ->
|
||||
((Integer.parseInt(r.getTask_type()) >= 20 && Integer.parseInt(r.getTask_type()) <= 22)
|
||||
|| Integer.parseInt(r.getTask_type()) == 40)
|
||||
&& r.getVehicle_code().contains("T")
|
||||
)
|
||||
.collect(Collectors.toList());
|
||||
if (ObjectUtil.isNotEmpty(stockList4)) {
|
||||
obj4 = getElapsedTime(obj4, stockList4);
|
||||
}
|
||||
@@ -268,19 +281,31 @@ public class CockpitServiceImpl implements CockpitService {
|
||||
List<Map<String, Object>> lx_out_default = new ArrayList<>();
|
||||
List<Map<String, Object>> tp_in_default = new ArrayList<>();
|
||||
List<Map<String, Object>> tp_out_default = new ArrayList<>();
|
||||
List<TaskInfo> result = cockpitMapper.getTaskCountsByDays();
|
||||
List<TaskInfo> result1= cockpitMapper.getTaskCountsByDays();
|
||||
List<TaskInfo> result = new ArrayList<>(result1.stream()
|
||||
.collect(Collectors.toMap(
|
||||
task -> task.getVehicle_code() + "_" + task.getCreate_time(),
|
||||
task -> task,
|
||||
(existing, replacement) -> existing
|
||||
))
|
||||
.values());
|
||||
//料箱库入库
|
||||
List<TaskInfo> stockList1 = result.stream()
|
||||
.filter(r -> Integer.parseInt(r.getTask_type()) <= 14 && "FStockId".equals(r.getStor_code()))
|
||||
.filter(r -> Integer.parseInt(r.getTask_type()) <= 12 && "FStockId".equals(r.getStor_code()))
|
||||
.collect(Collectors.toList());
|
||||
//料箱库出库
|
||||
List<TaskInfo> stockList2 = result.stream()
|
||||
.filter(r -> Integer.parseInt(r.getTask_type()) >= 20 && Integer.parseInt(r.getTask_type()) <= 25 && "FStockId".equals(r.getStor_code()))
|
||||
.filter(r -> Integer.parseInt(r.getTask_type()) >= 20 && Integer.parseInt(r.getTask_type()) <= 22 && "FStockId".equals(r.getStor_code()))
|
||||
.collect(Collectors.toList());
|
||||
//托盘库入库
|
||||
List<TaskInfo> stockList3 = result.stream().filter(r -> "30".equals(r.getTask_type()) && "FStockPallet".equals(r.getStor_code())).collect(Collectors.toList());
|
||||
List<TaskInfo> stockList3 = result.stream().filter(r -> (Integer.parseInt(r.getTask_type()) <= 14||Integer.parseInt(r.getTask_type()) == 30)&&"T".contains(r.getVehicle_code())).collect(Collectors.toList());
|
||||
//托盘库出库
|
||||
List<TaskInfo> stockList4 = result.stream().filter(r -> "40".equals(r.getTask_type()) && "FStockPallet".equals(r.getStor_code())).collect(Collectors.toList());
|
||||
List<TaskInfo> stockList4 = result.stream()
|
||||
.filter(r ->
|
||||
((Integer.parseInt(r.getTask_type()) >= 20 && Integer.parseInt(r.getTask_type()) <= 22)
|
||||
|| Integer.parseInt(r.getTask_type()) == 40)
|
||||
&& "T".contains(r.getVehicle_code())
|
||||
).collect(Collectors.toList());
|
||||
//计算每天的数量
|
||||
getWeekWorkStatistics(stockList1, lx_in_default, 7);
|
||||
getWeekWorkStatistics(stockList2, lx_out_default, 7);
|
||||
@@ -554,8 +579,14 @@ public class CockpitServiceImpl implements CockpitService {
|
||||
private static JSONObject getElapsedTime(JSONObject item, List<TaskInfo> stockList1) {
|
||||
double totalHours = 0;
|
||||
//计算数量
|
||||
BigDecimal total = stockList1.stream().filter(r -> StringUtils.isNotBlank(r.getUpdate_time())).map(TaskInfo::getQty)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add).setScale(0, RoundingMode.HALF_UP);
|
||||
BigDecimal total = stockList1.stream()
|
||||
.filter(r -> StringUtils.isNotBlank(r.getUpdate_time()))
|
||||
.map(r -> {
|
||||
BigDecimal qty = r.getQty();
|
||||
return (qty == null || BigDecimal.ZERO.compareTo(qty) == 0) ? BigDecimal.ONE : qty;
|
||||
})
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add)
|
||||
.setScale(0, RoundingMode.HALF_UP);
|
||||
item.put("total", total);
|
||||
//计算箱数
|
||||
int box = stockList1.stream().filter(r -> StringUtils.isNotBlank(r.getUpdate_time()))
|
||||
|
||||
@@ -54,7 +54,7 @@ public class IOStorageController {
|
||||
|
||||
@PostMapping("out")
|
||||
@SaIgnore
|
||||
@Log("手持出库解绑")
|
||||
@Log("手持出库出库确认")
|
||||
public ResponseEntity<Object> outStorage(@RequestBody JSONObject form) {
|
||||
String vehicle_code = form.getString("vehicle_code");
|
||||
MdPbVehicleMater one = iMdPbVehicleMaterService.getOne(new QueryWrapper<MdPbVehicleMater>()
|
||||
|
||||
@@ -358,6 +358,9 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvOutMapp
|
||||
.eq("id", form.getString("id")));
|
||||
}
|
||||
|
||||
/**
|
||||
* 出库单强制取消
|
||||
*/
|
||||
@Override
|
||||
public String cancelMst(String id) {
|
||||
String now = DateUtil.now();
|
||||
|
||||
@@ -318,8 +318,7 @@ public class SyncErpBillsScheduleService {
|
||||
try {
|
||||
{
|
||||
ErpQuery query = new ErpQuery();
|
||||
String filterString = "FUseOrgId='750572' AND FMATERIALID ='" + id + "'";
|
||||
query.setFilterString(filterString);
|
||||
query.setFilterString(id.contains(".")?"FUseOrgId='750572' AND FNUMBER ='" + id + "'":"FUseOrgId='750572' AND FMATERIALID ='" + id + "'");
|
||||
query.setFormId(formType);
|
||||
query.setFieldKeys("FMATERIALID");
|
||||
query.setLimit(0);
|
||||
|
||||
Reference in New Issue
Block a user