|
|
|
@ -35,12 +35,12 @@ import cn.estsh.impp.framework.boot.util.SpringContextsUtil;
|
|
|
|
|
import cn.estsh.impp.framework.boot.util.ValidatorBean;
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
|
|
import org.apache.commons.collections.map.CaseInsensitiveMap;
|
|
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
|
|
import org.springframework.beans.BeansException;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
|
@ -655,7 +655,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
mesWorkOrderLogList.add(workOrderLog);
|
|
|
|
|
}
|
|
|
|
|
//保存工单记录
|
|
|
|
|
if (CollectionUtils.isNotEmpty(mesWorkOrderLogList)) {
|
|
|
|
|
if (!CollectionUtils.isEmpty(mesWorkOrderLogList)) {
|
|
|
|
|
workOrderLogService.insertBatch(mesWorkOrderLogList);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -1079,7 +1079,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
updateMesWorkOrder(mesWorkOrder, (MesExtEnumUtil.REPORT_TYPE.REPORT.getValue() == mesWorkOrderNew.getReportType()) ? MesExtEnumUtil.WORK_ORDER_LOG_TYPE.REPORT : MesExtEnumUtil.WORK_ORDER_LOG_TYPE.REPORT_ADJUST,mesWorkOrderNew.getNum());
|
|
|
|
|
|
|
|
|
|
//保存报工记录 试制单不报工
|
|
|
|
|
if (CollectionUtils.isNotEmpty(mesProductOffLineList) && (Objects.isNull(mesWorkOrder.getOrderFlag()) || !MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(mesWorkOrder.getOrderFlag()))) {
|
|
|
|
|
if (!CollectionUtils.isEmpty(mesProductOffLineList) && (Objects.isNull(mesWorkOrder.getOrderFlag()) || !MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(mesWorkOrder.getOrderFlag()))) {
|
|
|
|
|
mesProductOffLineList.forEach(t->{
|
|
|
|
|
if(Objects.isNull(t.getBomTotalSize())){
|
|
|
|
|
t.setBomTotalSize(mesProductOffLineList.size());
|
|
|
|
@ -1088,7 +1088,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
mesProductOffLineService.insertBatch(mesProductOffLineList);
|
|
|
|
|
}
|
|
|
|
|
//保存移库记录
|
|
|
|
|
if (CollectionUtils.isNotEmpty(mesMoveList)) {
|
|
|
|
|
if (!CollectionUtils.isEmpty(mesMoveList)) {
|
|
|
|
|
mesMoveRDao.saveAll(mesMoveList);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -1110,10 +1110,10 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
log.info("关闭工单个数{},工单:{}",mesWorkOrderList.size(),mesWorkOrderList.stream().map(MesWorkOrder::getWorkOrderNo).collect(Collectors.toList()));
|
|
|
|
|
//查询自制件零件
|
|
|
|
|
List<String> partNoList = mesPartSapService.findMesPartSapByPartNoList(mesWorkOrderList.stream().map(MesWorkOrder::getPartNo).distinct().collect(Collectors.toList()), organizeCode).stream().filter(t -> t.getIsTestPiece() == CommonEnumUtil.FALSE).map(MesPartSap::getPartNo).collect(Collectors.toList());
|
|
|
|
|
if (CollectionUtils.isNotEmpty(partNoList)) {
|
|
|
|
|
if (!CollectionUtils.isEmpty(partNoList)) {
|
|
|
|
|
//关闭工单回传
|
|
|
|
|
List<String> partNoAndDataKey = mesWorkOrderList.stream().filter(t -> !MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(t.getOrderFlag()) && partNoList.contains(t.getPartNo())).map(t -> new StringJoiner(MesExtConstWords.COMMA).add(t.getPartNo()).add(t.getProductVersion()).add(t.getPlanStartTime().substring(0, 10)).toString()).distinct().collect(Collectors.toList());
|
|
|
|
|
if (CollectionUtils.isNotEmpty(partNoAndDataKey)) {
|
|
|
|
|
if (!CollectionUtils.isEmpty(partNoAndDataKey)) {
|
|
|
|
|
List<MesWorkOrderToSap> mesWorkOrderToSapList = new ArrayList<>();
|
|
|
|
|
for (String partNoAndData : partNoAndDataKey) {
|
|
|
|
|
MesWorkOrderToSap orderToSap = new MesWorkOrderToSap(organizeCode, partNoAndData.split(MesExtConstWords.COMMA)[0], partNoAndData.split(MesExtConstWords.COMMA)[1], 0d, partNoAndData.split(MesExtConstWords.COMMA)[2]);
|
|
|
|
@ -1211,19 +1211,21 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
Map<String, MesWorkOrder> workOrderMapByWorkOrderNo = mesWorkOrderList.stream().collect(Collectors.toMap(MesWorkOrder::getWorkOrderNo, Function.identity(), (x, y) -> y));
|
|
|
|
|
|
|
|
|
|
// 产线代码集合
|
|
|
|
|
List<String> workCenterCodeList = mesWorkOrderList.stream().map(MesWorkOrder::getWorkCenterCode).distinct().collect(Collectors.toList());
|
|
|
|
|
List<String> workCenterCodeList = (mesWorkOrderList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getWorkCenterCode()))).map(MesWorkOrder::getWorkCenterCode).collect(Collectors.toList()))
|
|
|
|
|
.stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
// 根据产线代码节后获取产线信息集合
|
|
|
|
|
List<MesWorkCenter> mesWorkCenters = workCenterService.queryMesWorkCenterList(workCenterCodeList, organizeCode);
|
|
|
|
|
List<MesWorkCenter> workCenterList = CollectionUtils.isEmpty(workCenterCodeList) ? null : workCenterService.queryMesWorkCenterList(workCenterCodeList, organizeCode);
|
|
|
|
|
|
|
|
|
|
// 产线名称集合
|
|
|
|
|
Map<String, String> workCenterNameMap = CollectionUtils.isEmpty(mesWorkCenters) ? null : mesWorkCenters.stream().collect(Collectors.toMap(MesWorkCenter::getWorkCenterCode, MesWorkCenter::getWorkCenterName, (x, y) -> y));
|
|
|
|
|
Map<String, List<MesWorkCenter>> workCenterNameMap = CollectionUtils.isEmpty(workCenterList) ? null : workCenterList.stream().filter(o -> null != o).collect(Collectors.groupingBy(MesWorkCenter::getWorkCenterCode));
|
|
|
|
|
|
|
|
|
|
// 生产零件号
|
|
|
|
|
List<String> partProdGroupCodeList = mesWorkOrderList.stream().map(MesWorkOrder::getPartProdGroupCode).distinct().collect(Collectors.toList());
|
|
|
|
|
// 零件生产组代码
|
|
|
|
|
List<String> partProdGroupCodeList = (mesWorkOrderList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getPartProdGroupCode()))).map(MesWorkOrder::getPartProdGroupCode).collect(Collectors.toList()))
|
|
|
|
|
.stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
// 根据零件生产组代码分组
|
|
|
|
|
Map<String, MesPartProdGroup> partProdGroupMap = partProdGroupService.getMesPartProdGroupMap(organizeCode, partProdGroupCodeList);
|
|
|
|
|
Map<String, MesPartProdGroup> partProdGroupMap = CollectionUtils.isEmpty(partProdGroupCodeList) ? null : partProdGroupService.getMesPartProdGroupMap(organizeCode, partProdGroupCodeList);
|
|
|
|
|
|
|
|
|
|
// 客户车型配置名称MAP
|
|
|
|
|
Map<String, MesCustomerCarModel> carModelMapByCode = getMesCustomerCarModelMap(organizeCode, mesWorkOrderList);
|
|
|
|
@ -1244,9 +1246,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mesWorkOrder.setWorkCenterName(!Objects.isNull(workCenterNameMap) && workCenterNameMap.containsKey(mesWorkOrder.getWorkCenterCode()) ? workCenterNameMap.get(mesWorkOrder.getWorkCenterCode()) : "");
|
|
|
|
|
mesWorkOrder.setWorkCenterName((!StringUtils.isEmpty(mesWorkOrder.getWorkCenterCode()) && !CollectionUtils.isEmpty(workCenterNameMap) && workCenterNameMap.containsKey(mesWorkOrder.getWorkCenterCode())) ? workCenterNameMap.get(mesWorkOrder.getWorkCenterCode()).get(0).getWorkCenterName() : "");
|
|
|
|
|
|
|
|
|
|
MesPartProdGroup mesPartProdGroup = !Objects.isNull(partProdGroupMap) && partProdGroupMap.containsKey(mesWorkOrder.getPartProdGroupCode()) ? partProdGroupMap.get(mesWorkOrder.getPartProdGroupCode()) : null;
|
|
|
|
|
MesPartProdGroup mesPartProdGroup = (!StringUtils.isEmpty(mesWorkOrder.getPartProdGroupCode()) && !CollectionUtils.isEmpty(partProdGroupMap) && partProdGroupMap.containsKey(mesWorkOrder.getPartProdGroupCode())) ? partProdGroupMap.get(mesWorkOrder.getPartProdGroupCode()) : null;
|
|
|
|
|
|
|
|
|
|
if (mesPartProdGroup == null) {
|
|
|
|
|
MesException.throwMesBusiException("工单【%s】关联零件生产组【%s】不存在", mesWorkOrder.getWorkOrderNo(), mesWorkOrder.getPartProdGroupCode());
|
|
|
|
@ -1273,10 +1275,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
if (customerCarModel != null) {
|
|
|
|
|
modelMap.put("mesCustomerCarModel", customerCarModel);
|
|
|
|
|
}
|
|
|
|
|
List<MesWorkOrderAssembly> workOrderAssemblyListByWorkOrderNo = !Objects.isNull(workOrderAssemblyMapByWorkOrderNo) && workOrderAssemblyMapByWorkOrderNo.containsKey(mesWorkOrder.getWorkOrderNo()) ? workOrderAssemblyMapByWorkOrderNo.get(mesWorkOrder.getWorkOrderNo()) : null;
|
|
|
|
|
|
|
|
|
|
if (!CollectionUtils.isEmpty(workOrderAssemblyListByWorkOrderNo)) {
|
|
|
|
|
modelMap.put("mesWorkOrderAssemblyList", workOrderAssemblyListByWorkOrderNo);
|
|
|
|
|
if (!CollectionUtils.isEmpty(workOrderAssemblyMapByWorkOrderNo) && workOrderAssemblyMapByWorkOrderNo.containsKey(mesWorkOrder.getWorkOrderNo())) {
|
|
|
|
|
modelMap.put("mesWorkOrderAssemblyList", workOrderAssemblyMapByWorkOrderNo.get(mesWorkOrder.getWorkOrderNo()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
MesProduceSnPrintModel mesProduceSnPrintModel = new MesProduceSnPrintModel();
|
|
|
|
@ -1330,21 +1331,29 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Map<String, MesCustomerCarModel> getMesCustomerCarModelMap(String organizeCode, List<MesWorkOrder> workOrderList) {
|
|
|
|
|
List<String> carModelCodeList = workOrderList.stream().map(MesWorkOrder::getCarModelCode).distinct().collect(Collectors.toList());
|
|
|
|
|
List<String> carModelCodeList = CollectionUtils.isEmpty(workOrderList) ? null :
|
|
|
|
|
(workOrderList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getCarModelCode()))).map(MesWorkOrder::getCarModelCode).collect(Collectors.toList()))
|
|
|
|
|
.stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
|
|
|
|
|
if (StringUtils.isEmpty(organizeCode) || CollectionUtils.isEmpty(workOrderList)) return null;
|
|
|
|
|
// 客户车型配置
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getInPackList(carModelCodeList, MesExtConstWords.CAR_MODEL_CODE, packBean);
|
|
|
|
|
if (carModelCodeList.size() == 1) DdlPreparedPack.getStringEqualPack(carModelCodeList.get(0), MesExtConstWords.CAR_MODEL_CODE, packBean);
|
|
|
|
|
else DdlPreparedPack.getInPackList(carModelCodeList, MesExtConstWords.CAR_MODEL_CODE, packBean);
|
|
|
|
|
List<MesCustomerCarModel> customerCarModelList = customerCarModelRepository.findByHqlWhere(packBean);
|
|
|
|
|
|
|
|
|
|
return CollectionUtils.isEmpty(customerCarModelList) ? null : customerCarModelList.stream().collect(Collectors.toMap(MesCustomerCarModel::getCarModelCode, Function.identity(), (x, y) -> y));
|
|
|
|
|
if (CollectionUtils.isEmpty(customerCarModelList)) return null;
|
|
|
|
|
customerCarModelList = customerCarModelList.stream().filter(o -> null != o).collect(
|
|
|
|
|
Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(MesCustomerCarModel::getCarModelCode))), ArrayList::new));
|
|
|
|
|
return customerCarModelList.stream().filter(o -> null != o).collect(Collectors.toMap(MesCustomerCarModel::getCarModelCode, o -> o));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Map<String, List<MesWorkOrderAssembly>> getWorkOrderAssemblyMapByWorkOrderNo(String organizeCode, Map<String, MesWorkOrder> workOrderMapByWorkOrderNo) {
|
|
|
|
|
if (CollectionUtils.isEmpty(workOrderMapByWorkOrderNo)) return null;
|
|
|
|
|
List<String> workOrderNoList = workOrderMapByWorkOrderNo.keySet().stream().collect(Collectors.toList());
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getInPackList(workOrderNoList, MesExtConstWords.WORK_ORDER_NO, packBean);
|
|
|
|
|
if (workOrderNoList.size() == 1) DdlPreparedPack.getStringEqualPack(workOrderNoList.get(0), MesExtConstWords.WORK_ORDER_NO, packBean);
|
|
|
|
|
else DdlPreparedPack.getInPackList(workOrderNoList, MesExtConstWords.WORK_ORDER_NO, packBean);
|
|
|
|
|
List<MesWorkOrderAssembly> workOrderAssemblyList = workOrderAssemblyRepository.findByHqlWhere(packBean);
|
|
|
|
|
return CollectionUtils.isEmpty(workOrderAssemblyList) ? null : workOrderAssemblyList.stream().collect(Collectors.groupingBy(MesWorkOrderAssembly::getWorkOrderNo));
|
|
|
|
|
return CollectionUtils.isEmpty(workOrderAssemblyList) ? null : workOrderAssemblyList.stream().filter(o -> null != o).collect(Collectors.groupingBy(MesWorkOrderAssembly::getWorkOrderNo));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private List<MesProductOffLine> getMesProductOffLineList(WmsProductModel model, String nowTime) {
|
|
|
|
|