package com.steerinfo.dil.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.JsonObject; import com.steerinfo.dil.feign.*; import com.steerinfo.dil.mapper.*; import com.steerinfo.dil.model.*; import com.steerinfo.dil.util.DaZongUtil; import com.steerinfo.dil.util.DataChange; import com.steerinfo.dil.util.EntityDispose; import com.steerinfo.dil.util.WMSUtil; import com.steerinfo.framework.controller.RESTfulResult; import com.steerinfo.framework.datasource.DataSourceKey; import com.steerinfo.framework.datasource.TargetDataSource; import com.sun.corba.se.spi.ior.ObjectKey; import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream; import org.apache.log4j.Logger; import org.checkerframework.checker.units.qual.A; import org.omg.CORBA.OBJ_ADAPTER; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import javax.xml.crypto.Data; import java.io.ByteArrayInputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.*; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collector; import java.util.stream.Collectors; /** * OmsTransOrder服务实现: * * @author generator * @version 1.0-SNAPSHORT 2023-11-02 02:31 * 类描述 * 修订历史: * 日期:2023-11-02 * 作者:generator * 参考: * 描述:OmsTransOrder服务实现 * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved. * @see null */ @Service(value = "omsTransOrderService") public class OmsTransOrderServiceImpl { static final Logger log = Logger.getLogger(OmsTransOrderServiceImpl.class); @Autowired private OmsTransOrderMapper omsTransOrderMapper; @Autowired private OmsOrderChildMapper omsOrderChildMapper; @Autowired private TmsEnfactoryResultMapper tmsEnfactoryResultMapper; @Autowired private TmsOutfactoryResultMapper tmsOutfactoryResultMapper; @Autowired private TmsLoadResultMapper tmsLoadResultMapper; @Autowired private TmsUnloadResultMapper tmsUnloadResultMapper; @Autowired private TmsWeightResultMapper tmsWeightResultMapper; @Autowired private TmsQualityResultMapper tmsQualityResultMapper; @Autowired private TmsArrivalResultMapper tmsArrivalResultMapper; @Autowired private TmsReceiptResultMapper tmsReceiptResultMapper; @Autowired private TmsReplaceFrontResultMapper tmsReplaceFrontResultMapper; @Autowired private TmsSignInResultMapper tmsSignInResultMapper; @Autowired private TmsTimingResultMapper tmsTimingResultMapper; @Autowired private EmsFeign emsFeign; @Autowired private ReportFeign reportFeign; @Resource private AmsPlanChildMapper amsPlanChildMapper; @Resource private AmsTransPlanMapper amsTransPlanMapper; @Autowired private OmsTransOrderServiceImpl omsTransOrderService; @Autowired private DaZongUtil daZongUtil; @Autowired private WMSUtil wmsUtil; @Autowired private WebsocketFeign websocketFeign; @Autowired private AmsRequirementChildMapper amsRequirementChildMapper; @Autowired private AmsTransRequirementMapper amsTransRequirementMapper; @Autowired private RmsFeign rmsFeign; @Autowired private WmsFeign wmsFeign; @Autowired DzFeign dzFeign; @Autowired AmsFeign amsFeign; @Autowired OmsOrderChildServiceImpl omsOrderChildService; @Autowired AmsBindRequirementMapper amsBindRequirementMapper; @Autowired TmsAddenergyResultMapper tmsAddenergyResultMapper; @Autowired TmsMaintenanceResultMapper tmsMaintenanceResultMapper; @Autowired TmiFeign tmiFeign; @Resource EntityDispose entityDispose; @Autowired SyncProductListMapper syncProductListMapper; @Autowired DilContrastingRelationMapper dilContrastingRelationMapper; @Autowired TmsWeightResultServiceImpl tmsWeightResultService; @Transactional(rollbackFor = Exception.class) public String dispatchOrder(Map map) throws Exception { BigDecimal lineId = DataChange.dataToBigDecimal(map.get("lineId")); BigDecimal capacityId = DataChange.dataToBigDecimal(map.get("capacityId")); BigDecimal driverId = DataChange.dataToBigDecimal(map.get("driverId")); BigDecimal driverId2 = DataChange.dataToBigDecimal(map.get("driverId2")); String taskType = map.get("taskType") + ""; String remark = map.get("remark") + ""; String isMultiple = DataChange.getString(map.get("isMultiple")); Map capacity = omsTransOrderMapper.getCapacityById(capacityId); if (capacityId.compareTo(BigDecimal.ZERO) == 0 || capacity == null || driverId.compareTo(BigDecimal.ZERO) == 0) { throw new Exception("运力或司机不能为空!"); } else if (capacity.get("capacityBlacklist").toString().equals("是")) { throw new Exception("不允许派给黑名单内的车辆!"); } //新增运输订单 OmsTransOrder omsTransOrder = new OmsTransOrder(); omsTransOrder.setTransOrderId(omsTransOrderMapper.nextId()); omsTransOrder.setSerialNumber(DataChange.generateEightDigitsNumber("YSDD", omsTransOrder.getTransOrderId().intValue())); omsTransOrder.setCapacityId(capacityId); omsTransOrder.setCurrentLineSeq(BigDecimal.ZERO); omsTransOrder.setLineId(lineId); omsTransOrder.setIssueTime(new Date()); omsTransOrder.setInsertTime(new Date()); omsTransOrder.setDeleted(new BigDecimal(4)); omsTransOrder.setInsertUsername(map.get("userName").toString()); omsTransOrder.setAlternateFields1(taskType); omsTransOrder.setAlternateFields3(isMultiple); omsTransOrder.setAlternateFields8(map.get("multipleType") == null ? null : map.get("multipleType").toString()); omsTransOrder.setAlternateFields28(map.get("multipleTimes") == null ? "1" : map.get("multipleTimes").toString()); omsTransOrder.setInsertUpdateRemark(remark); //if (driverId == null) { // List driverIds = omsOrderChildMapper.findDriverDetails(map); // if(driverIds.size() <= 0){ // throw new Exception("该车未查询到司机,请先维护司机排班!"); // } // omsTransOrder.setDriverId(driverIds.get(0)); // if(driverIds.size() > 1){ // omsTransOrder.setDriverId2(driverIds.get(1)); // } //}else{ // omsTransOrder.setDriverId(driverId); // // //} omsTransOrder.setDriverId(driverId); omsTransOrder.setDriverId2(driverId2); map.put("transOrderId", omsTransOrder.getTransOrderId()); //新增运输订单子表 List omsOrderChildren = new ArrayList<>(); // List> planChildren = (ArrayList) map.get("planChildren"); if (planChildren.size() <= 0) { throw new Exception("没有计划,无法派单!"); } BigDecimal businessType = null; String businessScene = ""; for (Map planChild : planChildren) { //校验分录余额 Map planDetails = omsOrderChildMapper.findPlanChild(planChild); if (planDetails == null) { throw new Exception("运输计划异常:可能被删除或停用!无法派单,请刷新!"); } businessType = DataChange.getBigDecimal(planDetails.get("businessType")); businessScene = DataChange.getString(planDetails.get("businessScene")); if (businessType == null) { throw new Exception("非法的业务类型,无法派单,请确认需求/通知单信息!"); } // if((businessScene.equals("采购") || businessScene.equals("销售")) && omsTransOrderMapper.countDriverScene(driverId,businessScene) > 0){ // throw new Exception(businessScene + "类型的运单已派发给该司机,请等待作业完成再派发下一单!"); // } int controlMode = Integer.parseInt(planDetails.get("controlMode").toString()); switch (controlMode) { case 0: //不控制 break; case 1: //1:数量控制 BigDecimal numberLeft = DataChange.dataToBigDecimal(planDetails.get("numberLeft")); BigDecimal materialNumber = DataChange.dataToBigDecimal(planChild.get("materialNumber")); if (materialNumber.compareTo(numberLeft) > 0) { throw new Exception("数量超出需求限制!"); } break; case 2: //2:金额控制 break; case 3: //3:车数控制 BigDecimal truckLeft = DataChange.dataToBigDecimal(planDetails.get("truckLeft")); BigDecimal truckNumber = BigDecimal.ONE; if (truckNumber.compareTo(truckLeft) > 0) { throw new Exception("车辆数量超出需求限制!"); } break; default: throw new Exception("未知的控制类型!"); } omsTransOrder.setAlternateFields2(planDetails.get("rootCompanyId").toString()); omsTransOrderMapper.updatePlanStatus(planChild); OmsOrderChild omsOrderChild = new OmsOrderChild(); omsOrderChild.setOrderChildId(omsOrderChildMapper.nextId()); omsOrderChild.setTransOrderId(omsTransOrder.getTransOrderId()); omsOrderChild.setPlanChildId(DataChange.dataToBigDecimal(planDetails.get("planChildId"))); omsOrderChild.setMaterialId(DataChange.dataToBigDecimal(planDetails.get("materialId"))); omsOrderChild.setMaterialNumber(DataChange.dataToBigDecimal(planChild.get("materialNumber"))); omsOrderChild.setInsertTime(new Date()); omsOrderChild.setInsertUsername(map.get("userId").toString()); omsOrderChild.setDeleted(BigDecimal.ZERO); entityDispose.disposeOrderChild(omsOrderChild); omsOrderChildren.add(omsOrderChild); //推送大宗 Map config = omsTransOrderMapper.getConfigByName("派单推送大宗"); config = config == null ? new HashMap<>() : config; if("否".equals(config.get("valueString"))){ log.info("配置如此,无需上传大宗"); }else{ dispatchPush(businessType,capacityId,driverId,omsTransOrder,omsOrderChild,planDetails); } } omsTransOrder.setOrderType(businessType);//设置运单类型为业务类型 entityDispose.disposeOmsTransOrder(omsTransOrder); omsTransOrderMapper.insertSelective(omsTransOrder); omsOrderChildMapper.batchInsert(omsOrderChildren); //创建新实绩 creatTransResult(lineId, omsTransOrder.getTransOrderId(), omsOrderChildren.get(0).getPlanChildId(),omsTransOrder.getInsertUsername()); if(businessScene.equals("生产")){ //查询所派车辆所属承运商 Map map1 = new HashMap<>(); List list = new ArrayList(); list.add(0,map.get("capacityId").toString()); map1.put("capacityId",list); MapcapacityMap = rmsFeign.getCapacityList(map1); Map Datamap = (Map) capacityMap.get("data"); List> capacityList=(List) Datamap.get("list"); List> listValue = capacityList.stream().filter(map2 -> map2.get("companyId").toString().equals(map.get("carrierId").toString())).collect(Collectors.toList()); if (listValue.size()==0){ HashMap sendMap = new HashMap<>(); sendMap.put("userId",map.get("userId")); sendMap.put("userName",map.get("userName")); sendMap.put("title","提示:车辆与业务所属单位不一致"); sendMap.put("sendMessage","所派车辆与业务所属单位不一致,请补录租赁合同并上传凭证!"); sendMap.put("sendType","01"); String websocketId = map.get("ssoId").toString(); RESTfulResult resTfulResult = websocketFeign.sendWebsocket(websocketId, sendMap); } //派车时需满足所有运力类型才可以派车 String capacityTypeId=map.get("capacityTypeId").toString(); List> capacityTypeIdList = capacityList.stream().filter(map2 -> map2.get("capacityTypeId").toString().equals(map.get("capacityTypeId").toString())).collect(Collectors.toList()); if (capacityTypeIdList.size()<= 0){ throw new Exception("派车时需满足所有运力类型才可以派车!"); } } //去除重复数据 Set set = new HashSet(); for (OmsOrderChild omsOrderChild : omsOrderChildren) { AmsPlanChild amsPlanChild = amsPlanChildMapper.selectByPrimaryKey(omsOrderChild.getPlanChildId()); set.add(amsPlanChild.getRequirementChildId()); listAggCapacity(amsPlanChild.getPlanChildId()); } for (BigDecimal requirementChildId : set) { //反写需求总重量 sumWeight(requirementChildId); } return "派车成功!"; } @Transactional(rollbackFor = Exception.class,timeout = 120) public String batchDispatch(Map map) throws Exception { //校验物流单是否超过截止时间 String res = omsTransOrderService.verificationDeadline(map); if (!res.equals("OK")) { throw new Exception(res); } //查询所派车辆所属承运商 List> batchlist =(List)map.get("list"); List capacityidList = new ArrayList(); for (int i = 0; i capacitySet = new HashSet(); Set driverSet = new HashSet<>(); if(map.get("isMultiple") != null){ isMultiple = map.get("isMultiple").toString(); } if(map.get("multipleTimes") != null) { multipleTimes = map.get("multipleTimes").toString(); } if(map.get("multipleType") != null){ multipleType = map.get("multipleType").toString(); } //车辆-司机 List> list = (ArrayList) map.get("list"); if (list.size() <= 0) { throw new Exception("没有派车信息,无法新增!"); } BigDecimal numberCount = BigDecimal.ZERO; for (Map item : list) { BigDecimal capacityId = DataChange.dataToBigDecimal(item.get("capacityId")); BigDecimal driverId = DataChange.dataToBigDecimal(item.get("driverId")); BigDecimal driverId2 = DataChange.dataToBigDecimal(item.get("driverId2")); Map capacity = omsTransOrderMapper.getCapacityById(capacityId); if (capacityId.compareTo(BigDecimal.ZERO) == 0 || capacity == null || driverId.compareTo(BigDecimal.ZERO) == 0) { throw new Exception("运力或司机不能为空!"); } else if (capacitySet.contains("" + capacityId) || driverSet.contains("" + driverId) || driverSet.contains("" + driverId2)) { throw new Exception("不允许派重复的车辆或司机!"); } else if (capacity.get("capacityBlacklist").toString().equals("是")) { throw new Exception("不允许派给黑名单内的车辆!"); }else { capacitySet.add("" + capacityId); driverSet.add("" + driverId); if (driverId2.compareTo(BigDecimal.ZERO) != 0) { driverSet.add("" + driverId2); } numberCount = numberCount.add(DataChange.dataToBigDecimal(item.get("materialNumber"))); } } //分录 Map planDetails = omsOrderChildMapper.findPlanChild(map); if (planDetails == null) { throw new Exception("运输计划异常:可能被删除或停用!无法派单,请刷新!"); } BigDecimal businessType = DataChange.getBigDecimal(planDetails.get("businessType")); String businessScene = DataChange.getString(planDetails.get("businessScene")); if (businessType == null) { throw new Exception("非法的业务类型,无法派单,请确认需求/通知单信息!"); } if(lineId == null || lineId.compareTo(BigDecimal.ZERO) == 0){ lineId = DataChange.dataToBigDecimal(planDetails.get("lineId")); } if("是".equals(planDetails.get("hruiRemark"))) { lineId = new BigDecimal(129991); } //校验分录余额 int controlMode = Integer.parseInt(planDetails.get("controlMode").toString()); switch (controlMode) { case 0: //不控制 break; case 1: //1:数量控制 BigDecimal numberLeft = DataChange.dataToBigDecimal(planDetails.get("numberLeft")); BigDecimal materialNumber = numberCount; if (materialNumber.compareTo(numberLeft) > 0) { throw new Exception("数量超出需求限制!"); } break; case 2: //2:金额控制 break; case 3: //3:车数控制 BigDecimal truckLeft = DataChange.dataToBigDecimal(planDetails.get("truckLeft")); BigDecimal truckNumber = new BigDecimal(list.size()); if (truckNumber.compareTo(truckLeft) > 0) { throw new Exception("车辆数量超出需求限制!"); } break; default: throw new Exception("未知的控制类型!"); } //准备待新增的实绩 List omsTransOrders = new ArrayList<>(); List omsOrderChildren = new ArrayList<>(); for (Map item : list) { BigDecimal capacityId = DataChange.dataToBigDecimal(item.get("capacityId")); BigDecimal driverId = DataChange.dataToBigDecimal(item.get("driverId")); BigDecimal driverId2 = DataChange.dataToBigDecimal(item.get("driverId2")); String taskType = item.get("taskType") + ""; String remark = item.get("remark") + ""; if(item.get("isMultiple") != null){ isMultiple = item.get("isMultiple").toString(); } if(item.get("multipleTimes") != null) { multipleTimes = item.get("multipleTimes").toString(); } if(item.get("multipleType") != null) { multipleType = item.get("multipleType").toString(); } if((businessScene.equals("采购") || businessScene.equals("销售"))){ //采购、销售类型校验是否已派单 List> existList = omsTransOrderMapper.getExistList(driverId,""+item.get("personnelCard"),businessScene); if(existList != null && existList.size() > 0){ //若已派单,校验运单在大宗是否作废 //Map param = new HashMap<>(); //param.put("list",existList); //List> pcdList = dzFeign.getTransResultList(param); //if(pcdList.size() == 0){ // //throw new Exception(businessScene + "类型的运单已派发给该司机,请等待作业完成再派发下一单!"); //} //for(Map pcd : pcdList){ // String hsbz = ""+pcd.get("hsbz"); // BigDecimal transOrderId = DataChange.dataToBigDecimal(pcd.get("transOrderId").toString()); // if("4".equals(hsbz)){ // //已作废,关闭旧运单 // OmsTransOrder omsTransOrder = new OmsTransOrder(); // omsTransOrder.setTransOrderId(transOrderId); // omsTransOrder.setDeleted(new BigDecimal(7)); // omsTransOrder.setDeleteReason("大宗作废运单"); // omsTransOrderMapper.updateByPrimaryKeySelective(omsTransOrder); // }else{ // //存在未作废的旧运单 // //throw new Exception(businessScene + "类型的运单已派发给该司机,请等待作业完成再派发下一单!"); // // } //} throw new Exception(businessScene + "类型的运单已派发给该司机,请等待作业完成再派发下一单!"); } } //新增运输订单 OmsTransOrder omsTransOrder = new OmsTransOrder(); omsTransOrder.setTransOrderId(omsTransOrderMapper.nextId()); omsTransOrder.setSerialNumber(DataChange.generateEightDigitsNumber("YSDD", omsTransOrder.getTransOrderId().intValue())); omsTransOrder.setCapacityId(capacityId); omsTransOrder.setCurrentLineSeq(BigDecimal.ZERO); omsTransOrder.setLineId(lineId); omsTransOrder.setIssueTime(new Date()); omsTransOrder.setInsertTime(new Date()); omsTransOrder.setDeleted(new BigDecimal(4)); omsTransOrder.setInsertUsername(userName); omsTransOrder.setDriverId(driverId); omsTransOrder.setDriverId2(driverId2); omsTransOrder.setCarrierId(Integer.parseInt(planDetails.get("carrierId").toString())); omsTransOrder.setAlternateFields2(planDetails.get("rootCompanyId").toString()); omsTransOrder.setInsertUpdateRemark(remark); omsTransOrder.setAlternateFields1(taskType); omsTransOrder.setAlternateFields3(isMultiple); omsTransOrder.setAlternateFields8(multipleType); omsTransOrder.setAlternateFields28(multipleTimes); item.put("transOrderId", omsTransOrder.getTransOrderId()); item.put("userId", userId); item.put("userName", userName); //新增运输订单子表 omsTransOrder.setOrderType(businessType);//设置运单类型为业务类型 entityDispose.disposeOmsTransOrder(omsTransOrder); OmsOrderChild omsOrderChild = new OmsOrderChild(); omsOrderChild.setOrderChildId(omsOrderChildMapper.nextId()); omsOrderChild.setTransOrderId(omsTransOrder.getTransOrderId()); omsOrderChild.setPlanChildId(DataChange.dataToBigDecimal(planDetails.get("planChildId"))); omsOrderChild.setMaterialId(DataChange.dataToBigDecimal(planDetails.get("materialId"))); omsOrderChild.setMaterialNumber(DataChange.dataToBigDecimal(item.get("materialNumber"))); omsOrderChild.setMaterialWeight(DataChange.dataToBigDecimal(item.get("materialWeight"))); omsOrderChild.setAlternateFields3("" + item.get("allocation")); omsOrderChild.setOriginMaterialZjs(DataChange.dataToBigDecimal(item.get("originMaterialZjs"))); omsOrderChild.setOriginPoundNo(item.get("originPoundNo") == null ? "":item.get("originPoundNo").toString()); omsOrderChild.setAlternateFields4(item.get("originPoundUrl") == null ? "":item.get("originPoundUrl").toString()); omsOrderChild.setOriginDate(DataChange.dataToDate(item.get("originDate"))); omsOrderChild.setInsertTime(new Date()); omsOrderChild.setInsertUsername(userName); omsOrderChild.setDeleted(BigDecimal.ZERO); omsOrderChild.setAlternateFields5(item.get("personnelCard") == null ? null : item.get("personnelCard").toString()); omsOrderChild.setAlternateFields6(item.get("personnelPhone") == null ? null : item.get("personnelPhone").toString()); entityDispose.disposeOrderChild(omsOrderChild); omsOrderChildren.add(omsOrderChild); omsTransOrders.add(omsTransOrder); //新增各类实绩 creatTransResult(lineId, omsTransOrder.getTransOrderId(),omsOrderChild.getPlanChildId(), omsTransOrder.getInsertUsername()); //推送大宗 Map config = omsTransOrderMapper.getConfigByName("派单推送大宗"); config = config == null ? new HashMap<>() : config; if("否".equals(config.get("valueString"))){ log.info("派单推送大宗配置如此,无需上传大宗"); }else{ dispatchPush(businessType,capacityId,driverId,omsTransOrder,omsOrderChild,planDetails); } } //将计划状态变为已派车 omsTransOrderMapper.updatePlanStatus(planDetails); omsTransOrderMapper.batchInsert(omsTransOrders); omsOrderChildMapper.batchInsert(omsOrderChildren); //消息推送 //去除重复数据 Set set = new HashSet(); Set setPlan = new HashSet(); for (OmsOrderChild omsOrderChild : omsOrderChildren) { AmsPlanChild amsPlanChild = amsPlanChildMapper.selectByPrimaryKey(omsOrderChild.getPlanChildId()); set.add(amsPlanChild.getRequirementChildId()); setPlan.add(omsOrderChild.getPlanChildId()); } for (BigDecimal requirementChildId : set) { //反写需求总重量 sumWeight(requirementChildId); } for (BigDecimal planChildId:setPlan) { sumWeightPlan(planChildId); } return "派车成功!"; } @Transactional(rollbackFor = Exception.class,timeout = 120) public String batchDispatchSc(Map map) throws Exception { //查询所派车辆所属承运商 Map map1 = new HashMap<>(); List> batchlist =(List)map.get("list"); List capacityidList = new ArrayList(); for (int i = 0; i capacityMap = rmsFeign.getCapacityList(map1); //Map Datamap = (Map) capacityMap.get("data"); //List> capacityList=(List) Datamap.get("list"); //List> listValue = capacityList.stream().filter(map2 -> map2.get("companyId").toString().equals(map.get("carrierId").toString())).collect(Collectors.toList()); BigDecimal lineId = DataChange.dataToBigDecimal(map.get("lineId")); String userId = map.get("userId").toString(); String userName = map.get("userName").toString(); Set capacitySet = new HashSet(); Set driverSet = new HashSet<>(); //派车时需满足所有运力类型才可以派车 //车辆-司机 List> list = (ArrayList) map.get("list"); if (list.size() <= 0) { return "没有派车信息,无法新增!"; } BigDecimal numberCount = BigDecimal.ZERO; for (Map item : list) { BigDecimal capacityId = DataChange.dataToBigDecimal(item.get("capacityId")); BigDecimal driverId = DataChange.dataToBigDecimal(item.get("driverId")); BigDecimal driverId2 = DataChange.dataToBigDecimal(item.get("driverId2")); Map capacity = omsTransOrderMapper.getCapacityById(capacityId); List> driver = omsTransOrderMapper.getDriverById(driverId,driverId2); if(map.get("capacityTypeName") != null && (map.get("capacityTypeName").toString().contains("人工队") ||map.get("capacityTypeName").toString().contains("吊车"))) { }else if(map.get("capacityTypeName") == null || !map.get("capacityTypeName").toString().contains("人工队")){ if (capacityId.compareTo(BigDecimal.ZERO) == 0 || capacity == null || driverId.compareTo(BigDecimal.ZERO) == 0 ||driver==null||driver.size()<1) { throw new Exception("运力或司机不能为空!"); } } /*else if (capacitySet.contains("" + capacityId) || driverSet.contains("" + driverId) || driverSet.contains("" + driverId2)) { throw new Exception("不允许派重复的车辆或司机!重复车辆为【"+(capacitySet.contains("" + capacityId)?capacity.get("capacityNumber"):"")+"】," + "重复司机为【"+ (driverSet.contains("" + driverId)?driver.get(0).get("personnelName"):"")+"/"+ (driverSet.contains("" + driverId2)&&Integer.parseInt(driverId2.toString())!=0?driver.get(1).get("personnelName"):"") +"】"); } */else if (capacity.get("capacityBlacklist").toString().equals("是")) { throw new Exception("不允许派给黑名单内的车辆!"); }else { capacitySet.add("" + capacityId); driverSet.add("" + driverId); if (driverId2.compareTo(BigDecimal.ZERO) != 0) { driverSet.add("" + driverId2); } numberCount.add(DataChange.dataToBigDecimal(item.get("materialNumber"))); } } //分录 //判断是否传递计划分录 Map planDetails = null; if(map.get("planDetails")!=null&&map.get("planDetails") instanceof Map){ planDetails = (Map) map.get("planDetails"); }else { planDetails = omsOrderChildMapper.findPlanChild2(map); } BigDecimal businessType = DataChange.getBigDecimal(planDetails.get("businessType")); if (planDetails == null) { throw new Exception("运输计划异常:可能被删除或停用!无法派单,请刷新!"); } else if (businessType == null) { throw new Exception("非法的业务类型,无法派单,请确认需求/通知单信息!"); } //将计划状态变为已派车 //omsTransOrderMapper.updatePlanStatus(planDetails); //准备待新增的实绩 List omsTransOrders = new ArrayList<>(); List omsOrderChildren = new ArrayList<>(); //修改需求车辆司机信息 AmsTransRequirement requirement = amsTransRequirementMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(planDetails.get("transRequirementId"))); if(requirement.getRequirementEndTime().compareTo(new Date()) <= 0) { throw new Exception("当前时间大于需求截止时间,无法派车!"); } AmsTransRequirement requirementUpdate = new AmsTransRequirement(); requirementUpdate.setTransRequirementId(requirement.getTransRequirementId()); int i = 1; List dlivDirnoSeqList = new ArrayList<>(); StringBuilder returnResult = new StringBuilder(); for (Map item : list) { BigDecimal capacityId = DataChange.dataToBigDecimal(item.get("capacityId")); BigDecimal driverId = DataChange.dataToBigDecimal(item.get("driverId")); BigDecimal driverId2 = DataChange.dataToBigDecimal(item.get("driverId2")); //判断当前运单和司机是否是同一计划 BigDecimal planChildId = DataChange.dataToBigDecimal(planDetails.get("planChildId")); List> mapResult = omsTransOrderMapper.selectPlanIsCapacityDriver (planChildId,capacityId,driverId); if(mapResult!=null&&mapResult.size()>0){ returnResult.append("司机【"+mapResult.get(0).get("personnelName")+"】-车号【" +mapResult.get(0).get("capacityNumber")+"】已在同一条计划派车|"); continue; } String taskType = item.get("taskType") + ""; String remark = item.get("remark") + ""; //新增运输订单 OmsTransOrder omsTransOrder = new OmsTransOrder(); omsTransOrder.setTransOrderId(omsTransOrderMapper.nextId()); omsTransOrder.setSerialNumber(DataChange.generateEightDigitsNumber("YSDD", omsTransOrder.getTransOrderId().intValue())); omsTransOrder.setCapacityId(capacityId); omsTransOrder.setCurrentLineSeq(BigDecimal.ZERO); omsTransOrder.setLineId(lineId); if(map.get("orderIssueTime") != null) { omsTransOrder.setIssueTime(DataChange.dataToDate(map.get("orderIssueTime"))); }else{ omsTransOrder.setIssueTime(new Date()); } omsTransOrder.setInsertTime(new Date()); omsTransOrder.setDeleted(new BigDecimal(4)); omsTransOrder.setInsertUsername(userName); omsTransOrder.setDriverId(driverId); omsTransOrder.setDriverId2(driverId2); omsTransOrder.setCarrierId(Integer.parseInt(planDetails.get("carrierId").toString())); omsTransOrder.setAlternateFields2(planDetails.get("rootCompanyId") == null ? null : planDetails.get("rootCompanyId").toString()); omsTransOrder.setInsertUpdateRemark(remark); omsTransOrder.setAlternateFields1(taskType); omsTransOrder.setAlternateFields11(item.get("alternateFields11")!=null?item.get("alternateFields11").toString():null); omsTransOrder.setAlternateFields12(item.get("alternateFields12")!=null?item.get("alternateFields12").toString():null); omsTransOrder.setAlternateFields13(item.get("alternateFields13")!=null?item.get("alternateFields13").toString():null); omsTransOrder.setAlternateFields14(item.get("alternateFields14")!=null?item.get("alternateFields14").toString():null); omsTransOrder.setAlternateFields15(item.get("alternateFields15")!=null?item.get("alternateFields15").toString():null); item.put("transOrderId", omsTransOrder.getTransOrderId()); item.put("userId", userId); item.put("userName", userName); AmsPlanChild amsPlanChild = null; if(map.get("amsPlanChild")!=null&&map.get("amsPlanChild") instanceof Map){ ObjectMapper objectMapper = new ObjectMapper(); objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); amsPlanChild = objectMapper.convertValue(map.get("amsPlanChild"),AmsPlanChild.class); }else{ amsPlanChild = amsPlanChildMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(planDetails.get("planChildId"))); } AmsRequirementChild amsRequirementChild = amsRequirementChildMapper.selectByPrimaryKey(amsPlanChild.getRequirementChildId()); //新增运输订单子表 omsTransOrder.setOrderType(businessType);//设置运单类型为业务类型 entityDispose.disposeOmsTransOrder(omsTransOrder); OmsOrderChild omsOrderChild = new OmsOrderChild(); omsOrderChild.setOrderChildId(omsOrderChildMapper.nextId()); omsOrderChild.setTransOrderId(omsTransOrder.getTransOrderId()); omsOrderChild.setPlanChildId(DataChange.dataToBigDecimal(planDetails.get("planChildId"))); omsOrderChild.setMaterialId(DataChange.dataToBigDecimal(planDetails.get("materialId"))); omsOrderChild.setMaterialNumber(DataChange.dataToBigDecimal(item.get("materialNumber"))); omsOrderChild.setMaterialWeight(DataChange.dataToBigDecimal(item.get("materialWeight"))); omsOrderChild.setAlternateFields3("" + item.get("allocation")); omsOrderChild.setInsertTime(new Date()); omsOrderChild.setInsertUsername(userName); omsOrderChild.setDeleted(BigDecimal.ZERO); //if (businessTypeName != null && businessTypeName.equals("内部领用")) { // dlivDirnoSeq = omsTransOrderMapper.selectMax(i); // i ++; // omsOrderChild.setAlternateFields1(dlivDirnoSeq); // dlivDirnoSeqList.add(dlivDirnoSeq); // HashMap hashMap = amsTransRequirementMapper.selectByDlivDirNo(amsRequirementChild.getAlternateFields1()); // HashMap dlivDirnoMap = new HashMap<>(); // dlivDirnoMap.put("dlivDirno", amsRequirementChild.getAlternateFields1()); // dlivDirnoMap.put("outweight", DataChange.dataToBigDecimal(hashMap.get("outweight")).add(DataChange.dataToBigDecimal(item.get("materialNumber")))); // amsTransRequirementMapper.updatedlivDirNo(dlivDirnoMap); //} entityDispose.disposeOrderChild(omsOrderChild); omsOrderChildren.add(omsOrderChild); omsTransOrders.add(omsTransOrder); //if(requirement != null&&!"2".equals(requirement.getAlternateFields15())){ // String alternateFields16 = amsTransRequirement.getAlternateFields16(); // if(alternateFields16 != null&&alternateFields16.length()>0){ // requirementUpdate.setAlternateFields16(alternateFields16+"','"+omsTransOrder.getCarrierId().toString()); // }else { // requirementUpdate.setAlternateFields16(omsTransOrder.getCarrierId().toString()); // } // String alternateFields22 = amsTransRequirement.getAlternateFields22(); // if(alternateFields22 != null&&alternateFields22.length()>0){ // requirementUpdate.setAlternateFields22(alternateFields22+","+omsTransOrder.getDriverId().toString()); // }else { // requirementUpdate.setAlternateFields22(omsTransOrder.getDriverId().toString()); // } //} //新增各类实绩 //List> steps = omsOrderChildMapper.findLineDetails(new BigDecimal("149986")); TmsSignInResult tmsSignInResult = new TmsSignInResult(); tmsSignInResult.setResultId(tmsSignInResultMapper.nextId()); tmsSignInResult.setTransOrderId(omsTransOrder.getTransOrderId()); tmsSignInResult.setSegmentSqe(new BigDecimal("1")); tmsSignInResult.setAlternateFields1("139987"); tmsSignInResult.setInsertTime(new Date()); tmsSignInResult.setInsertUsername(userName); tmsSignInResult.setDeleted(BigDecimal.ZERO); tmsSignInResultMapper.insertSelective(tmsSignInResult); //Map finalPlanDetails = planDetails; //try { // threadPool.execute(() -> { // //App消息推送 // try { // //查询司机 // HashMap sendMap = new HashMap<>(); // sendMap.put("personnelId",omsTransOrder.getDriverId()); // sendMap.put("title","运输订单下发通知"); // //finalPlanDetails.get("") // String text = "单号为【"+omsTransOrder.getSerialNumber()+"】的运输订单已下发,请及时接收"; // sendMap.put("content",text); // HashMap mapData = new HashMap<>(); // mapData.put("text",text); // sendMap.put("data",mapData); // RESTfulResult resTfulResult = websocketFeign.pushUniMessage(sendMap); // }catch (Exception e){ // log.error("消息推送失败:{}",e); // e.printStackTrace(); // } // }); //} catch (Exception e) { // e.printStackTrace(); //} if("补型钢".equals(amsRequirementChild.getOperationName()) ) { Map comBaseInfoMap = new HashMap<>(); comBaseInfoMap.put("basename","补-" + omsTransOrder.getCapacityNumber() + "-" + omsTransOrder.getDriverName()); comBaseInfoMap.put("basecode","5008"+ omsTransOrder.getTransOrderId().toString()); try { tmiFeign.addWmsCarNo(comBaseInfoMap); } catch (Exception e) { e.printStackTrace(); throw new Exception("条码推送异常"); } } if("上站型钢".equals(amsRequirementChild.getOperationName())) { Map comBaseInfoMap = new HashMap<>(); comBaseInfoMap.put("basename",omsTransOrder.getCapacityNumber() + "-" + omsTransOrder.getDriverName()); comBaseInfoMap.put("basecode","5008"+ omsTransOrder.getTransOrderId().toString()); try { tmiFeign.addWmsCarNo(comBaseInfoMap); } catch (Exception e) { e.printStackTrace(); throw new Exception("条码推送异常"); } } } if(!omsTransOrders.isEmpty() && !omsOrderChildren.isEmpty()){ omsTransOrderMapper.batchInsert(omsTransOrders); omsOrderChildMapper.batchInsert(omsOrderChildren); //去除重复数据 Set set = new HashSet(); for (OmsOrderChild omsOrderChild : omsOrderChildren) { AmsPlanChild amsPlanChild = amsPlanChildMapper.selectByPrimaryKey(omsOrderChild.getPlanChildId()); set.add(amsPlanChild.getRequirementChildId()); listAggCapacity(amsPlanChild.getPlanChildId()); } } //消息推送 return returnResult.toString().equals("")?"派车成功":returnResult.toString(); } @Transactional(rollbackFor = Exception.class) public String batchDispatchInnerGp(Map map) throws Exception { //查询所派车辆所属承运商 Map map1 = new HashMap<>(); String userId = map.get("userId").toString(); String userName = map.get("userName").toString(); //派车时需满足所有运力类型才可以派车 //车辆-司机 List> list = (ArrayList) map.get("list"); BigDecimal capacityId = DataChange.dataToBigDecimal(map.get("capacityId")); BigDecimal driverId = DataChange.dataToBigDecimal(map.get("driverId")); //分录 //判断是否传递计划分录 Map planDetails = null; if(map.get("planDetails")!=null&&map.get("planDetails") instanceof Map){ planDetails = (Map) map.get("planDetails"); }else { planDetails = omsOrderChildMapper.findPlanChild2(map); } BigDecimal businessType = DataChange.getBigDecimal(planDetails.get("businessType")); if (planDetails == null) { throw new Exception("运输计划异常:可能被删除或停用!无法派单,请刷新!"); } //将计划状态变为已派车 //omsTransOrderMapper.updatePlanStatus(planDetails); //准备待新增的实绩 List omsTransOrders = new ArrayList<>(); List omsOrderChildren = new ArrayList<>(); //修改需求车辆司机信 StringBuilder returnResult = new StringBuilder(); //判断当前运单和司机是否是同一计划 String taskType = "正常作业"; String remark = "内转钢坯"; // 查询该需求,该时间,该车号,该司机有没有对应的单据,如果有则更新 OmsTransOrder omsTransOrderUpdate = null; if(map.get("orderIssueTime") != null) { omsTransOrderUpdate = omsTransOrderMapper.selectUpdateOmsOrder(map); } if(omsTransOrderUpdate != null) { //新增运输订单 omsTransOrderUpdate.setCapacityId(capacityId); omsTransOrderUpdate.setCurrentLineSeq(BigDecimal.ZERO); if(map.get("orderIssueTime") != null) { omsTransOrderUpdate.setIssueTime(DataChange.dataToDate(map.get("orderIssueTime"))); }else{ omsTransOrderUpdate.setIssueTime(new Date()); } omsTransOrderUpdate.setInsertTime(new Date()); omsTransOrderUpdate.setDeleted(new BigDecimal(2)); omsTransOrderUpdate.setInsertUsername(userName); omsTransOrderUpdate.setDriverId(driverId); omsTransOrderUpdate.setInsertUpdateRemark(remark); omsTransOrderUpdate.setAlternateFields1(taskType); // 新增运输订单子表 omsTransOrderUpdate.setOrderType(new BigDecimal(129988));//设置运单类型为业务类型 omsTransOrderUpdate.setAlternateFields32(map.get("icCardNo") == null ? null : map.get("icCardNo").toString()); //根据 Map objectObjectHashMap = new HashMap<>(); objectObjectHashMap.put("transOrderId",omsTransOrderUpdate.getTransOrderId()); objectObjectHashMap.put("deleted",0); List omsOrderChildList = omsOrderChildMapper.selectByParameters(objectObjectHashMap); omsOrderChildList.get(0).setTransOrderId(omsTransOrderUpdate.getTransOrderId()); omsOrderChildList.get(0).setPlanChildId(DataChange.dataToBigDecimal(planDetails.get("planChildId"))); omsOrderChildList.get(0).setMaterialId(DataChange.dataToBigDecimal(planDetails.get("materialId"))); omsOrderChildList.get(0).setMaterialNumber(DataChange.dataToBigDecimal(map.get("materialNumber"))); omsOrderChildList.get(0).setMaterialWeight(DataChange.dataToBigDecimal(map.get("materialWeight"))); omsOrderChildList.get(0).setInsertTime(new Date()); omsOrderChildList.get(0).setInsertUsername(userName); omsOrderChildList.get(0).setDeleted(BigDecimal.ZERO); omsOrderChildList.get(0).setAlternateFields18(map.get("luNo") == null ? null : map.get("luNo").toString()); omsTransOrderMapper.updateByPrimaryKeySelective(omsTransOrderUpdate); omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChildList.get(0)); }else{ //新增运输订单 OmsTransOrder omsTransOrder = new OmsTransOrder(); omsTransOrder.setTransOrderId(omsTransOrderMapper.nextId()); omsTransOrder.setSerialNumber(DataChange.generateEightDigitsNumber("YSDD", omsTransOrder.getTransOrderId().intValue())); omsTransOrder.setCapacityId(capacityId); omsTransOrder.setCurrentLineSeq(BigDecimal.ZERO); if(map.get("orderIssueTime") != null) { omsTransOrder.setIssueTime(DataChange.dataToDate(map.get("orderIssueTime"))); }else{ omsTransOrder.setIssueTime(new Date()); } omsTransOrder.setInsertTime(new Date()); omsTransOrder.setDeleted(new BigDecimal(2)); omsTransOrder.setInsertUsername(userName); omsTransOrder.setDriverId(driverId); omsTransOrder.setAlternateFields2(planDetails.get("rootCompanyId") == null ? null : planDetails.get("rootCompanyId").toString()); omsTransOrder.setInsertUpdateRemark(remark); omsTransOrder.setAlternateFields1(taskType); // 新增运输订单子表 omsTransOrder.setOrderType(new BigDecimal(129988));//设置运单类型为业务类型 omsTransOrder.setAlternateFields32(map.get("icCardNo") == null ? null : map.get("icCardNo").toString()); entityDispose.disposeOmsTransOrder(omsTransOrder); OmsOrderChild omsOrderChild = new OmsOrderChild(); omsOrderChild.setOrderChildId(omsOrderChildMapper.nextId()); omsOrderChild.setTransOrderId(omsTransOrder.getTransOrderId()); omsOrderChild.setPlanChildId(DataChange.dataToBigDecimal(planDetails.get("planChildId"))); omsOrderChild.setMaterialId(DataChange.dataToBigDecimal(planDetails.get("materialId"))); omsOrderChild.setMaterialNumber(DataChange.dataToBigDecimal(map.get("materialNumber"))); omsOrderChild.setMaterialWeight(DataChange.dataToBigDecimal(map.get("materialWeight"))); omsOrderChild.setInsertTime(new Date()); omsOrderChild.setInsertUsername(userName); omsOrderChild.setDeleted(BigDecimal.ZERO); omsOrderChild.setAlternateFields18(map.get("luNo") == null ? null : map.get("luNo").toString()); entityDispose.disposeOrderChild(omsOrderChild); omsTransOrderMapper.insertSelective(omsTransOrder); omsOrderChildMapper.insertSelective(omsOrderChild); } //消息推送 return returnResult.toString().equals("")?"派车成功":returnResult.toString(); } @Transactional(rollbackFor = Exception.class) public String updateTransOrder(Map map) throws Exception { String userId = map.get("userId").toString(); String userName = map.get("userName").toString(); BigDecimal transOrderId = DataChange.getBigDecimal(map.get("transOrderId").toString()); BigDecimal transOrderChildId = DataChange.getBigDecimal(map.get("transOrderChildId").toString()); BigDecimal capacityId = DataChange.getBigDecimal(map.get("capacityId")); BigDecimal lineId = DataChange.getBigDecimal(map.get("lineId")); BigDecimal driverId = DataChange.getBigDecimal(map.get("driverId")); BigDecimal driverId2 = DataChange.getBigDecimal(map.get("driverId2")); BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("materialNumber")); String storageattrId = map.get("storageattrId") == null ? null : map.get("storageattrId").toString(); OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(transOrderId); OmsOrderChild omsOrderChild = omsOrderChildMapper.selectByPrimaryKey(transOrderChildId); if(map.containsKey("scFlag")) { omsOrderChild.setNetWeight(DataChange.dataToBigDecimal(map.get("netWeight"))); omsOrderChild.setActualWeight(DataChange.dataToBigDecimal(map.get("actualWeight"))); if(omsOrderChild.getActualWeight().compareTo(BigDecimal.ZERO) <= 0) { throw new Exception("吨位小于等于0"); } omsOrderChild.setInsertUpdateRemark("计吨备注:" + (map.get("remark") == null ? "无" : map.get("remark").toString())); omsOrderChildMapper.updateByPrimaryKey(omsOrderChild); if(omsOrderChild.getActualDuration() != null) { omsTransOrderService.updateTimeOrderStatus(omsTransOrder.getTransOrderId(),"计时且计吨结束",userName); }else{ omsTransOrderService.updateTimeOrderStatus(omsTransOrder.getTransOrderId(),"计吨结束",userName); } return "操作成功"; } if(map.containsKey("pauseOrderStatus")) { omsTransOrder.setAlternateFields33(map.get("pauseOrderStatus").toString()); omsTransOrder.setAlternateFields34(userName + ":操作暂停状态"); omsTransOrderMapper.updateByPrimaryKeySelective(omsTransOrder); omsTransOrderMapper.updateOtherPauseStatus(omsTransOrder.getTransOrderId(),map.get("pauseOrderStatus").toString()); return "吊车暂停:操作成功"; } if("同意".equals(map.get("batchMakeSure"))) { List> mapList = (List>) map.get("mapList"); List omsTransOrderList = new ArrayList<>(); for(Map stringObjectMap : mapList) { BigDecimal transOrderIdGp = DataChange.getBigDecimal(stringObjectMap.get("transOrderId").toString()); OmsTransOrder omsTransOrderGp = omsTransOrderMapper.selectByPrimaryKey(transOrderIdGp); omsTransOrderGp.setAlternateFields42("已确认"); omsTransOrderList.add(omsTransOrderGp); } omsTransOrderMapper.batchUpdate(omsTransOrderList); return "钢坯内转确认:操作成功!"; } if (map.containsKey("abnormalFlag")) { //判断是否需要异常处理 omsTransOrder.setAlternateFields29(map.get("abnormalFlag").toString()); omsTransOrder.setAlternateFields30(userName + ":操作允许异常"); omsTransOrderMapper.updateByPrimaryKeySelective(omsTransOrder); return "允许异常操作:操作成功"; } if("拒绝".equals(map.get("approveStatus")) && "生产".equals(omsTransOrder.getBusinessScene())) { omsTransOrder.setAlternateFields36(map.get("approveStatus").toString()); omsTransOrderMapper.updateByPrimaryKeySelective(omsTransOrder); return "允许复报:操作成功"; } if("生产需求异常处理".equals(map.get("requirementAbnormalDispose")) && "生产".equals(omsTransOrder.getBusinessScene())) { //获取业务类型 omsTransOrder.setOrderType(DataChange.dataToBigDecimal(map.get("orderType"))); omsTransOrder.setIssueTime(DataChange.dataToDate(map.get("issueTime"))); omsTransOrder.setAlternateFields1(map.get("alternateFields1") == null ? null : map.get("alternateFields1").toString()); omsOrderChild.setRequirementStartTime(DataChange.dataToDate(map.get("requirementStartTime"))); omsOrderChild.setRequirementEndTime(DataChange.dataToDate(map.get("requirementEndTime"))); entityDispose.disposeOmsTransOrder(omsTransOrder); omsTransOrderMapper.updateByPrimaryKeySelective(omsTransOrder); omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild); return "生产需求异常处理:操作成功"; } omsOrderChild.setAlternateFields2(storageattrId); if(tmsEnfactoryResultMapper.isEnfactory(omsTransOrder.getTransOrderId()) > 0){ throw new Exception("已进厂,不允许再修改!"); } //查询分录 Map planChild = new HashMap<>(); planChild.put("planChildId",omsOrderChild.getPlanChildId()); Map planDetails = omsOrderChildMapper.findPlanChild(planChild); if(materialNumber.compareTo(omsOrderChild.getMaterialNumber()) != 0){ if(materialNumber.compareTo(BigDecimal.ZERO) <= 0){ throw new Exception("物资数量不能小于0!"); } BigDecimal numberDiff = materialNumber.subtract(omsOrderChild.getMaterialNumber()); //校验分录余额 int controlMode = Integer.parseInt(planDetails.get("controlMode").toString()); switch (controlMode) { case 0: //不控制 break; case 1: //1:数量控制 BigDecimal numberLeft = DataChange.dataToBigDecimal(planDetails.get("numberLeft")); if (numberDiff.compareTo(numberLeft) > 0) { throw new Exception("数量超出需求限制!"); } break; case 2: //2:金额控制 break; case 3: //3:车数控制 break; } //修改运单数量 omsOrderChild.setMaterialNumber(materialNumber); } BigDecimal deleted = omsTransOrder.getDeleted(); if (omsTransOrder.getOrderType().compareTo(new BigDecimal(129988)) != 0 && deleted.compareTo(new BigDecimal(2)) == 0 || deleted.compareTo(new BigDecimal(1)) == 0 || deleted.compareTo(new BigDecimal(7)) == 0 || deleted.compareTo(new BigDecimal(6)) == 0) { throw new Exception("已完成/删除/关闭/拒绝的运单不允许修改!"); } if(deleted.compareTo(new BigDecimal(2)) == 0) { omsOrderChild.setReceiptTime(new Date()); } if(deleted.compareTo(new BigDecimal(20)) == 0) { omsTransOrder.setDeleted(new BigDecimal(2)); } omsTransOrder.setCapacityId(capacityId); omsTransOrder.setDriverId(driverId); omsTransOrder.setDriverId2(driverId2); omsTransOrder.setAlternateFields11(map.get("alternateFields11") == null ? null : map.get("alternateFields11").toString()); omsTransOrder.setAlternateFields12(map.get("alternateFields12") == null ? null : map.get("alternateFields12").toString()); omsTransOrder.setAlternateFields13(map.get("alternateFields13") == null ? null : map.get("alternateFields13").toString()); omsTransOrder.setAlternateFields14(map.get("alternateFields14") == null ? null : map.get("alternateFields14").toString()); omsTransOrder.setAlternateFields15(map.get("alternateFields15") == null ? null : map.get("alternateFields15").toString()); omsTransOrder.setAlternateFields42("未确认"); if (lineId != null && lineId.compareTo(omsTransOrder.getLineId()) != 0) { //换线路 Map searchMap = new HashMap<>(); searchMap.put("transOrderId", transOrderId); searchMap.put("deleted", 0); //查询需求中的装货点卸货点 List> loadUnloadPoints = omsOrderChildMapper.getRequireLoads(omsOrderChild.getPlanChildId()); int loadIndex = 0,unloadIndex = 0; //查询原运单所有实绩 List tmsReplaceFrontResultsOld = tmsReplaceFrontResultMapper.selectByParameters(searchMap); List tmsSignInResultsOld = tmsSignInResultMapper.selectByParameters(searchMap); List tmsEnfactoryResultsOld = tmsEnfactoryResultMapper.selectByParameters(searchMap); List tmsOutfactoryResultsOld = tmsOutfactoryResultMapper.selectByParameters(searchMap); List tmsLoadResultsOld = tmsLoadResultMapper.selectByParameters(searchMap); List tmsUnloadResultsOld = tmsUnloadResultMapper.selectByParameters(searchMap); List tmsWeightResultsOld = tmsWeightResultMapper.selectByParameters(searchMap); List tmsQualityResultsOld = tmsQualityResultMapper.selectByParameters(searchMap); List tmsArrivalResultsOld = tmsArrivalResultMapper.selectByParameters(searchMap); List tmsReceiptResultsOld = tmsReceiptResultMapper.selectByParameters(searchMap); //创建新实绩 List tmsReplaceFrontResults = new ArrayList<>(); List tmsSignInResults = new ArrayList<>(); List tmsEnfactoryResults = new ArrayList<>(); List tmsOutfactoryResults = new ArrayList<>(); List tmsLoadResults = new ArrayList<>(); List tmsUnloadResults = new ArrayList<>(); List tmsWeightResults = new ArrayList<>(); List tmsQualityResults = new ArrayList<>(); List tmsArrivalResults = new ArrayList<>(); List tmsReceiptResults = new ArrayList<>(); //查询线路步骤 List> steps = omsOrderChildMapper.findLineDetails(lineId); if (steps.size() <= 0) { throw new Exception("线路步骤为空!"); } for (Map step : steps) { switch (step.get("stepName").toString()) { case "换车头": TmsReplaceFrontResult tmsReplaceFrontResult = new TmsReplaceFrontResult(); tmsReplaceFrontResult.setResultId(tmsReplaceFrontResultMapper.nextId()); tmsReplaceFrontResult.setTransOrderId(omsTransOrder.getTransOrderId()); tmsReplaceFrontResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq"))); tmsReplaceFrontResult.setAlternateFields1(step.get("stepId").toString()); tmsReplaceFrontResult.setInsertTime(new Date()); tmsReplaceFrontResult.setInsertUsername(userName); tmsReplaceFrontResult.setDeleted(BigDecimal.ZERO); tmsReplaceFrontResults.add(tmsReplaceFrontResult); break; case "签到": TmsSignInResult tmsSignInResult = new TmsSignInResult(); tmsSignInResult.setResultId(tmsSignInResultMapper.nextId()); tmsSignInResult.setTransOrderId(omsTransOrder.getTransOrderId()); tmsSignInResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq"))); tmsSignInResult.setAlternateFields1(step.get("stepId").toString()); tmsSignInResult.setInsertTime(new Date()); tmsSignInResult.setInsertUsername(userName); tmsSignInResult.setDeleted(BigDecimal.ZERO); tmsSignInResults.add(tmsSignInResult); break; case "进厂": TmsEnfactoryResult tmsEnfactoryResult = new TmsEnfactoryResult(); tmsEnfactoryResult.setResultId(tmsEnfactoryResultMapper.nextId()); tmsEnfactoryResult.setTransOrderId(omsTransOrder.getTransOrderId()); tmsEnfactoryResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq"))); tmsEnfactoryResult.setAlternateFields1(step.get("stepId").toString()); tmsEnfactoryResult.setInsertTime(new Date()); tmsEnfactoryResult.setInsertUsername(userName); tmsEnfactoryResult.setDeleted(BigDecimal.ZERO); tmsEnfactoryResults.add(tmsEnfactoryResult); break; case "出厂": TmsOutfactoryResult tmsOutfactoryResult = new TmsOutfactoryResult(); tmsOutfactoryResult.setResultId(tmsOutfactoryResultMapper.nextId()); tmsOutfactoryResult.setTransOrderId(omsTransOrder.getTransOrderId()); tmsOutfactoryResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq"))); tmsOutfactoryResult.setAlternateFields1(step.get("stepId").toString()); tmsOutfactoryResult.setInsertTime(new Date()); tmsOutfactoryResult.setInsertUsername(userName); tmsOutfactoryResult.setDeleted(BigDecimal.ZERO); tmsOutfactoryResults.add(tmsOutfactoryResult); break; case "计毛": case "计皮": setWeightResult(tmsWeightResults, step, omsTransOrder.getTransOrderId(), userName); break; case "装货": TmsLoadResult tmsLoadResult = new TmsLoadResult(); tmsLoadResult.setResultId(tmsLoadResultMapper.nextId()); tmsLoadResult.setTransOrderId(omsTransOrder.getTransOrderId()); tmsLoadResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq"))); try{ tmsLoadResult.setLoadPointId(DataChange.dataToBigDecimal(loadUnloadPoints.get(0).get("loadPointId"))); }catch (Exception e){ throw new Exception("运输路线装货次数和运单不匹配"); } tmsLoadResult.setAlternateFields1(step.get("stepId").toString()); tmsLoadResult.setInsertTime(new Date()); tmsLoadResult.setInsertUsername(userName); tmsLoadResult.setDeleted(BigDecimal.ZERO); tmsLoadResults.add(tmsLoadResult); break; case "卸货": TmsUnloadResult tmsUnloadResult = new TmsUnloadResult(); tmsUnloadResult.setResultId(tmsUnloadResultMapper.nextId()); tmsUnloadResult.setTransOrderId(omsTransOrder.getTransOrderId()); tmsUnloadResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq"))); try{ tmsUnloadResult.setUnloadPointId(DataChange.dataToBigDecimal(loadUnloadPoints.get(0).get("unloadPointId"))); }catch (Exception e){ throw new Exception("运输路线卸货次数和运单不匹配"); } tmsUnloadResult.setAlternateFields1(step.get("stepId").toString()); tmsUnloadResult.setInsertTime(new Date()); tmsUnloadResult.setInsertUsername(userName); tmsUnloadResult.setDeleted(BigDecimal.ZERO); tmsUnloadResults.add(tmsUnloadResult); break; case "采样": TmsQualityResult tmsQualityResult = new TmsQualityResult(); tmsQualityResult.setResultId(tmsQualityResultMapper.nextId()); tmsQualityResult.setTransOrderId(omsTransOrder.getTransOrderId()); tmsQualityResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq"))); tmsQualityResult.setAlternateFields1(step.get("stepId").toString()); tmsQualityResult.setInsertTime(new Date()); tmsQualityResult.setInsertUsername(userName); tmsQualityResult.setDeleted(BigDecimal.ZERO); tmsQualityResults.add(tmsQualityResult); break; case "抵达": TmsArrivalResult tmsArrivalResult = new TmsArrivalResult(); tmsArrivalResult.setResultId(tmsArrivalResultMapper.nextId()); tmsArrivalResult.setTransOrderId(omsTransOrder.getTransOrderId()); tmsArrivalResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq"))); tmsArrivalResult.setAlternateFields1(step.get("stepId").toString()); tmsArrivalResult.setInsertTime(new Date()); tmsArrivalResult.setInsertUsername(userName); tmsArrivalResult.setDeleted(BigDecimal.ZERO); tmsArrivalResults.add(tmsArrivalResult); break; case "签收": TmsReceiptResult tmsReceiptResult = new TmsReceiptResult(); tmsReceiptResult.setResultId(tmsReceiptResultMapper.nextId()); tmsReceiptResult.setTransOrderId(omsTransOrder.getTransOrderId()); tmsReceiptResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq"))); tmsReceiptResult.setAlternateFields1(step.get("stepId").toString()); tmsReceiptResult.setInsertTime(new Date()); tmsReceiptResult.setInsertUsername(userName); tmsReceiptResult.setDeleted(BigDecimal.ZERO); tmsReceiptResults.add(tmsReceiptResult); break; default: throw new Exception("派单失败!无法解析的运输步骤:" + step.get("stepName")); } } BigDecimal maxSeq = new BigDecimal(0); //遍历旧实绩边迁移边删除 if (tmsReplaceFrontResultsOld.size() > 0) { for (int i = 0; i < tmsReplaceFrontResultsOld.size(); i++) { TmsReplaceFrontResult itemOld = tmsReplaceFrontResultsOld.get(i); //迁移,如果新路线不能迁移,则数组越界,抛出异常 if (itemOld.getReplaceTime() != null) { TmsReplaceFrontResult itemNew = tmsReplaceFrontResults.get(i); BigDecimal resultId = itemNew.getResultId(); BigDecimal seq = itemNew.getSegmentSqe(); String stepId = itemNew.getAlternateFields1(); itemNew = JSONObject.parseObject(JSONObject.toJSONString(itemOld), TmsReplaceFrontResult.class); itemNew.setResultId(resultId); itemNew.setSegmentSqe(seq); itemNew.setAlternateFields1(stepId); tmsReplaceFrontResults.set(i, itemNew);//丢失引用,需要重新加入List if (seq.compareTo(maxSeq) > 0) { //记录当前有效实绩最大的路段顺序号 maxSeq = seq; } } //删除 itemOld.setTransOrderId(DataChange.dataToBigDecimal("-"+itemOld.getTransOrderId())); itemOld.setDeleted(BigDecimal.ONE); itemOld.setUpdateUsername(userName); itemOld.setUpdateTime(new Date()); } tmsReplaceFrontResultMapper.batchUpdate(tmsReplaceFrontResultsOld); } if (tmsSignInResultsOld.size() > 0) { for (int i = 0; i < tmsSignInResultsOld.size(); i++) { TmsSignInResult itemOld = tmsSignInResultsOld.get(i); //迁移,如果新路线不能迁移,则数组越界,抛出异常 if (itemOld.getSignInTime() != null) { TmsSignInResult itemNew = tmsSignInResults.get(i); BigDecimal resultId = itemNew.getResultId(); BigDecimal seq = itemNew.getSegmentSqe(); String stepId = itemNew.getAlternateFields1(); itemNew = JSONObject.parseObject(JSONObject.toJSONString(itemOld), TmsSignInResult.class); itemNew.setResultId(resultId); itemNew.setSegmentSqe(seq); itemNew.setAlternateFields1(stepId); tmsSignInResults.set(i, itemNew); if (seq.compareTo(maxSeq) > 0) { maxSeq = seq; } } //删除 itemOld.setTransOrderId(DataChange.dataToBigDecimal("-"+itemOld.getTransOrderId())); itemOld.setDeleted(BigDecimal.ONE); itemOld.setUpdateUsername(userName); itemOld.setUpdateTime(new Date()); } tmsSignInResultMapper.batchUpdate(tmsSignInResultsOld); } if (tmsEnfactoryResultsOld.size() > 0) { for (int i = 0; i < tmsEnfactoryResultsOld.size(); i++) { TmsEnfactoryResult itemOld = tmsEnfactoryResultsOld.get(i); //迁移,如果新路线不能迁移,则数组越界,抛出异常 if (itemOld.getEntryGateTime() != null) { TmsEnfactoryResult itemNew = tmsEnfactoryResults.get(i); BigDecimal resultId = itemNew.getResultId(); BigDecimal seq = itemNew.getSegmentSqe(); String stepId = itemNew.getAlternateFields1(); itemNew = JSONObject.parseObject(JSONObject.toJSONString(itemOld), TmsEnfactoryResult.class); itemNew.setResultId(resultId); itemNew.setSegmentSqe(seq); itemNew.setAlternateFields1(stepId); tmsEnfactoryResults.set(i, itemNew); if (seq.compareTo(maxSeq) > 0) { maxSeq = seq; } } //删除 itemOld.setTransOrderId(DataChange.dataToBigDecimal("-"+itemOld.getTransOrderId())); itemOld.setDeleted(BigDecimal.ONE); itemOld.setUpdateUsername(userName); itemOld.setUpdateTime(new Date()); } tmsEnfactoryResultMapper.batchUpdate(tmsEnfactoryResultsOld); } if (tmsOutfactoryResultsOld.size() > 0) { for (int i = 0; i < tmsOutfactoryResultsOld.size(); i++) { TmsOutfactoryResult itemOld = tmsOutfactoryResultsOld.get(i); //迁移,如果新路线不能迁移,则数组越界,抛出异常 if (itemOld.getOutGateTime() != null) { TmsOutfactoryResult itemNew = tmsOutfactoryResults.get(i); BigDecimal resultId = itemNew.getResultId(); BigDecimal seq = itemNew.getSegmentSqe(); String stepId = itemNew.getAlternateFields1(); itemNew = JSONObject.parseObject(JSONObject.toJSONString(itemOld), TmsOutfactoryResult.class); itemNew.setResultId(resultId); itemNew.setSegmentSqe(seq); itemNew.setAlternateFields1(stepId); tmsOutfactoryResults.set(i, itemNew); if (seq.compareTo(maxSeq) > 0) { maxSeq = seq; } } //删除 itemOld.setTransOrderId(DataChange.dataToBigDecimal("-"+itemOld.getTransOrderId())); itemOld.setDeleted(BigDecimal.ONE); itemOld.setUpdateUsername(userName); itemOld.setUpdateTime(new Date()); } tmsOutfactoryResultMapper.batchUpdate(tmsOutfactoryResultsOld); } if (tmsWeightResultsOld.size() > 0) { for (int i = 0; i < tmsWeightResultsOld.size(); i++) { TmsWeightResult itemOld = tmsWeightResultsOld.get(i); //迁移,如果新路线不能迁移,则数组越界,抛出异常 if (itemOld.getGrossWeightTime() != null || itemOld.getTareWeightTime() != null) { TmsWeightResult itemNew = tmsWeightResults.get(i); BigDecimal resultId = itemNew.getResultId(); BigDecimal tareSeq = itemNew.getTareSegmentSqe(); BigDecimal grossSeq = itemNew.getGrossSegmentSqe(); String stepId1 = itemNew.getAlternateFields1(); String stepId2 = itemNew.getAlternateFields2(); itemNew = JSONObject.parseObject(JSONObject.toJSONString(itemOld), TmsWeightResult.class); itemNew.setResultId(resultId); itemNew.setTareSegmentSqe(tareSeq); itemNew.setGrossSegmentSqe(grossSeq); itemNew.setAlternateFields1(stepId1); itemNew.setAlternateFields1(stepId2); tmsWeightResults.set(i, itemNew); if (itemOld.getTareWeightTime() != null && tareSeq.compareTo(maxSeq) > 0) { maxSeq = tareSeq; } if (itemOld.getGrossWeightTime() != null && grossSeq.compareTo(maxSeq) > 0) { maxSeq = grossSeq; } } //删除 itemOld.setTransOrderId(DataChange.dataToBigDecimal("-"+itemOld.getTransOrderId())); itemOld.setDeleted(BigDecimal.ONE); itemOld.setUpdateUsername(userName); itemOld.setUpdateTime(new Date()); } tmsWeightResultMapper.batchUpdate(tmsWeightResultsOld); } if (tmsLoadResultsOld.size() > 0) { for (int i = 0; i < tmsLoadResultsOld.size(); i++) { TmsLoadResult itemOld = tmsLoadResultsOld.get(i); //迁移,如果新路线不能迁移,则数组越界,抛出异常 if (itemOld.getLoadStartTime() != null) { TmsLoadResult itemNew = tmsLoadResults.get(i); BigDecimal resultId = itemNew.getResultId(); BigDecimal seq = itemNew.getSegmentSqe(); String stepId = itemNew.getAlternateFields1(); itemNew = JSONObject.parseObject(JSONObject.toJSONString(itemOld), TmsLoadResult.class); itemNew.setResultId(resultId); itemNew.setSegmentSqe(seq); itemNew.setAlternateFields1(stepId); tmsLoadResults.set(i, itemNew); if (seq.compareTo(maxSeq) > 0) { //记录当前有效实绩最大的路段顺序号 maxSeq = seq; } } //删除 itemOld.setTransOrderId(DataChange.dataToBigDecimal("-"+itemOld.getTransOrderId())); itemOld.setDeleted(BigDecimal.ONE); itemOld.setUpdateUsername(userName); itemOld.setUpdateTime(new Date()); } tmsLoadResultMapper.batchUpdate(tmsLoadResultsOld); } if (tmsUnloadResultsOld.size() > 0) { for (int i = 0; i < tmsUnloadResultsOld.size(); i++) { TmsUnloadResult itemOld = tmsUnloadResultsOld.get(i); //迁移,如果新路线不能迁移,则数组越界,抛出异常 if (itemOld.getUnloadEndTime() != null) { TmsUnloadResult itemNew = tmsUnloadResults.get(i); BigDecimal resultId = itemNew.getResultId(); BigDecimal seq = itemNew.getSegmentSqe(); String stepId = itemNew.getAlternateFields1(); itemNew = JSONObject.parseObject(JSONObject.toJSONString(itemOld), TmsUnloadResult.class); itemNew.setResultId(resultId); itemNew.setSegmentSqe(seq); itemNew.setAlternateFields1(stepId); tmsUnloadResults.set(i, itemNew); if (seq.compareTo(maxSeq) > 0) { //记录当前有效实绩最大的路段顺序号 maxSeq = seq; } } //删除 itemOld.setTransOrderId(DataChange.dataToBigDecimal("-"+itemOld.getTransOrderId())); itemOld.setDeleted(BigDecimal.ONE); itemOld.setUpdateUsername(userName); itemOld.setUpdateTime(new Date()); } tmsUnloadResultMapper.batchUpdate(tmsUnloadResultsOld); } if (tmsQualityResultsOld.size() > 0) { for (int i = 0; i < tmsQualityResultsOld.size(); i++) { TmsQualityResult itemOld = tmsQualityResultsOld.get(i); //迁移,如果新路线不能迁移,则数组越界,抛出异常 if (itemOld.getSamplingTime() != null || itemOld.getAssayTime() != null) { TmsQualityResult itemNew = tmsQualityResults.get(i); BigDecimal resultId = itemNew.getResultId(); BigDecimal seq = itemNew.getSegmentSqe(); String stepId = itemNew.getAlternateFields1(); itemNew = JSONObject.parseObject(JSONObject.toJSONString(itemOld), TmsQualityResult.class); itemNew.setResultId(resultId); itemNew.setSegmentSqe(seq); itemNew.setAlternateFields1(stepId); tmsQualityResults.set(i, itemNew); if (seq.compareTo(maxSeq) > 0) { //记录当前有效实绩最大的路段顺序号 maxSeq = seq; } } //删除 itemOld.setTransOrderId(DataChange.dataToBigDecimal("-"+itemOld.getTransOrderId())); itemOld.setDeleted(BigDecimal.ONE); itemOld.setUpdateUsername(userName); itemOld.setUpdateTime(new Date()); } tmsQualityResultMapper.batchUpdate(tmsQualityResultsOld); } if (tmsArrivalResultsOld.size() > 0) { for (int i = 0; i < tmsArrivalResultsOld.size(); i++) { TmsArrivalResult itemOld = tmsArrivalResultsOld.get(i); //迁移,如果新路线不能迁移,则数组越界,抛出异常 if (itemOld.getArrivalTime() != null) { TmsArrivalResult itemNew = tmsArrivalResults.get(i); BigDecimal resultId = itemNew.getResultId(); BigDecimal seq = itemNew.getSegmentSqe(); String stepId = itemNew.getAlternateFields1(); itemNew = JSONObject.parseObject(JSONObject.toJSONString(itemOld), TmsArrivalResult.class); itemNew.setResultId(resultId); itemNew.setSegmentSqe(seq); itemNew.setAlternateFields1(stepId); tmsArrivalResults.set(i, itemNew); if (seq.compareTo(maxSeq) > 0) { //记录当前有效实绩最大的路段顺序号 maxSeq = seq; } } //删除 itemOld.setTransOrderId(DataChange.dataToBigDecimal("-"+itemOld.getTransOrderId())); itemOld.setDeleted(BigDecimal.ONE); itemOld.setUpdateUsername(userName); itemOld.setUpdateTime(new Date()); } tmsArrivalResultMapper.batchUpdate(tmsArrivalResultsOld); } if (tmsReceiptResultsOld.size() > 0) { for (int i = 0; i < tmsReceiptResultsOld.size(); i++) { TmsReceiptResult itemOld = tmsReceiptResultsOld.get(i); //迁移,如果新路线不能迁移,则数组越界,抛出异常 if (itemOld.getReceiptTime() != null) { TmsReceiptResult itemNew = tmsReceiptResults.get(i); BigDecimal resultId = itemNew.getResultId(); BigDecimal seq = itemNew.getSegmentSqe(); String stepId = itemNew.getAlternateFields1(); itemNew = JSONObject.parseObject(JSONObject.toJSONString(itemOld), TmsReceiptResult.class); itemNew.setResultId(resultId); itemNew.setSegmentSqe(seq); itemNew.setAlternateFields1(stepId); tmsReceiptResults.set(i, itemNew); if (seq.compareTo(maxSeq) > 0) { //记录当前有效实绩最大的路段顺序号 maxSeq = seq; } } //删除 itemOld.setTransOrderId(DataChange.dataToBigDecimal("-"+itemOld.getTransOrderId())); itemOld.setDeleted(BigDecimal.ONE); itemOld.setUpdateUsername(userName); itemOld.setUpdateTime(new Date()); } tmsReceiptResultMapper.batchUpdate(tmsReceiptResultsOld); } //新增各类新实绩(校验是否中空,中空则不允许迁移) if (tmsReplaceFrontResults.size() > 0) { for (TmsReplaceFrontResult item : tmsReplaceFrontResults) { if (item.getReplaceTime() == null && item.getSegmentSqe().compareTo(maxSeq) < 0) { throw new Exception("迁移后运输执行丢失顺序,不允许迁移!"); } } tmsReplaceFrontResultMapper.batchInsert(tmsReplaceFrontResults); } if (tmsSignInResults.size() > 0) { for (TmsSignInResult item : tmsSignInResults) { if (item.getSignInTime() == null && item.getSegmentSqe().compareTo(maxSeq) < 0) { throw new Exception("迁移后运输执行丢失顺序,不允许迁移!"); } } tmsSignInResultMapper.batchInsert(tmsSignInResults); } if (tmsEnfactoryResults.size() > 0) { for (TmsEnfactoryResult item : tmsEnfactoryResults) { if (item.getEntryGateTime() == null && item.getSegmentSqe().compareTo(maxSeq) < 0) { throw new Exception("迁移后运输执行丢失顺序,不允许迁移!"); } } tmsEnfactoryResultMapper.batchInsert(tmsEnfactoryResults); } if (tmsOutfactoryResults.size() > 0) { for (TmsOutfactoryResult item : tmsOutfactoryResults) { if (item.getOutGateTime() == null && item.getSegmentSqe().compareTo(maxSeq) < 0) { throw new Exception("迁移后运输执行丢失顺序,不允许迁移!"); } } tmsOutfactoryResultMapper.batchInsert(tmsOutfactoryResults); } if (tmsWeightResults.size() > 0) { for (TmsWeightResult item : tmsWeightResults) { if ( (item.getTareWeightTime() == null && item.getTareSegmentSqe().compareTo(maxSeq) < 0) || (item.getGrossWeightTime() == null && item.getGrossSegmentSqe().compareTo(maxSeq) < 0) ) { throw new Exception("迁移后运输执行丢失顺序,不允许迁移!"); } } tmsWeightResultMapper.batchInsert(tmsWeightResults); } if (tmsLoadResults.size() > 0) { for (TmsLoadResult item : tmsLoadResults) { if (item.getLoadStartTime() == null && item.getSegmentSqe().compareTo(maxSeq) < 0) { throw new Exception("迁移后运输执行丢失顺序,不允许迁移!"); } } tmsLoadResultMapper.batchInsert(tmsLoadResults); } if (tmsUnloadResults.size() > 0) { for (TmsUnloadResult item : tmsUnloadResults) { if (item.getUnloadEndTime() == null && item.getSegmentSqe().compareTo(maxSeq) < 0) { throw new Exception("迁移后运输执行丢失顺序,不允许迁移!"); } } tmsUnloadResultMapper.batchInsert(tmsUnloadResults); } if (tmsQualityResults.size() > 0) { for (TmsQualityResult item : tmsQualityResults) { if (item.getSamplingTime() == null && item.getSegmentSqe().compareTo(maxSeq) < 0) { throw new Exception("迁移后运输执行丢失顺序,不允许迁移!"); } } tmsQualityResultMapper.batchInsert(tmsQualityResults); } if (tmsArrivalResults.size() > 0) { for (TmsArrivalResult item : tmsArrivalResults) { if (item.getArrivalTime() == null && item.getSegmentSqe().compareTo(maxSeq) < 0) { throw new Exception("迁移后运输执行丢失顺序,不允许迁移!"); } } tmsArrivalResultMapper.batchInsert(tmsArrivalResults); } if (tmsReceiptResults.size() > 0) { for (TmsReceiptResult item : tmsReceiptResults) { if (item.getReceiptTime() == null && item.getSegmentSqe().compareTo(maxSeq) < 0) { throw new Exception("迁移后运输执行丢失顺序,不允许迁移!"); } } tmsReceiptResultMapper.batchInsert(tmsReceiptResults); } omsTransOrder.setLineId(lineId); omsTransOrder.setCurrentLineSeq(maxSeq); } entityDispose.disposeOmsTransOrder(omsTransOrder); entityDispose.disposeOrderChild(omsOrderChild); omsTransOrder.setUpdateTime(new Date()); omsTransOrder.setUpdateUsername(userName); omsTransOrderMapper.updateByPrimaryKeySelective(omsTransOrder); omsOrderChild.setUpdateTime(new Date()); omsOrderChild.setUpdateUsername(userName); omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild); AmsPlanChild amsPlanChild = amsPlanChildMapper.selectByPrimaryKey(omsOrderChild.getPlanChildId()); AmsRequirementChild amsRequirementChild = amsRequirementChildMapper.selectByPrimaryKey(amsPlanChild.getRequirementChildId()); sumWeight(amsRequirementChild.getRequirementChildId()); sumWeightPlan(amsPlanChild.getPlanChildId()); listAggCapacity(amsPlanChild.getPlanChildId()); AmsTransRequirement amsTransRequirement = amsTransRequirementMapper.selectByPrimaryKey(amsRequirementChild.getTransRequirementId()); if("补型钢".equals(amsRequirementChild.getOperationName()) ) { Map comBaseInfoMap = new HashMap<>(); comBaseInfoMap.put("basename","补-" + omsTransOrder.getCapacityNumber() + "-" + omsTransOrder.getDriverName()); comBaseInfoMap.put("basecode","5008"+ omsTransOrder.getTransOrderId().toString()); tmiFeign.addWmsCarNo(comBaseInfoMap); } if("上站型钢".equals(amsRequirementChild.getOperationName())) { Map comBaseInfoMap = new HashMap<>(); comBaseInfoMap.put("basename",omsTransOrder.getCapacityNumber() + "-" + omsTransOrder.getDriverName()); comBaseInfoMap.put("basecode","5008"+ omsTransOrder.getTransOrderId().toString()); tmiFeign.addWmsCarNo(comBaseInfoMap); } String businessTypeName = amsTransRequirementMapper.selectBusinessTypeName(amsTransRequirement.getBusinessType().toString()); //推送大宗 Map config = omsTransOrderMapper.getConfigByName("派单推送大宗"); config = config == null ? new HashMap<>() : config; if( ("生产".equals(amsTransRequirement.getBusinessScene())) || "否".equals(config.get("valueString")) || businessTypeName.equals("型钢销售订单") || businessTypeName.equals("高线销售订单")){ log.info("配置如此,无需上传大宗"); }else{ dispatchPush(omsTransOrder.getOrderType(),capacityId,driverId,omsTransOrder,omsOrderChild,planDetails); } if (businessTypeName != null && (businessTypeName.equals("内部领用") || businessTypeName.equals("型钢销售订单") || businessTypeName.equals("高线销售订单"))) { List dlivDirnoSeqList = new ArrayList<>(); dlivDirnoSeqList.add(omsOrderChild.getAlternateFields1()); List> listMap = omsTransOrderMapper.selectDlivDirnolistByWMS(dlivDirnoSeqList); String url = "/antai.maketx/v1/slmdlivdirlists/wuliuUpdate"; wmsUtil.executeArray("90010000006", listMap, map.get("accessToken").toString(), url); } return "修改成功!"; } private void matchLoadData(OmsTransOrder omsTransOrder, OmsOrderChild omsOrderChild,Map map) { //获取装机数据 List materialIds = (List) map.get("materialIds"); Map objectObjectHashMap = new HashMap<>(); objectObjectHashMap.put("materialIds",materialIds); objectObjectHashMap.put("requirementStartTime",omsOrderChild.getOrderChildId()); objectObjectHashMap.put("requirementStartTime",materialIds); //查询物料ID对应及时间的 } public List> getTransOrderList(Map map) { List list = new ArrayList(); if (map.get("planType") != null && map.get("planType").toString() == "") { map.remove("planType"); } if (map.get("planType") != null && map.get("planType").toString().equals("0")) { list.add("大宗销售订单"); list.add("普通销售汽运"); map.put("planType", list); } else if (map.get("planType") != null && map.get("planType").toString().equals("1")) { list.add("型钢销售订单"); list.add("高线销售订单"); map.put("planType", list); }else if ("计时".equals(map.get("workFlag")) || "计次".equals(map.get("workFlag"))) { List> mapList1 = new ArrayList<>(); if((((List)map.get("roleCodes"))).contains("erchejsaoma")) { Map objectObjectHashMap = new HashMap<>(); objectObjectHashMap = clone(map); //看二车间数据 List> mapList = (List>) objectObjectHashMap.get("dilCompanyList"); Map objectMap = new HashMap<>(); objectMap.put("companyId",2234); mapList.add(objectMap); objectObjectHashMap.put("dilCompanyList",mapList); objectObjectHashMap.put("businessRange","二车间-新站台"); mapList1.addAll(omsTransOrderMapper.getTimeTransOrderList(objectObjectHashMap)); }else if((((List)map.get("roleCodes"))).contains("yichejsaoma")) { Map objectObjectHashMap = new HashMap<>(); objectObjectHashMap = clone(map); //看一车间扫码 List> mapList = (List>) objectObjectHashMap.get("dilCompanyList"); Map objectMap = new HashMap<>(); objectMap.put("companyId",2234); mapList.add(objectMap); objectObjectHashMap.put("dilCompanyList",mapList); objectObjectHashMap.put("businessRange","一车间-新站台"); mapList1.addAll(omsTransOrderMapper.getTimeTransOrderList(objectObjectHashMap)); }else if((((List)map.get("roleCodes"))).contains("gangzh-yichej")) { Map objectObjectHashMap = new HashMap<>(); objectObjectHashMap = clone(map); //看钢轧-一车间扫码 objectObjectHashMap.put("businessRange","一车间"); mapList1.addAll(omsTransOrderMapper.getTimeTransOrderList(objectObjectHashMap)); return mapList1; } mapList1.addAll(omsTransOrderMapper.getTimeTransOrderList(map)); return mapList1; }else if("大宗计重".equals(map.get("workFlag"))) { return omsTransOrderMapper.getDzTransOrderList(map); }else if("计次".equals(map.get("billingType"))){ //针对计次,高线一车间看一车间数据,二车间看二车间数据 List> mapList1 = new ArrayList<>(); if((((List)map.get("roleCodes"))).contains("erchejsaoma")) { //看二车间数据 Map objectObjectHashMap = new HashMap<>(); objectObjectHashMap = clone(map); List> mapList = (List>) objectObjectHashMap.get("dilCompanyList"); Map objectMap = new HashMap<>(); objectMap.put("companyId",2234); mapList.add(objectMap); objectObjectHashMap.put("dilCompanyList",mapList); objectObjectHashMap.put("businessRange","二车间-新站台"); mapList1.addAll(omsTransOrderMapper.getTimeTransOrderList(objectObjectHashMap)); }else if((((List)map.get("roleCodes"))).contains("yichejsaoma")) { //看一车间扫码 Map objectObjectHashMap = new HashMap<>(); objectObjectHashMap = clone(map); List> mapList = (List>) objectObjectHashMap.get("dilCompanyList"); Map objectMap = new HashMap<>(); objectMap.put("companyId",2234); mapList.add(objectMap); objectObjectHashMap.put("dilCompanyList",mapList); objectObjectHashMap.put("businessRange","一车间-新站台"); mapList1.addAll(omsTransOrderMapper.getTimeTransOrderList(objectObjectHashMap)); }else if((((List)map.get("roleCodes"))).contains("gangzh-yichej")) { //看钢轧-一车间扫码 Map objectObjectHashMap = new HashMap<>(); objectObjectHashMap = clone(map); if(map.get("transOrderNumber") != null) { objectObjectHashMap.put("businessRange","一车间"); }else{ objectObjectHashMap.put("businessRange","wuwuwuuw"); } mapList1.addAll(omsTransOrderMapper.getTimeTransOrderList(objectObjectHashMap)); return mapList1; } mapList1.addAll(omsTransOrderMapper.getTimeTransOrderList(map)); return mapList1; }else if (DataChange.dataToBigDecimal(map.get("orderType")).compareTo(new BigDecimal(129988)) == 0) { return omsTransOrderMapper.getInnerGpTransOrder(map); }else if(map.get("originType") != null) { //查看原发数据 return omsTransOrderMapper.getOriginData(map); }else if("站台装卸".equals(map.get("workFlag"))) { // 获取站台装卸数据 return zhanTaiZxData(map); }else if(((List)map.get("roleCodes")).contains("siji")) { return omsTransOrderMapper.getSijiTransOrder(map); } return omsTransOrderMapper.getTransOrderList(map); } private T clone(Map obj) { T cloneObj = null; try { ByteOutputStream bos = new ByteOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(bos); oos.writeObject(obj); oos.close(); ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray()); ObjectInputStream ois = new ObjectInputStream(bis); cloneObj = (T) ois.readObject(); ois.close(); } catch (Exception e) { e.printStackTrace(); } return cloneObj; } public List> zhanTaiZxData(Map map) { //根据运单号查询运单信息 Map searchMap = new HashMap<>(); if(map.get("transOrderNumber") != null) { searchMap = omsTransOrderMapper.getOrderInfo(map); map.putAll(searchMap); } List> mapList = new ArrayList<>(); List> xcData = new ArrayList<>(); List> bxcData = new ArrayList<>(); List> xgData = new ArrayList<>(); List> bxgData = new ArrayList<>(); List> gpData = new ArrayList<>(); List> bgpData = new ArrayList<>(); if("上站线材".equals(map.get("businessName"))) { xcData = omsTransOrderMapper.getXcData(map); mapList.addAll(xcData); } if("补线材".equals(map.get("businessName"))) { bxcData = omsTransOrderMapper.getBXcData(map); mapList.addAll(bxcData); } if("上站型钢".equals(map.get("businessName"))) { map.put("carNo",map.get("capacityNumber") + "-" + map.get("driverName")); xgData = tmiFeign.getWmsData(map); for(Map map1 : xgData) { List tmsLoadResultList = tmsLoadResultMapper.selectMoveCarNoTitle(map1.get("moveCarNo").toString()); if(tmsLoadResultList != null && tmsLoadResultList.size() > 0) { continue; } mapList.add(map1); } } if("补型钢".equals(map.get("businessName"))) { map.put("carNo","补-" + map.get("capacityNumber") + "-" + map.get("driverName")); bxgData = tmiFeign.getBuWmsData(map); for(Map map1 : bxgData) { List tmsLoadResultList = tmsLoadResultMapper.selectMoveCarNoTitle(map1.get("moveCarNo").toString()); if(tmsLoadResultList != null && tmsLoadResultList.size() > 0) { continue; } mapList.add(map1); } } if("上站钢坯".equals(map.get("businessName"))) { gpData = omsTransOrderMapper.getGpData(map); mapList.addAll(gpData); } if("补钢坯".equals(map.get("businessName"))) { bgpData = omsTransOrderMapper.getBGpData(map); mapList.addAll(bgpData); } //上站型钢数据 //补型钢数据 return mapList; } public List> getSaleTransOrderList(Map map) { return omsTransOrderMapper.getSaleTransOrderList(map); } private void setWeightResult(List tmsWeightResults, Map step, BigDecimal orderId, String userId){ if (step.get("stepName").toString().equals("计毛")) { //先走循环查下是否有待补全的计量实绩 for (TmsWeightResult item : tmsWeightResults) { if (item.getGrossSegmentSqe() == null) { item.setGrossSegmentSqe(DataChange.dataToBigDecimal(step.get("seq"))); item.setAlternateFields1(step.get("stepId").toString()); return;//查到,修改并退出方法 } } //如果没有待补全的,新增 TmsWeightResult tmsWeightResult = new TmsWeightResult(); tmsWeightResult.setResultId(tmsWeightResultMapper.nextId()); tmsWeightResult.setTransOrderId(orderId); tmsWeightResult.setInsertTime(new Date()); tmsWeightResult.setInsertUsername(userId); tmsWeightResult.setDeleted(BigDecimal.ZERO); tmsWeightResult.setGrossSegmentSqe(DataChange.dataToBigDecimal(step.get("seq"))); tmsWeightResult.setAlternateFields1(step.get("stepId").toString()); tmsWeightResults.add(tmsWeightResult); } else if (step.get("stepName").toString().equals("计皮")) { for (TmsWeightResult item : tmsWeightResults) { if (item.getTareSegmentSqe() == null) { item.setTareSegmentSqe(DataChange.dataToBigDecimal(step.get("seq"))); item.setAlternateFields2(step.get("stepId").toString()); return; } } TmsWeightResult tmsWeightResult = new TmsWeightResult(); tmsWeightResult.setResultId(tmsWeightResultMapper.nextId()); tmsWeightResult.setTransOrderId(orderId); tmsWeightResult.setInsertTime(new Date()); tmsWeightResult.setInsertUsername(userId); tmsWeightResult.setDeleted(BigDecimal.ZERO); tmsWeightResult.setTareSegmentSqe(DataChange.dataToBigDecimal(step.get("seq"))); tmsWeightResult.setAlternateFields2(step.get("stepId").toString()); tmsWeightResults.add(tmsWeightResult); } else { log.error("不支持的计量类型!stepName:"+step.get("stepName").toString()); } } public String deleteOrder(Map map) throws Exception { OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey( DataChange.dataToBigDecimal(map.get("transOrderId"))); omsTransOrder.setDeleteReason(map.get("deleteReason").toString()); omsTransOrder.setDeleted(BigDecimal.ONE); omsTransOrder.setUpdateTime(new Date()); omsTransOrder.setUpdateUsername(map.get("userId").toString()); omsTransOrderMapper.updateByPrimaryKeySelective(omsTransOrder); return "删除成功!"; } @Transactional(rollbackFor = Exception.class) public String receiptOrder(Map map) throws Exception { OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey( DataChange.dataToBigDecimal(map.get("transOrderId"))); if (omsTransOrder == null || omsTransOrder.getTransOrderId() == null) { throw new Exception("运单异常,无法接单!"); } else if (omsTransOrder.getDeleted().compareTo(new BigDecimal(4)) != 0) { throw new Exception("运单不是待接收状态,不允许接单!"); } String confirmReason = map.get("confirmReason").toString(); if (confirmReason.equals("同意")) { List orderIds = omsTransOrderMapper.getTransOrderByDriver(omsTransOrder.getDriverId()); if (orderIds.size() > 0) { throw new Exception("存在正在执行的运单,无法接单"); } omsTransOrder.setDeleted(new BigDecimal(5)); } else if (confirmReason.equals("拒绝")) { confirmReason += (":" + map.get("refuseReason").toString()); omsTransOrder.setDeleted(new BigDecimal(6)); } else { throw new Exception("非法的确认类型:" + confirmReason); } omsTransOrder.setConfirmReason(confirmReason); omsTransOrder.setDriverConfirmTime(new Date()); omsTransOrder.setOrderCommunicationDuration( new BigDecimal( (omsTransOrder.getDriverConfirmTime().getTime() - omsTransOrder.getIssueTime().getTime()) / 60000 ) ); omsTransOrder.setUpdateUsername(map.get("userId").toString()); omsTransOrder.setUpdateTime(new Date()); omsTransOrderMapper.updateByPrimaryKeySelective(omsTransOrder); //推送大宗 Map config = omsTransOrderMapper.getConfigByName("接单推送大宗"); config = config == null ? new HashMap<>() : config; if("是".equals(config.get("valueString"))){ dispatchPushById(omsTransOrder.getTransOrderId()); }else{ log.info("配置如此,无需上传大宗"); } return "接受/拒绝成功!"; } @Transactional(rollbackFor = Exception.class) public String changeTransOrderH(Map map) throws Exception { OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(map.get("transOrderId"))); if (omsTransOrder.getDeleted().compareTo(new BigDecimal(4)) != 0) { throw new Exception("订单状态不对,不允许删除!"); } AmsTransRequirement amsTransRequirement = amsTransRequirementMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(map.get("requirementId"))); Map childMap = new HashMap<>(); childMap.put("transRequirementId", amsTransRequirement.getTransRequirementId()); List amsRequirementChildList = amsRequirementChildMapper.selectByParameters(childMap); //修改运单状态为删除状态 omsTransOrder.setDeleted(new BigDecimal(1)); omsTransOrder.setDeleteReason(map.get("deleteReason").toString()); omsTransOrderMapper.updateByPrimaryKey(omsTransOrder); Map planChildMap = new HashMap<>(); planChildMap.put("transOrderId",omsTransOrder.getTransOrderId()); List omsOrderChildList = omsOrderChildMapper.selectByParameters(planChildMap); //反写通知单总重量 sumWeight(amsRequirementChildList.get(0).getRequirementChildId()); //反写计划总重量 sumWeightPlan(omsOrderChildList.get(0).getPlanChildId()); //推送大宗 try{ Map dzMap = new HashMap<>(); daZongUtil.executeEnvironment("/train/delete?poundNo="+omsTransOrder.getTransOrderId(), new Map[]{dzMap}); daZongUtil.executeEnvironment("/ha/train/delete?poundNo="+omsTransOrder.getTransOrderId(), new Map[]{dzMap}); }catch (Exception e){ //不抛异常,避免之前的未传运单无法删除 e.printStackTrace(); log.error(e.getMessage()); } return "OK"; } @Transactional(rollbackFor = Exception.class) public String changeTransOrder(Map map) throws Exception { BigDecimal deleted = DataChange.dataToBigDecimal(map.get("deleted")); OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey( DataChange.dataToBigDecimal(map.get("transOrderId"))); OmsOrderChild omsOrderChild = omsOrderChildMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(map.get("transOrderChildId"))); if (deleted.compareTo(new BigDecimal(1)) == 0) { //如果调用了删除,则判断有没有过磅 if (tmsWeightResultMapper.isWeight(omsTransOrder.getTransOrderId()) > 0) { throw new Exception("已过磅的运单无法删除!"); }else{ Map objectObjectHashMap = new HashMap<>(); objectObjectHashMap.put("transOrderNumber",omsTransOrder.getSerialNumber()); Map transResultMap = dzFeign.getTransResult(objectObjectHashMap); if (transResultMap != null && (transResultMap.get("ycgb") != null || transResultMap.get("gbDjbh") != null)) { throw new Exception("已过磅的运单无法删除!"); } } } if("2".equals(omsTransOrder.getDeleted().toString())&&("2".equals(deleted.toString())||"7".equals(deleted.toString()))){ throw new Exception("已完成的运单无法进行关闭!"); } if(deleted.compareTo(new BigDecimal(2)) == 0 || deleted.compareTo(new BigDecimal(20)) == 0) { omsOrderChild.setReceiptTime(new Date()); omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild); } omsTransOrder.setDeleteReason("" + map.get("deleteReason")); omsTransOrder.setDeleted(deleted); omsTransOrder.setUpdateTime(new Date()); omsTransOrder.setUpdateUsername(map.get("userId").toString()); if(deleted.compareTo(new BigDecimal(20)) == 0) { omsTransOrder.setDeleted(new BigDecimal(2)); } omsTransOrderMapper.updateByPrimaryKeySelective(omsTransOrder); if (deleted.compareTo(new BigDecimal(2))==0){ Map businessMap = omsTransOrderMapper.getBusinessType(omsTransOrder.getOrderType()); Map params = new HashMap<>(); switch (businessMap.get("businessScene").toString()) { case "生产": if(map.get("tonnage")!=null){ map.put("NET_WEIGHT_NEW",String.valueOf(Double.parseDouble(map.get("tonnage").toString())*60)); } Map map1 = emsFeign.emsdetailsordersAdd(map); if(!(boolean)map1.get("succeed")){ throw new Exception((String)map1.get("message")); } break; // default: // throw new Exception("未知的业务类型!"); } } AmsPlanChild amsPlanChild = amsPlanChildMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(map.get("planChildId"))); AmsRequirementChild amsRequirementChild = amsRequirementChildMapper.selectByPrimaryKey(amsPlanChild.getRequirementChildId()); AmsTransRequirement amsTransRequirement = amsTransRequirementMapper.selectByPrimaryKey(amsRequirementChild.getTransRequirementId()); String businessTypeName = amsTransRequirementMapper.selectBusinessTypeName(amsTransRequirement.getBusinessType().toString()); if (businessTypeName.equals("型钢销售订单") || businessTypeName.equals("高线销售订单") || (amsTransRequirement.getTransMode() != null && amsTransRequirement.getTransMode().compareTo(new BigDecimal(1)) == 0)) { AmsTransPlan amsTransPlan = amsTransPlanMapper.selectByPrimaryKey(amsPlanChild.getTransPlanId()); amsTransPlan.setDeleted(new BigDecimal(2)); amsTransPlanMapper.updateByPrimaryKey(amsTransPlan); } try { Map objectObjectHashMap = new HashMap<>(); objectObjectHashMap.put("capacityNumber",omsTransOrder.getCapacityNumber()); objectObjectHashMap.put("transOrderNumber",omsTransOrder.getSerialNumber()); objectObjectHashMap.put("identityCard",omsTransOrder.getIdentityCard()); objectObjectHashMap.put("capacityId",omsTransOrder.getCapacityId()); objectObjectHashMap.put("driverId",omsTransOrder.getDriverId()); //omsTransOrderService.buluCapacity(map); } catch (Exception e) { e.printStackTrace(); } if(deleted.compareTo(new BigDecimal(7)) == 0 || deleted.compareTo(new BigDecimal(1)) == 0){ //关闭运单,推送大宗 Map businessMap = omsTransOrderMapper.getBusinessType(omsTransOrder.getOrderType()); Map params = new HashMap<>(); if (businessTypeName != null && !businessTypeName.equals("内部领用") && !businessTypeName.equals("型钢销售订单") && !businessTypeName.equals("高线销售订单")) { switch (businessMap.get("businessScene").toString()) { case "采购": params.put("Rjhh", omsTransOrder.getSerialNumber()); params.put("rjhh", omsTransOrder.getSerialNumber()); params.put("Username", map.get("userName")); params.put("username", map.get("userName")); params.put("note", "单据错误"); params.put("action",3); daZongUtil.execute("30010000016", new Map[]{params}); break; case "销售": params.put("Rjhh", omsTransOrder.getSerialNumber()); params.put("rjhh", omsTransOrder.getSerialNumber()); params.put("username", map.get("userName")); params.put("note", "单据错误"); params.put("action",3); daZongUtil.execute("30010000016", new Map[]{params}); break; case "生产": //map.put("NET_WEIGHT", map.get("materialSpecification")); //emsFeign.emsdetailsordersAdd(map); //params.put("Rjhh", omsTransOrder.getSerialNumber()); //params.put("rjhh", omsTransOrder.getSerialNumber()); //params.put("username", map.get("userName")); //params.put("note", "单据错误"); //params.put("action",3); //daZongUtil.execute("30010000016", new Map[]{params}); break; default: throw new Exception("未知的业务类型!"); } } else if (businessTypeName != null && businessTypeName.equals("内部领用") && amsTransRequirement.getAlternateFields18().equals("1")) { switch (businessMap.get("businessScene").toString()) { case "采购": params.put("Rjhh", omsTransOrder.getSerialNumber()); params.put("rjhh", omsTransOrder.getSerialNumber()); params.put("Username", map.get("userName")); params.put("username", map.get("userName")); params.put("note", "单据错误"); daZongUtil.execute("30010000016", new Map[]{params}); break; case "销售": params.put("Rjhh", omsTransOrder.getSerialNumber()); params.put("rjhh", omsTransOrder.getSerialNumber()); params.put("username", map.get("userName")); params.put("note", "单据错误"); daZongUtil.execute("30010000016", new Map[]{params}); break; case "生产": //map.put("NET_WEIGHT", map.get("materialSpecification")); //emsFeign.emsdetailsordersAdd(map); //params.put("Rjhh", omsTransOrder.getSerialNumber()); //params.put("rjhh", omsTransOrder.getSerialNumber()); //params.put("username", map.get("userName")); //params.put("note", "单据错误"); //daZongUtil.execute("30010000016", new Map[]{params}); break; default: throw new Exception("未知的业务类型!"); } } } if (businessTypeName != null && (businessTypeName.equals("内部领用") || businessTypeName.equals("型钢销售订单") || businessTypeName.equals("高线销售订单"))) { Map paramsMap = new HashMap<>(); paramsMap.put("id", map.get("dlivDirnoSeq").toString()); try { //传WMS系统 String url = "/antai.maketx/v1/slmdlivdirlists/wuliuDel"; JSONObject accessToken = wmsUtil.executeObject("90010000005", paramsMap, map.get("accessToken").toString(), url); if (!accessToken.get("code").toString().equals("0")) { throw new Exception(accessToken.get("message").toString()); } } catch (Exception e) { e.printStackTrace(); log.error("推送wms异常:{}", e); throw new Exception("推送wms系统异常! "+ e.getMessage()); } } omsTransOrderMapper.updateOtherStatus(omsTransOrder.getTransOrderId(),omsTransOrder.getDeleted()); threadPool.execute(()->{ try { Thread.sleep(500); omsTransOrderService.sumWeight(amsRequirementChild.getRequirementChildId()); omsTransOrderService.sumWeightPlan(amsPlanChild.getPlanChildId()); omsTransOrderService.listAggCapacity(amsPlanChild.getPlanChildId()); } catch (InterruptedException e) { e.printStackTrace(); } }); return "OK"; } public String closeTransOrderByPlan(Map map) { omsTransOrderMapper.closeTransOrderByPlan(map); OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(map.get("transPlanId"))); Map orderChildMap = new HashMap<>(); orderChildMap.put("transPlanId", omsTransOrder.getTransOrderId()); List omsOrderChildList = omsOrderChildMapper.selectByParameters(orderChildMap); Set set = new HashSet<>(); for (OmsOrderChild omsOrderChild : omsOrderChildList) { AmsPlanChild amsPlanChild = amsPlanChildMapper.selectByPrimaryKey(omsOrderChild.getPlanChildId()); set.add(amsPlanChild.getRequirementChildId()); } for (BigDecimal requirementChildId : set) { sumWeight(requirementChildId); } return "关闭成功!"; } public List> getTransResult(Map map) throws Exception { //查询运单 Map transOrder = omsTransOrderMapper.getTransOrder(map); if (transOrder == null) { throw new Exception("运输订单不可用!"); } //查询所有实绩,按顺序排序 Map searchMap = new HashMap<>(); searchMap.put("transOrderId", transOrder.get("transOrderId")); List> tmsReplaceFrontResults = tmsReplaceFrontResultMapper.getTmsReplaceFrontResultList2(searchMap); List> tmsSignInResults = tmsSignInResultMapper.getTmsSignInResultList2(searchMap); List> tmsEnfactoryResults = tmsEnfactoryResultMapper.getTmsEnfactoryResultList2(searchMap); List> tmsOutfactoryResults = tmsOutfactoryResultMapper.getTmsOutfactoryResultList2(searchMap); List> tmsLoadResults = tmsLoadResultMapper.getTmsLoadResultList2(searchMap); List> tmsUnloadResults = tmsUnloadResultMapper.getTmsUnloadResultList2(searchMap); List> tmsWeightResults = tmsWeightResultMapper.getTmsWeightResultList2(searchMap); List> tmsQualityResults = tmsQualityResultMapper.getTmsQualityResultList2(searchMap); List> tmsArrivalResults = tmsArrivalResultMapper.getTmsArrivalResultList2(searchMap); List> tmsReceiptResults = tmsReceiptResultMapper.getTmsReceiptResultList2(searchMap); //添加进新数组 List> list = new ArrayList<>(); list.addAll(tmsReplaceFrontResults); list.addAll(tmsSignInResults); list.addAll(tmsEnfactoryResults); list.addAll(tmsOutfactoryResults); list.addAll(tmsLoadResults); list.addAll(tmsUnloadResults); list.addAll(tmsQualityResults); list.addAll(tmsArrivalResults); list.addAll(tmsReceiptResults); for (Map item : tmsWeightResults) { JSONObject tare = new JSONObject(); JSONObject gross = new JSONObject(); tare.put("type", "计皮"); tare.put("segmentSqe", item.get("tareSegmentSqe")); tare.put("weight", item.get("tareWeight")); tare.put("weightTime", item.get("tareWeightTime")); tare.put("resultTime", item.get("tareWeightTime")); tare.put("weightPlace", item.get("tarePlace")); tare.put("resultPoint", item.get("tarePlace")); tare.put("segmentSqe", item.get("tareSegmentSqe")); tare.put("currentLineSqe", item.get("currentLineSqe")); tare.put("poundNo", item.get("poundNo")); tare.put("materialName", item.get("materialName")); tare.put("netWeight", item.get("netWeight")); tare.put("netWeightTime", item.get("netWeightTime")); tare.put("pointNames", item.get("tarePointNames")); tare.put("pointIds", item.get("tarePoints")); tare.put("resultId", item.get("resultId")); tare.put("transOrderId", item.get("transOrderId")); gross.put("type", "计毛"); gross.put("segmentSqe", item.get("grossSegmentSqe")); gross.put("weight", item.get("grossWeight")); gross.put("weightTime", item.get("grossWeightTime")); gross.put("resultTime", item.get("grossWeightTime")); gross.put("weightPlace", item.get("grossPlace")); gross.put("resultPoint", item.get("grossPlace")); gross.put("segmentSqe", item.get("grossSegmentSqe")); gross.put("poundNo", item.get("poundNo")); gross.put("materialName", item.get("materialName")); gross.put("netWeight", item.get("netWeight")); gross.put("netWeightTime", item.get("netWeightTime")); gross.put("currentLineSqe", item.get("currentLineSqe")); gross.put("pointNames", item.get("grossPointNames")); gross.put("pointIds", item.get("grossPoints")); gross.put("resultId", item.get("resultId")); gross.put("transOrderId", item.get("transOrderId")); list.add(tare); list.add(gross); } //排序 list.sort(new Comparator>() { @Override public int compare(Map o1, Map o2) { JSONObject j1 = JSONObject.parseObject(JSONObject.toJSONString(o1)); JSONObject j2 = JSONObject.parseObject(JSONObject.toJSONString(o2)); return j1.getBigDecimal("segmentSqe") .compareTo(j2.getBigDecimal("segmentSqe")); } }); List> timingList = tmsTimingResultMapper.tmstimingresultsList(searchMap); int i = 0; for (Map item : timingList) { item.put("currentLineSqe", timingList.size()); item.put("segmentSqe", i); item.put("type", item.get("type") + "" + item.get("TIME_TYPE")); i++; } //计时作业直接加进去 list.addAll(timingList); //钢坯内转一 if("钢厂-高线一车间".equals(transOrder.get("businessRange")) && "拉红送".equals(transOrder.get("businessName"))) { List> innerGpData = omsTransOrderMapper.getInnerGpData(transOrder); list.addAll(innerGpData); } if("上站型钢".equals(transOrder.get("businessName"))) { Map objectObjectHashMap = new HashMap<>(); objectObjectHashMap.put("capacityNumber",transOrder.get("capacityNumber") + "-" + transOrder.get("driverName")); objectObjectHashMap.put("requirementStartTime",transOrder.get("driverConfirmTime")); objectObjectHashMap.put("requirementEndTime",transOrder.get("requirementEndTime")); List> xgData = tmiFeign.getWmsData(objectObjectHashMap); list.addAll(xgData); } if("补型钢".equals(transOrder.get("businessName"))) { Map objectObjectHashMap = new HashMap<>(); objectObjectHashMap.put("capacityNumber","补-" + transOrder.get("capacityNumber") + "-" + transOrder.get("driverName")); objectObjectHashMap.put("requirementStartTime",transOrder.get("driverConfirmTime")); objectObjectHashMap.put("requirementEndTime",transOrder.get("requirementEndTime")); List> xgData = tmiFeign.getBuWmsData(objectObjectHashMap); list.addAll(xgData); } return list; } //批量新增销售派车单 @Transactional(rollbackFor = Exception.class) public String saleDispatchOrderList(Map map) throws Exception { List dlivDirnoSeqList = new ArrayList(); AmsPlanChild amsPlanChild = amsPlanChildMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(map.get("planChildId"))); AmsTransPlan amsTransPlan = amsTransPlanMapper.selectByPrimaryKey(amsPlanChild.getTransPlanId()); AmsRequirementChild amsRequirementChild = amsRequirementChildMapper.selectByPrimaryKey(amsPlanChild.getRequirementChildId()); AmsTransRequirement amsTransRequirement = amsTransRequirementMapper.selectByPrimaryKey(amsRequirementChild.getTransRequirementId()); List> mapList = (ArrayList) map.get("list"); Map orderChild = new HashMap<>(); orderChild.put("planChildId", DataChange.dataToBigDecimal(map.get("planChildId"))); List omsOrderChildList = omsOrderChildMapper.selectByParameters(orderChild); //效验是否超出计划重量 BigDecimal sumWeight = new BigDecimal(0); Map transPlanMap = new HashMap<>(); transPlanMap.put("serialNumber", amsTransPlan.getSerialNumber()); List> salePlanList = amsTransPlanMapper.getSalePlanList(transPlanMap); BigDecimal residueweight = DataChange.dataToBigDecimal(salePlanList.get(0).get("residueweight")); for (Map stringObjectMap : mapList) { sumWeight = sumWeight.add(DataChange.dataToBigDecimal(stringObjectMap.get("materialWeight"))); } if (sumWeight.compareTo(residueweight) == 1) { throw new Exception("超出计划重量!"); } //查询物资及物资大类信息 Map materialMap = new HashMap<>(); materialMap.put("materialId", amsRequirementChild.getMaterialId()); Map materialType = omsTransOrderMapper.getMaterialInfo(materialMap); if (materialType == null) { materialType = new HashMap<>(); } BigDecimal lineId; if (amsTransRequirement.getLineId() != null) { lineId = amsTransRequirement.getLineId(); } else { lineId = omsTransOrderMapper.matchLineId(amsTransRequirement.getBusinessType(), DataChange.dataToBigDecimal(materialType.get("materialTypeId")), DataChange.dataToBigDecimal(amsRequirementChild.getOperationsNameId()), amsRequirementChild.getMaterialId(), amsRequirementChild.getShippingPointId() == null ? new BigDecimal(0) : amsRequirementChild.getShippingPointId(), amsRequirementChild.getReceivingPointId(), amsTransRequirement.getReceivingCompanyId()); } //校验分录余额 Map objectMap = new HashMap<>(); objectMap.put("planChildId", amsPlanChild.getPlanChildId()); Map planDetails = omsOrderChildMapper.findPlanChild2(objectMap); if (planDetails == null) { throw new Exception("运输计划异常:可能被删除或停用!无法派单,请刷新!"); } BigDecimal businessType = DataChange.getBigDecimal(planDetails.get("businessType")); String businessScene = DataChange.getString(planDetails.get("businessScene")); List> mapArray = new ArrayList(); List transOrderList = new ArrayList<>(); List orderChildList = new ArrayList<>(); String businessTypeName = amsTransRequirementMapper.selectBusinessTypeName(amsTransRequirement.getBusinessType().toString()); int i = 1; for (Map maps : mapList) { // if((((List)map.get("roleCodes"))).contains("xsxz") && "大宗销售订单".equals(businessTypeName) && omsTransOrderMapper.countDriverScene(DataChange.dataToBigDecimal(maps.get("driverId"))) > 0){ // throw new Exception(businessTypeName + "类型的运单已派发给该司机,请等待作业完成再派发下一单!"); // } //增加派车主表记录 OmsTransOrder omsTransOrder = new OmsTransOrder(); omsTransOrder.setTransOrderId(omsTransOrderMapper.nextId()); omsTransOrder.setSerialNumber(DataChange.generateEightDigitsNumber("YSDD", omsTransOrder.getTransOrderId().intValue())); omsTransOrder.setCapacityId(DataChange.dataToBigDecimal(maps.get("capacityId"))); if (map.get("transMode").equals("汽运")) { omsTransOrder.setDriverId(DataChange.dataToBigDecimal(maps.get("driverId"))); omsTransOrder.setDriverPhone("" + maps.get("personPhone")); } omsTransOrder.setOrderType(amsTransRequirement.getBusinessType()); omsTransOrder.setCurrentLineSeq(DataChange.dataToBigDecimal(0)); omsTransOrder.setIssueTime(new Date()); omsTransOrder.setInsertTime(new Date()); omsTransOrder.setDeleted(new BigDecimal(4)); omsTransOrder.setLineId(lineId); omsTransOrder.setInsertUsername(map.get("userName").toString()); omsTransOrder.setAlternateFields3(map.get("isMultiple") == null ? "" : map.get("isMultiple").toString()); omsTransOrder.setAlternateFields8(map.get("multipleType") == null ? "" : map.get("multipleType").toString()); omsTransOrder.setAlternateFields28(map.get("multipleTimes") == null ? "1" : map.get("multipleTimes").toString()); entityDispose.disposeOmsTransOrder(omsTransOrder); if(maps.get("supplementaryId") != null && maps.get("supplementaryId").toString() != "" && ((ArrayList)maps.get("supplementaryId")).size() > 0){ String bhdh = omsTransOrderMapper.getBhdhById((ArrayList)maps.get("supplementaryId")); omsTransOrder.setAlternateFields6(bhdh); } transOrderList.add(omsTransOrder); //新增派车子表记录 OmsOrderChild omsOrderChild = new OmsOrderChild(); omsOrderChild.setOrderChildId(omsOrderChildMapper.nextId()); omsOrderChild.setTransOrderId(omsTransOrder.getTransOrderId()); omsOrderChild.setPlanChildId(DataChange.dataToBigDecimal(map.get("planChildId"))); omsOrderChild.setMaterialId(amsPlanChild.getMaterialId()); omsOrderChild.setDeleted(new BigDecimal(0)); if (maps.containsKey("materialNumber")) { omsOrderChild.setMaterialWeight(DataChange.dataToBigDecimal(maps.get("materialNumber"))); } if (!maps.containsKey("materialWeight")) { throw new Exception("请填写物资重量!"); } omsOrderChild.setMaterialNumber(DataChange.dataToBigDecimal(maps.get("materialWeight"))); if(omsOrderChild.getMaterialNumber().compareTo(BigDecimal.ZERO) <= 0) { throw new Exception("物资重量异常-需大于0"); } omsOrderChild.setInsertTime(new Date()); omsOrderChild.setInsertUsername(map.get("userName").toString()); omsOrderChild.setAlternateFields5(maps.get("personnelCard") == null ? null : maps.get("personnelCard").toString()); omsOrderChild.setAlternateFields6(maps.get("personnelPhone") == null ? null : maps.get("personnelPhone").toString()); omsOrderChild.setAlternateFields7("1"); if (businessTypeName.equals("型钢销售订单") || businessTypeName.equals("高线销售订单")) { omsOrderChild.setAlternateFields1(omsOrderChildMapper.selectMax(i)); i++; } omsOrderChild.setAlternateFields2(map.get("loadPointId") == null ? amsTransPlan.getAlternateFields2() : map.get("loadPointId").toString()); if (map.get("transMode").equals("火运")) { omsOrderChild.setAlternateFields3("" + maps.get("allocation")); dlivDirnoSeqList.add(omsOrderChild.getAlternateFields1()); } entityDispose.disposeOrderChild(omsOrderChild); orderChildList.add(omsOrderChild); if (map.get("transMode").equals("汽运")) { DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Map businessMap = omsTransOrderMapper.getBusinessType(amsTransRequirement.getBusinessType()); Map capacity = omsTransOrderMapper.getCapacityById(DataChange.dataToBigDecimal(maps.get("capacityId"))); Map driver = omsTransOrderMapper.getPersonnelById(DataChange.dataToBigDecimal(maps.get("driverId"))); if (businessMap == null) { throw new Exception("业务类型不存在!"); } else if (capacity == null) { throw new Exception("车辆不存在!"); } else if (driver == null) { throw new Exception("司机不存在!"); } if("是".equals(capacity.get("capacityBlacklist"))) { throw new Exception("不允许派发给黑名单车辆"); } Map params = new HashMap<>(); params.put("clbh", capacity.get("capacityNumber")); params.put("cllx", capacity.get("capacityType")); params.put("sjxm", driver.get("personnelName")); params.put("sfzh", driver.get("identityCard")); params.put("tel", driver.get("personnelPhone")); params.put("wlbh", planDetails.get("materialCode")); params.put("bmbh", planDetails.get("receiveSourceId")); params.put("shbh", planDetails.get("supplierCompanyCode")); params.put("fhbh", planDetails.get("carrierCode")); params.put("ckbh", planDetails.get("shippingPointSourceId") == null ? "" : planDetails.get("shippingPointSourceId")); params.put("fhdd", planDetails.get("fhdd") == null ? "":planDetails.get("fhdd")); params.put("note", ""); params.put("zjs", omsOrderChild.getMaterialWeight() == null ? "0" : omsOrderChild.getMaterialWeight()); params.put("zsl", omsOrderChild.getMaterialNumber()); params.put("hsdj", planDetails.get("unitPrice") == null ? "" : planDetails.get("unitPrice")); params.put("yfdj", "");//运费单价 params.put("htbh", planDetails.get("orderNumber") == null ? "" : planDetails.get("orderNumber")); params.put("tdls", planDetails.get("tdls") != null ? planDetails.get("tdls"):planDetails.get("transRequirementId")); params.put("tdfl", planDetails.get("tdfl") != null ? planDetails.get("tdfl"):planDetails.get("requirementChildId")); params.put("ywbh", amsTransRequirement.getBusinessType()); params.put("rjhh", omsTransOrder.getSerialNumber()); params.put("username", omsTransOrder.getInsertUsername()); params.put("wldh", planDetails.get("planNumber")); params.put("pfjd", capacity.get("emissionStandardName") == null ? "" :capacity.get("emissionStandardName"));//排放阶段 params.put("sfzhid", driver.get("innerCode") == null ? "" : driver.get("innerCode"));//身份证内码 params.put("rjhhid", omsOrderChild.getOrderChildId());//运单序号 = 分录主键 if(omsTransOrder.getAlternateFields6() != null){ params.put("bhdh",omsTransOrder.getAlternateFields6()); String[] bhdhList = omsTransOrder.getAlternateFields6().split(","); params.put("bhnm",omsTransOrderMapper.getTdlsByBhdh(bhdhList)); }else{ params.put("bhdh",""); params.put("bhnm",""); } mapArray.add(params); //推送车辆档案 Map capacityMap = new HashMap<>(); capacity = omsTransOrderMapper.findCapacityMes(omsTransOrder.getCapacityId()); driver = omsTransOrderMapper.findDriverMes(omsTransOrder.getDriverId()); capacityMap.putAll(capacity); capacityMap.putAll(driver); daZongUtil.execute("30010000002", new Map[]{capacityMap}); //新增各类实绩 creatTransResult(lineId, omsTransOrder.getTransOrderId(), omsOrderChild.getPlanChildId(),map.get("userName").toString()); } } omsTransOrderMapper.batchInsert(transOrderList); omsOrderChildMapper.batchInsert(orderChildList); //反写通知单总重量 sumWeight(amsRequirementChild.getRequirementChildId()); //如果是汽运需要传大宗(改到接单时推送) if (mapArray.size() > 0 && (businessTypeName.equals("大宗销售订单") || businessTypeName.equals("普通销售汽运"))) { Map[] params = new Map[mapArray.size()]; for (int j = 0; j < mapArray.size(); j++) { params[j] = mapArray.get(j); } daZongUtil.execute("30010000036", params); } //如果有销售订单、业务类型是安泰高线销售或安泰型钢销售需要传WMS,并且发运通知单的状态是正在执行才推送 if (amsRequirementChild.getDeleted().compareTo(new BigDecimal(8)) == 0 && dlivDirnoSeqList.size() > 0 && (amsTransRequirement.getSourceOrderId() != null || amsTransRequirement.getSourceOrderId().compareTo(new BigDecimal(0)) != 0) && (businessTypeName.equals("安泰高线销售") || businessTypeName.equals("安泰型钢销售") || businessTypeName.equals("型钢销售订单") || businessTypeName.equals("高线销售订单"))) { List> listMap = omsTransOrderMapper.selectDlivDirnolistByWMS(dlivDirnoSeqList); String url = "/antai.maketx/v1/slmdlivdirlists/wuliuAdd"; wmsUtil.executeArray("90010000004", listMap, map.get("accessToken").toString(), url); } return "OK"; } //销售新增派车单 @Transactional(rollbackFor = Exception.class) public String saleDispatchOrder(Map map) throws Exception { List dlivDirnoSeqList = new ArrayList(); BigDecimal capacityId = DataChange.dataToBigDecimal(map.get("capacityId")); BigDecimal driverId = DataChange.dataToBigDecimal(map.get("driverId")); //新增运输订单 OmsTransOrder omsTransOrder = new OmsTransOrder(); omsTransOrder.setTransOrderId(omsTransOrderMapper.nextId()); omsTransOrder.setSerialNumber(DataChange.generateEightDigitsNumber("YSDD", omsTransOrder.getTransOrderId().intValue())); omsTransOrder.setCapacityId(capacityId); omsTransOrder.setCurrentLineSeq(BigDecimal.ZERO); omsTransOrder.setOrderType(BigDecimal.ZERO); omsTransOrder.setIssueTime(new Date()); omsTransOrder.setInsertTime(new Date()); omsTransOrder.setDeleted(new BigDecimal(4)); omsTransOrder.setInsertUsername(map.get("userName").toString()); omsTransOrder.setDriverId(driverId); map.put("transOrderId", omsTransOrder.getTransOrderId()); //新增运输订单子表 List omsOrderChildren = new ArrayList<>(); List> planChildren = (ArrayList) map.get("children"); if (planChildren.size() <= 0) { throw new Exception("没有计划,无法派单!"); } BigDecimal orderType = null; for (Map planChild : planChildren) { //获取计划子表数据 AmsPlanChild amsPlanChild = amsPlanChildMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(planChild.get("planChildId"))); //获取计划主表数据 AmsTransPlan amsTransPlan = amsTransPlanMapper.selectByPrimaryKey(amsPlanChild.getTransPlanId()); AmsRequirementChild amsRequirementChild = amsRequirementChildMapper.selectByPrimaryKey(amsPlanChild.getRequirementChildId()); AmsTransRequirement amsTransRequirement = amsTransRequirementMapper.selectByPrimaryKey(amsRequirementChild.getTransRequirementId()); //查询物资及物资大类信息 BigDecimal lineId; if (amsTransRequirement.getLineId() != null) { lineId = amsTransRequirement.getLineId(); } else { Map materialMap = new HashMap<>(); materialMap.put("materialId", amsRequirementChild.getMaterialId()); Map materialType = omsTransOrderMapper.getMaterialInfo(materialMap); if (materialType == null) { materialType = new HashMap<>(); } lineId = omsTransOrderMapper.matchLineId(amsTransRequirement.getBusinessType(), DataChange.dataToBigDecimal(materialType.get("materialTypeId")), DataChange.dataToBigDecimal(amsRequirementChild.getOperationsNameId()), amsRequirementChild.getMaterialId(), amsRequirementChild.getShippingPointId(), amsRequirementChild.getReceivingPointId(), amsTransRequirement.getReceivingCompanyId()); } omsTransOrder.setLineId(lineId); //根据需求子表主键查找是火运还是汽运(0:汽运,1:火运) String transMode = omsTransOrderMapper.getTransModeByRequirementChildId(amsPlanChild.getRequirementChildId()); if (amsTransPlan.getAlternateFields1().equals("是")) { //多拼计划只能派发一车 //查找计划下派发了多少车 Integer integer = omsTransOrderMapper.selectCountByOmsOrderChild(amsPlanChild.getPlanChildId()); if (integer > 0) { throw new Exception("多拼计划只能派发一车!"); } } //校验分录余额 Map planDetails = omsOrderChildMapper.findPlanChild2(planChild); omsTransOrder.setAlternateFields2(planDetails.get("rootCompanyId") + ""); if (planDetails == null) { throw new Exception("运输计划异常:可能被删除或停用!无法派单,请刷新!"); } BigDecimal businessType = DataChange.getBigDecimal(planDetails.get("businessType")); String businessScene = DataChange.getString(planDetails.get("businessScene")); if (businessType == null) { throw new Exception("非法的业务类型,无法派单,请确认需求/通知单信息!"); } else if (orderType == null) { orderType = businessType; } else if (orderType.compareTo(businessType) != 0) { throw new Exception("分录类型不一致,无法派单!"); } // if((businessScene.equals("采购") || businessScene.equals("销售")) && omsTransOrderMapper.countDriverScene(driverId,businessScene) > 0){ // throw new Exception(businessScene + "类型的运单已派发给该司机,请等待作业完成再派发下一单!"); // } BigDecimal numberLeft = DataChange.dataToBigDecimal(planDetails.get("numberLeft")); BigDecimal materialNumber = DataChange.dataToBigDecimal(planChild.get("materialWeight")); if (materialNumber.compareTo(numberLeft) > 0) { throw new Exception("重量超出需求限制!"); } int controlMode = Integer.parseInt(planDetails.get("controlMode").toString()); switch (controlMode) { case 0: //不控制 break; case 1: //1:数量控制 numberLeft = DataChange.dataToBigDecimal(planDetails.get("numberLeft")); materialNumber = DataChange.dataToBigDecimal(planChild.get("materialWeight")); if (materialNumber.compareTo(numberLeft) > 0) { throw new Exception("重量超出需求限制!"); } break; case 2: //2:金额控制 break; case 3: //3:车数控制 BigDecimal truckLeft = DataChange.dataToBigDecimal(planDetails.get("truckLeft")); BigDecimal truckNumber = BigDecimal.ONE; if (truckNumber.compareTo(truckLeft) > 0) { throw new Exception("车辆数量超出需求限制!"); } break; default: throw new Exception("未知的控制类型!"); } omsTransOrderMapper.updatePlanStatus(planDetails); OmsOrderChild omsOrderChild = new OmsOrderChild(); omsOrderChild.setOrderChildId(omsOrderChildMapper.nextId()); omsOrderChild.setTransOrderId(omsTransOrder.getTransOrderId()); omsOrderChild.setPlanChildId(DataChange.dataToBigDecimal(planDetails.get("planChildId"))); omsOrderChild.setMaterialId(amsPlanChild.getMaterialId()); omsOrderChild.setMaterialWeight(DataChange.dataToBigDecimal(planChild.get("materialNumber"))); omsOrderChild.setMaterialNumber(DataChange.dataToBigDecimal(planChild.get("materialWeight"))); if(omsOrderChild.getMaterialNumber().compareTo(BigDecimal.ZERO) <= 0) { throw new Exception("物资重量异常:需大于0"); } omsOrderChild.setAlternateFields1(planChild.get("dlivDirnoSeq").toString());//派车单号 omsOrderChild.setOriginMaterialZjs(DataChange.dataToBigDecimal(planChild.get("originMaterialZjs"))); omsOrderChild.setOriginPoundNo(planChild.get("originPoundNo") == null ? "":planChild.get("originPoundNo").toString()); omsOrderChild.setAlternateFields4(planChild.get("originPoundUrl") == null ? "":planChild.get("originPoundUrl").toString()); omsOrderChild.setOriginDate(DataChange.dataToDate(planChild.get("originDate"))); omsOrderChild.setInsertUpdateRemark("" + map.get("memo")); omsOrderChild.setAlternateFields3(map.get("position").toString());//临时货位 omsOrderChild.setAlternateFields7("1"); dlivDirnoSeqList.add(planChild.get("dlivDirnoSeq").toString()); //String storageattr = wmsUtil.getStorageattrToWMSStorageattr(map.get("storageattr").toString()); //获取装货点-仓库Id //String storageattr = omsTransOrderMapper.findOperationByOperationName(storageattr1); //omsOrderChild.setAlternateFields2(storageattr);//发货仓库 omsOrderChild.setInsertTime(new Date()); omsOrderChild.setInsertUsername(map.get("userName").toString()); omsOrderChild.setDeleted(BigDecimal.ZERO); entityDispose.disposeOrderChild(omsOrderChild); omsOrderChildren.add(omsOrderChild); String businessTypeName = amsTransRequirementMapper.selectBusinessTypeName(amsTransRequirement.getBusinessType().toString()); //推送大宗 火运不需要对接大宗(改到接单时推送) if (transMode.equals("0") && businessTypeName.equals("大宗销售订单")) { //推送大宗 dispatchPush(businessType, capacityId, driverId, omsTransOrder, omsOrderChild, planDetails); } } //新增各类实绩 creatTransResult(omsTransOrder.getLineId(), omsTransOrder.getTransOrderId(),omsOrderChildren.get(0).getPlanChildId(), map.get("userName").toString()); omsTransOrder.setOrderType(orderType); entityDispose.disposeOmsTransOrder(omsTransOrder); omsTransOrderMapper.insertSelective(omsTransOrder); omsOrderChildMapper.batchInsert(omsOrderChildren); //如果发运通知单的状态是正在执行就推送WMS,否则不推送(为了应该能让司机能够进厂排队),并且需要有销售订单、业务类型是安泰高线销售或安泰型钢销售 AmsPlanChild amsPlanChild = amsPlanChildMapper.selectByPrimaryKey(omsOrderChildren.get(0).getPlanChildId()); AmsRequirementChild amsRequirementChild = amsRequirementChildMapper.selectByPrimaryKey(amsPlanChild.getRequirementChildId()); //反写总重量 sumWeight(amsRequirementChild.getRequirementChildId()); AmsTransRequirement amsTransRequirement = amsTransRequirementMapper.selectByPrimaryKey(amsRequirementChild.getTransRequirementId()); String businessTypeName = amsTransRequirementMapper.selectBusinessTypeName(amsTransRequirement.getBusinessType().toString()); if (amsRequirementChild.getDeleted().compareTo(DataChange.dataToBigDecimal(8)) == 0 && dlivDirnoSeqList.size() > 0 && (amsTransRequirement.getSourceOrderId() != null || amsTransRequirement.getSourceOrderId().compareTo(new BigDecimal(0)) != 0) && (businessTypeName.equals("安泰高线销售") || businessTypeName.equals("安泰型钢销售") || businessTypeName.equals("型钢销售订单") || businessTypeName.equals("型钢销售订单"))) { List> listMap = omsTransOrderMapper.selectDlivDirnolistByWMS(dlivDirnoSeqList); String url = "/antai.maketx/v1/slmdlivdirlists/wuliuAdd"; wmsUtil.executeArray("90010000004", listMap, map.get("accessToken").toString(), url); } return "派车成功!"; } public BigDecimal getCountEnfactory(Map map) { return omsTransOrderMapper.getCountEnfactory(map); } /** * 更新运单状态 * * @param transOrderId * @param sequence 路段顺序号 * @param orderStatus 运单执行状态 * @return */ public int updateOrderStatus(BigDecimal transOrderId, BigDecimal sequence, String orderStatus, String userName) throws Exception { try { Map searchMap = new HashMap<>(); searchMap.put("transOrderId", transOrderId.toString()); searchMap.put("userName", userName); Map transOrder = omsTransOrderMapper.getTransOrder(searchMap); if (transOrder == null) { throw new Exception("没有查询到唯一运单!"); } searchMap.put("businessTypeName",transOrder.get("businessTypeName").toString()); searchMap.put("billingType",transOrder.get("billingType").toString()); BigDecimal deleted = DataChange.dataToBigDecimal(transOrder.get("deleted")); BigDecimal endSeq = DataChange.dataToBigDecimal(transOrder.get("endSeq")); BigDecimal currentLineSeq = DataChange.dataToBigDecimal(transOrder.get("currentLineSeq")); if (sequence.compareTo(currentLineSeq.add(BigDecimal.ONE)) != 0) { Map config = omsTransOrderMapper.getConfigByName("运输实绩顺序执行"); config = config == null ? new HashMap<>() : config; if("否".equals(config.get("valueString"))){ log.info("配置如此,允许跳步骤执行"); }else{ throw new Exception("顺序错误,不允许跳步骤执行!"); } } OmsTransOrder omsTransOrder = new OmsTransOrder(); omsTransOrder.setSerialNumber(transOrder.get("transOrderNumber").toString()); omsTransOrder.setTransOrderId(transOrderId); omsTransOrder.setCurrentLineSeq(sequence); omsTransOrder.setOrderStatus(orderStatus); //补录车辆档案 //try{ // buluCapacity(transOrder); //}catch (Exception e){ // e.printStackTrace(); // log.error("补录车辆档案失败:"+e.getMessage()); //} if("采购".equals(transOrder.get("businessScene"))){ //采购查询大宗补录卸货实绩 try{ findUnloadDetails(omsTransOrder,userName); }catch (Exception e){ e.printStackTrace(); } } if("销售".equals(transOrder.get("businessScene"))){ //销售查询大宗补录装货实绩 try{ findLoadDetails(omsTransOrder,userName); }catch (Exception e){ e.printStackTrace(); } } if("大宗销售订单".equals(transOrder.get("businessTypeName")) && (transOrder.get("materialName")+"").contains("复磅")){ //销售查询是否有同车号,业务类型为型钢销售订单、高线销售订单,未接单但有装货的运单,最近一条。迁移其他实绩 replaceResultSpecial(transOrder); } if (deleted.compareTo(new BigDecimal(4)) == 0 || deleted.compareTo(new BigDecimal(5)) == 0) { //正在运行中的运单需要校验是否结束 if (endSeq.compareTo(BigDecimal.ZERO) > 0 && endSeq.compareTo(sequence) <= 0) { //关闭运单 omsTransOrder.setDeleted(new BigDecimal(2)); omsTransOrder.setUpdateUsername(userName); omsTransOrder.setUpdateTime(new Date()); //if ( // ("采购".equals(transOrder.get("businessScene")) && "自提".equals(transOrder.get("isSelfMention"))) // || ("销售".equals(transOrder.get("businessScene")) && "非自提".equals(transOrder.get("isSelfMention"))) // || ("生产".equals(transOrder.get("businessScene"))) //) { // //调用结算接口生成详单 // //emsFeign.emsdetailsordersAdd(searchMap); //} }else{ //调整运单状态 omsTransOrder.setDeleted(new BigDecimal(5)); omsTransOrder.setUpdateUsername(userName); omsTransOrder.setUpdateTime(new Date()); } omsTransOrderMapper.updateOtherStatus(omsTransOrder.getTransOrderId(),omsTransOrder.getDeleted()); }else if(deleted.compareTo(new BigDecimal(9)) == 0) { //待执行运单变为已执行 if("出厂".equals(orderStatus)){ omsTransOrder.setDeleted(new BigDecimal(2)); }else{ omsTransOrder.setDeleted(new BigDecimal(5)); } omsTransOrder.setUpdateUsername(userName); omsTransOrder.setUpdateTime(new Date()); } entityDispose.disposeOmsTransOrder(omsTransOrder); omsTransOrderMapper.updateByPrimaryKeySelective(omsTransOrder); } catch (Exception e) { e.printStackTrace(); log.error("更新运单状态失败:" + e.getMessage()); throw e; } return 0; } public List> getDriverTotalResult(Map map) { return omsTransOrderMapper.getDriverTotalResult(map); } public List> getCapacityTotalResult(Map map) { return omsTransOrderMapper.getCapacityTotalResult(map); } //新增WMS派车单需要信息 @TargetDataSource(dataSourceKey = DataSourceKey.DB_OTHER) public int insertSlmDlivDirListByWMS(Map params) throws Exception { int i = 0; try { if (params.size() == 0) { throw new Exception("WMS数据为空!"); } i = omsTransOrderMapper.insertSlmDlivDirListByWMS(params); } catch (Exception e) { log.error("同步WMS数据失败!", e); throw new Exception("同步WMS数据失败!"); } return i; } public String selectMax(int i) { return omsOrderChildMapper.selectMax(i); } @Transactional(rollbackFor = Exception.class) public String mergeTransOrder(Map map) throws Exception { BigDecimal lineId = DataChange.dataToBigDecimal(map.get("lineId")); String userId = map.get("userId").toString(); String userName = map.get("userName").toString(); List> list = (ArrayList) map.get("list"); if (list.size() <= 1) { throw new Exception("合并至少需要两条运单!"); } /** * 仅允许同车号、同司机、同业务、未接收的运单合并,完全合并的运单不允许再合并。 * 1.查询所有分录 * 2.生成新的运单、新分录、新实绩 * 3.删除所有旧运单 */ Set set = new HashSet<>(); BigDecimal capacityId = DataChange.dataToBigDecimal(list.get(0).get("capacityId")); BigDecimal driverId = DataChange.dataToBigDecimal(list.get(0).get("driverId")); BigDecimal driverId2 = DataChange.dataToBigDecimal(list.get(0).get("driverId2")); BigDecimal orderType = DataChange.dataToBigDecimal(list.get(0).get("orderType")); List omsTransOrders = new ArrayList<>(); List transOrderChildren = new ArrayList<>(); for (Map item : list) { BigDecimal transOrderId = DataChange.dataToBigDecimal(item.get("transOrderId")); OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(transOrderId); omsTransOrders.add(omsTransOrder); if (omsTransOrder.getDeleted().compareTo(new BigDecimal(4)) != 0) { throw new Exception("仅允许合并'未确认'的运单!"); } else if (capacityId.compareTo(omsTransOrder.getCapacityId()) != 0) { throw new Exception("仅允许合并同车号的运单!"); } else if (driverId.compareTo(omsTransOrder.getDriverId()) != 0 || driverId2.compareTo(omsTransOrder.getDriverId2()) != 0) { throw new Exception("仅允许合并同司机的运单!"); } else if (orderType.compareTo(omsTransOrder.getOrderType()) != 0) { throw new Exception("仅允许合并同业务的运单!"); } if (set.contains("" + transOrderId)) { continue; } else { set.add("" + transOrderId); Map searchMap = new HashMap<>(); searchMap.put("transOrderId", transOrderId); transOrderChildren.addAll(omsOrderChildMapper.selectByParameters(searchMap)); } } if (set.toArray().length == 1) { throw new Exception("运单已合并,无需再次合并!"); } //新运单 OmsTransOrder omsTransOrder = new OmsTransOrder(); omsTransOrder.setTransOrderId(omsTransOrderMapper.nextId()); omsTransOrder.setSerialNumber(DataChange.generateEightDigitsNumber("YSDD", omsTransOrder.getTransOrderId().intValue())); omsTransOrder.setCapacityId(capacityId); omsTransOrder.setCurrentLineSeq(BigDecimal.ZERO); omsTransOrder.setLineId(lineId); omsTransOrder.setIssueTime(new Date()); omsTransOrder.setInsertTime(new Date()); omsTransOrder.setDeleted(new BigDecimal(4)); omsTransOrder.setInsertUsername(userName); omsTransOrder.setInsertUpdateRemark("合并生成运单"); omsTransOrder.setDriverId(driverId); omsTransOrder.setDriverId2(driverId2); omsTransOrder.setOrderType(orderType); omsTransOrder.setOrderStatus("等待执行"); map.put("transOrderId", omsTransOrder.getTransOrderId()); entityDispose.disposeOmsTransOrder(omsTransOrder); omsTransOrderMapper.insertSelective(omsTransOrder); //新分录 for (OmsOrderChild omsOrderChild : transOrderChildren) { omsOrderChild.setOrderChildId(omsOrderChildMapper.nextId()); omsOrderChild.setTransOrderId(omsTransOrder.getTransOrderId()); entityDispose.disposeOrderChild(omsOrderChild); } omsOrderChildMapper.batchInsert(transOrderChildren); //新实绩 creatTransResult(lineId, omsTransOrder.getTransOrderId(),transOrderChildren.get(0).getPlanChildId(), userName); //删除旧运单 String deleteReason = "合并至" + omsTransOrder.getSerialNumber(); for (OmsTransOrder item : omsTransOrders) { item.setDeleted(BigDecimal.ONE); item.setDeleteReason(deleteReason); } omsTransOrderMapper.batchUpdate(omsTransOrders); return "合并成功!"; } /** * 生成运输实绩通用方法,单个生成 * * @param lineId * @param transOrderId * @param userName * @throws Exception */ @Transactional(rollbackFor = Exception.class) public void creatTransResult(BigDecimal lineId, BigDecimal transOrderId,BigDecimal planChildId, String userName) throws Exception{ //查询线路步骤 List> steps = omsOrderChildMapper.findLineDetails(lineId); //查询需求中的装货点卸货点 List> loadUnloadPoints = omsOrderChildMapper.getRequireLoads(planChildId); int loadIndex = 0,unloadIndex = 0; //准备待新增的实绩 List tmsReplaceFrontResults = new ArrayList<>(); List tmsSignInResults = new ArrayList<>(); List tmsEnfactoryResults = new ArrayList<>(); List tmsOutfactoryResults = new ArrayList<>(); List tmsLoadResults = new ArrayList<>(); List tmsUnloadResults = new ArrayList<>(); List tmsWeightResults = new ArrayList<>(); List tmsQualityResults = new ArrayList<>(); List tmsArrivalResults = new ArrayList<>(); List tmsReceiptResults = new ArrayList<>(); for (Map step : steps) { switch (step.get("stepName").toString()) { case "换车头": TmsReplaceFrontResult tmsReplaceFrontResult = new TmsReplaceFrontResult(); tmsReplaceFrontResult.setResultId(tmsReplaceFrontResultMapper.nextId()); tmsReplaceFrontResult.setTransOrderId(transOrderId); tmsReplaceFrontResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq"))); tmsReplaceFrontResult.setAlternateFields1(step.get("stepId").toString()); tmsReplaceFrontResult.setInsertTime(new Date()); tmsReplaceFrontResult.setInsertUsername(userName); tmsReplaceFrontResult.setDeleted(BigDecimal.ZERO); tmsReplaceFrontResults.add(tmsReplaceFrontResult); break; case "签到": TmsSignInResult tmsSignInResult = new TmsSignInResult(); tmsSignInResult.setResultId(tmsSignInResultMapper.nextId()); tmsSignInResult.setTransOrderId(transOrderId); tmsSignInResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq"))); tmsSignInResult.setAlternateFields1(step.get("stepId").toString()); tmsSignInResult.setInsertTime(new Date()); tmsSignInResult.setInsertUsername(userName); tmsSignInResult.setDeleted(BigDecimal.ZERO); tmsSignInResults.add(tmsSignInResult); break; case "进厂": TmsEnfactoryResult tmsEnfactoryResult = new TmsEnfactoryResult(); tmsEnfactoryResult.setResultId(tmsEnfactoryResultMapper.nextId()); tmsEnfactoryResult.setTransOrderId(transOrderId); tmsEnfactoryResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq"))); tmsEnfactoryResult.setAlternateFields1(step.get("stepId").toString()); tmsEnfactoryResult.setInsertTime(new Date()); tmsEnfactoryResult.setInsertUsername(userName); tmsEnfactoryResult.setDeleted(BigDecimal.ZERO); tmsEnfactoryResults.add(tmsEnfactoryResult); break; case "出厂": TmsOutfactoryResult tmsOutfactoryResult = new TmsOutfactoryResult(); tmsOutfactoryResult.setResultId(tmsOutfactoryResultMapper.nextId()); tmsOutfactoryResult.setTransOrderId(transOrderId); tmsOutfactoryResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq"))); tmsOutfactoryResult.setAlternateFields1(step.get("stepId").toString()); tmsOutfactoryResult.setInsertTime(new Date()); tmsOutfactoryResult.setInsertUsername(userName); tmsOutfactoryResult.setDeleted(BigDecimal.ZERO); tmsOutfactoryResults.add(tmsOutfactoryResult); break; case "计毛": case "计皮": setWeightResult(tmsWeightResults, step, transOrderId, userName); break; case "装货": TmsLoadResult tmsLoadResult = new TmsLoadResult(); tmsLoadResult.setResultId(tmsLoadResultMapper.nextId()); tmsLoadResult.setTransOrderId(transOrderId); tmsLoadResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq"))); try{ tmsLoadResult.setLoadPointId(DataChange.dataToBigDecimal(loadUnloadPoints.get(0).get("loadPointId"))); }catch (Exception e){ e.printStackTrace(); //throw new Exception("运输路线装货次数和运单不匹配"); } tmsLoadResult.setAlternateFields1(step.get("stepId").toString()); tmsLoadResult.setInsertTime(new Date()); tmsLoadResult.setInsertUsername(userName); tmsLoadResult.setDeleted(BigDecimal.ZERO); tmsLoadResults.add(tmsLoadResult); break; case "卸货": TmsUnloadResult tmsUnloadResult = new TmsUnloadResult(); tmsUnloadResult.setResultId(tmsUnloadResultMapper.nextId()); tmsUnloadResult.setTransOrderId(transOrderId); tmsUnloadResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq"))); try{ tmsUnloadResult.setUnloadPointId(DataChange.dataToBigDecimal(loadUnloadPoints.get(0).get("unloadPointId"))); }catch (Exception e){ throw new Exception("运输路线卸货次数和运单不匹配"); } tmsUnloadResult.setAlternateFields1(step.get("stepId").toString()); tmsUnloadResult.setInsertTime(new Date()); tmsUnloadResult.setInsertUsername(userName); tmsUnloadResult.setDeleted(BigDecimal.ZERO); tmsUnloadResults.add(tmsUnloadResult); break; case "采样": TmsQualityResult tmsQualityResult = new TmsQualityResult(); tmsQualityResult.setResultId(tmsQualityResultMapper.nextId()); tmsQualityResult.setTransOrderId(transOrderId); tmsQualityResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq"))); tmsQualityResult.setAlternateFields1(step.get("stepId").toString()); tmsQualityResult.setInsertTime(new Date()); tmsQualityResult.setInsertUsername(userName); tmsQualityResult.setDeleted(BigDecimal.ZERO); tmsQualityResults.add(tmsQualityResult); break; case "抵达": TmsArrivalResult tmsArrivalResult = new TmsArrivalResult(); tmsArrivalResult.setResultId(tmsArrivalResultMapper.nextId()); tmsArrivalResult.setTransOrderId(transOrderId); tmsArrivalResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq"))); tmsArrivalResult.setAlternateFields1(step.get("stepId").toString()); tmsArrivalResult.setInsertTime(new Date()); tmsArrivalResult.setInsertUsername(userName); tmsArrivalResult.setDeleted(BigDecimal.ZERO); tmsArrivalResults.add(tmsArrivalResult); break; case "签收": TmsReceiptResult tmsReceiptResult = new TmsReceiptResult(); tmsReceiptResult.setResultId(tmsReceiptResultMapper.nextId()); tmsReceiptResult.setTransOrderId(transOrderId); tmsReceiptResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq"))); tmsReceiptResult.setAlternateFields1(step.get("stepId").toString()); tmsReceiptResult.setInsertTime(new Date()); tmsReceiptResult.setInsertUsername(userName); tmsReceiptResult.setDeleted(BigDecimal.ZERO); tmsReceiptResults.add(tmsReceiptResult); break; default: log.error("生成步骤失败!无法解析的运输步骤:" + step.get("stepName")); } } //新增各类实绩tmsSignInResults if (tmsReplaceFrontResults.size() > 0) { tmsReplaceFrontResultMapper.batchInsert(tmsReplaceFrontResults); } if (tmsSignInResults.size() > 0) { tmsSignInResultMapper.batchInsert(tmsSignInResults); } if (tmsEnfactoryResults.size() > 0) { tmsEnfactoryResultMapper.batchInsert(tmsEnfactoryResults); } if (tmsOutfactoryResults.size() > 0) { tmsOutfactoryResultMapper.batchInsert(tmsOutfactoryResults); } if (tmsWeightResults.size() > 0) { tmsWeightResultMapper.batchInsert(tmsWeightResults); } if (tmsLoadResults.size() > 0) { tmsLoadResultMapper.batchInsert(tmsLoadResults); } if (tmsUnloadResults.size() > 0) { tmsUnloadResultMapper.batchInsert(tmsUnloadResults); } if (tmsQualityResults.size() > 0) { tmsQualityResultMapper.batchInsert(tmsQualityResults); } if (tmsArrivalResults.size() > 0) { tmsArrivalResultMapper.batchInsert(tmsArrivalResults); } if (tmsReceiptResults.size() > 0) { tmsReceiptResultMapper.batchInsert(tmsReceiptResults); } } /** * 生成运输实绩通用方法,单个生成 * * @param lineId * @param transOrderId * @param userName * @throws Exception */ @Transactional(rollbackFor = Exception.class) public void creatTransResult(BigDecimal lineId, BigDecimal transOrderId,BigDecimal planChildId, String userName,Map map) throws Exception{ //查询线路步骤 List> steps = omsOrderChildMapper.findLineDetails(lineId); //查询需求中的装货点卸货点 List> loadUnloadPoints = null; if(map.get("loadUnloadPoints")!=null&&map.get("loadUnloadPoints") instanceof List){ loadUnloadPoints = (List>) map.get("loadUnloadPoints"); }else { loadUnloadPoints = omsOrderChildMapper.getRequireLoads(planChildId); } int loadIndex = 0,unloadIndex = 0; //准备待新增的实绩 List tmsReplaceFrontResults = new ArrayList<>(); List tmsSignInResults = new ArrayList<>(); List tmsEnfactoryResults = new ArrayList<>(); List tmsOutfactoryResults = new ArrayList<>(); List tmsLoadResults = new ArrayList<>(); List tmsUnloadResults = new ArrayList<>(); List tmsWeightResults = new ArrayList<>(); List tmsQualityResults = new ArrayList<>(); List tmsArrivalResults = new ArrayList<>(); List tmsReceiptResults = new ArrayList<>(); for (Map step : steps) { switch (step.get("stepName").toString()) { case "换车头": TmsReplaceFrontResult tmsReplaceFrontResult = new TmsReplaceFrontResult(); tmsReplaceFrontResult.setResultId(tmsReplaceFrontResultMapper.nextId()); tmsReplaceFrontResult.setTransOrderId(transOrderId); tmsReplaceFrontResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq"))); tmsReplaceFrontResult.setAlternateFields1(step.get("stepId").toString()); tmsReplaceFrontResult.setInsertTime(new Date()); tmsReplaceFrontResult.setInsertUsername(userName); tmsReplaceFrontResult.setDeleted(BigDecimal.ZERO); tmsReplaceFrontResults.add(tmsReplaceFrontResult); break; case "签到": TmsSignInResult tmsSignInResult = new TmsSignInResult(); tmsSignInResult.setResultId(tmsSignInResultMapper.nextId()); tmsSignInResult.setTransOrderId(transOrderId); tmsSignInResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq"))); tmsSignInResult.setAlternateFields1(step.get("stepId").toString()); tmsSignInResult.setInsertTime(new Date()); tmsSignInResult.setInsertUsername(userName); tmsSignInResult.setDeleted(BigDecimal.ZERO); tmsSignInResults.add(tmsSignInResult); break; case "进厂": TmsEnfactoryResult tmsEnfactoryResult = new TmsEnfactoryResult(); tmsEnfactoryResult.setResultId(tmsEnfactoryResultMapper.nextId()); tmsEnfactoryResult.setTransOrderId(transOrderId); tmsEnfactoryResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq"))); tmsEnfactoryResult.setAlternateFields1(step.get("stepId").toString()); tmsEnfactoryResult.setInsertTime(new Date()); tmsEnfactoryResult.setInsertUsername(userName); tmsEnfactoryResult.setDeleted(BigDecimal.ZERO); tmsEnfactoryResults.add(tmsEnfactoryResult); break; case "出厂": TmsOutfactoryResult tmsOutfactoryResult = new TmsOutfactoryResult(); tmsOutfactoryResult.setResultId(tmsOutfactoryResultMapper.nextId()); tmsOutfactoryResult.setTransOrderId(transOrderId); tmsOutfactoryResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq"))); tmsOutfactoryResult.setAlternateFields1(step.get("stepId").toString()); tmsOutfactoryResult.setInsertTime(new Date()); tmsOutfactoryResult.setInsertUsername(userName); tmsOutfactoryResult.setDeleted(BigDecimal.ZERO); tmsOutfactoryResults.add(tmsOutfactoryResult); break; case "计毛": case "计皮": setWeightResult(tmsWeightResults, step, transOrderId, userName); break; case "装货": TmsLoadResult tmsLoadResult = new TmsLoadResult(); tmsLoadResult.setResultId(tmsLoadResultMapper.nextId()); tmsLoadResult.setTransOrderId(transOrderId); tmsLoadResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq"))); try{ tmsLoadResult.setLoadPointId(DataChange.dataToBigDecimal(loadUnloadPoints.get(0).get("loadPointId"))); }catch (Exception e){ e.printStackTrace(); throw new Exception("运输路线装货次数和运单不匹配"); } tmsLoadResult.setAlternateFields1(step.get("stepId").toString()); tmsLoadResult.setInsertTime(new Date()); tmsLoadResult.setInsertUsername(userName); tmsLoadResult.setDeleted(BigDecimal.ZERO); tmsLoadResults.add(tmsLoadResult); break; case "卸货": TmsUnloadResult tmsUnloadResult = new TmsUnloadResult(); tmsUnloadResult.setResultId(tmsUnloadResultMapper.nextId()); tmsUnloadResult.setTransOrderId(transOrderId); tmsUnloadResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq"))); try{ tmsUnloadResult.setUnloadPointId(DataChange.dataToBigDecimal(loadUnloadPoints.get(0).get("unloadPointId"))); }catch (Exception e){ throw new Exception("运输路线卸货次数和运单不匹配"); } tmsUnloadResult.setAlternateFields1(step.get("stepId").toString()); tmsUnloadResult.setInsertTime(new Date()); tmsUnloadResult.setInsertUsername(userName); tmsUnloadResult.setDeleted(BigDecimal.ZERO); tmsUnloadResults.add(tmsUnloadResult); break; case "采样": TmsQualityResult tmsQualityResult = new TmsQualityResult(); tmsQualityResult.setResultId(tmsQualityResultMapper.nextId()); tmsQualityResult.setTransOrderId(transOrderId); tmsQualityResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq"))); tmsQualityResult.setAlternateFields1(step.get("stepId").toString()); tmsQualityResult.setInsertTime(new Date()); tmsQualityResult.setInsertUsername(userName); tmsQualityResult.setDeleted(BigDecimal.ZERO); tmsQualityResults.add(tmsQualityResult); break; case "抵达": TmsArrivalResult tmsArrivalResult = new TmsArrivalResult(); tmsArrivalResult.setResultId(tmsArrivalResultMapper.nextId()); tmsArrivalResult.setTransOrderId(transOrderId); tmsArrivalResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq"))); tmsArrivalResult.setAlternateFields1(step.get("stepId").toString()); tmsArrivalResult.setInsertTime(new Date()); tmsArrivalResult.setInsertUsername(userName); tmsArrivalResult.setDeleted(BigDecimal.ZERO); tmsArrivalResults.add(tmsArrivalResult); break; case "签收": TmsReceiptResult tmsReceiptResult = new TmsReceiptResult(); tmsReceiptResult.setResultId(tmsReceiptResultMapper.nextId()); tmsReceiptResult.setTransOrderId(transOrderId); tmsReceiptResult.setSegmentSqe(DataChange.dataToBigDecimal(step.get("seq"))); tmsReceiptResult.setAlternateFields1(step.get("stepId").toString()); tmsReceiptResult.setInsertTime(new Date()); tmsReceiptResult.setInsertUsername(userName); tmsReceiptResult.setDeleted(BigDecimal.ZERO); tmsReceiptResults.add(tmsReceiptResult); break; default: log.error("生成步骤失败!无法解析的运输步骤:" + step.get("stepName")); } } //新增各类实绩tmsSignInResults if (tmsReplaceFrontResults.size() > 0) { tmsReplaceFrontResultMapper.batchInsert(tmsReplaceFrontResults); } if (tmsSignInResults.size() > 0) { tmsSignInResultMapper.batchInsert(tmsSignInResults); } if (tmsEnfactoryResults.size() > 0) { tmsEnfactoryResultMapper.batchInsert(tmsEnfactoryResults); } if (tmsOutfactoryResults.size() > 0) { tmsOutfactoryResultMapper.batchInsert(tmsOutfactoryResults); } if (tmsWeightResults.size() > 0) { tmsWeightResultMapper.batchInsert(tmsWeightResults); } if (tmsLoadResults.size() > 0) { tmsLoadResultMapper.batchInsert(tmsLoadResults); } if (tmsUnloadResults.size() > 0) { tmsUnloadResultMapper.batchInsert(tmsUnloadResults); } if (tmsQualityResults.size() > 0) { tmsQualityResultMapper.batchInsert(tmsQualityResults); } if (tmsArrivalResults.size() > 0) { tmsArrivalResultMapper.batchInsert(tmsArrivalResults); } if (tmsReceiptResults.size() > 0) { tmsReceiptResultMapper.batchInsert(tmsReceiptResults); } } /** * 派车推送大宗通用方法 * @param businessType * @param capacityId * @param driverId * @param omsTransOrder * @param omsOrderChild * @param planDetails * @throws Exception */ public void dispatchPush(BigDecimal businessType, BigDecimal capacityId, BigDecimal driverId, OmsTransOrder omsTransOrder, OmsOrderChild omsOrderChild, Map planDetails) throws Exception{ DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Map businessMap = omsTransOrderMapper.getBusinessType(businessType); Map capacity = omsTransOrderMapper.getCapacityById(capacityId); Map driver = omsTransOrderMapper.getPersonnelById(driverId); if(businessMap == null ){ throw new Exception("业务类型不存在!"); }else if(capacity == null){ throw new Exception("车辆不存在!"); }else if(driver == null){ throw new Exception("司机不存在!"); } if("是".equals(capacity.get("capacityBlacklist"))) { throw new Exception("不允许派发给黑名单车辆"); } Map params = new HashMap<>(); Map paramsCapcity = new HashMap<>(); //推送车辆档案 if (!"生产".equals(businessMap.get("businessScene"))) { Map capacityMes = omsTransOrderMapper.findCapacityMes(omsTransOrder.getCapacityId()); Map driverMes = omsTransOrderMapper.findDriverMes(omsTransOrder.getDriverId()); paramsCapcity.putAll(capacityMes); paramsCapcity.putAll(driverMes); daZongUtil.execute("30010000002", new Map[]{paramsCapcity}); } switch (businessMap.get("businessScene").toString()) { case "采购": params.put("clbh", capacity.get("capacityNumber")); params.put("cllx", capacity.get("capacityType")); params.put("sjxm", driver.get("personnelName")); params.put("sfzh", driver.get("identityCard")); params.put("tel", driver.get("personnelPhone")); params.put("wlbh", planDetails.get("materialCode")); params.put("bmbh", planDetails.get("receiveSourceId")); params.put("shbh", planDetails.get("supplierCompanyCode")); params.put("fhbh", planDetails.get("carrierCode")); params.put("ckbh", planDetails.get("receivingPointSourceId")); params.put("fhdd", planDetails.get("fhdd") == null ? "":planDetails.get("fhdd")); params.put("note", ""); params.put("zjs", omsOrderChild.getOriginMaterialZjs() == null ? 0 :omsOrderChild.getOriginMaterialZjs()); params.put("zsl", omsOrderChild.getMaterialNumber()); params.put("hsdj", planDetails.get("unitPrice") == null ? 0 : planDetails.get("unitPrice")); params.put("yfdj", "");//运费单价 params.put("htbh", planDetails.get("orderNumber") == null ? "" : planDetails.get("orderNumber")); params.put("tdls", planDetails.get("tdls") != null ? planDetails.get("tdls"):planDetails.get("transRequirementId")); params.put("tdfl", planDetails.get("tdfl") != null ? planDetails.get("tdfl"):planDetails.get("requirementChildId")); params.put("ywbh", businessType); params.put("yfrq", dateFormat.format(omsOrderChild.getOriginDate() == null ? new Date():omsOrderChild.getOriginDate())); params.put("dfbd", omsOrderChild.getOriginPoundNo() == null ? "":omsOrderChild.getOriginPoundNo());//原发磅单号 params.put("rjhh", omsTransOrder.getSerialNumber()); params.put("username", omsTransOrder.getInsertUsername()); params.put("wldh", planDetails.get("planNumber")); params.put("pfjd", capacity.get("emissionStandardName") == null ? "" :capacity.get("emissionStandardName"));//排放阶段 params.put("sfzhid", driver.get("innerCode") == null ? "" : driver.get("innerCode"));//身份证内码 params.put("rjhhid", omsOrderChild.getOrderChildId());//运单序号 = 分录主键 params.put("pcbz",planDetails.get("pcbz") == null ? "" : planDetails.get("pcbz")); params.put("isReplace",planDetails.get("isReplace") == null ? "否" : planDetails.get("isReplace").toString()); daZongUtil.execute("30010000017", new Map[]{params}); break; case "销售": params.put("clbh", capacity.get("capacityNumber")); params.put("cllx", capacity.get("capacityType")); params.put("sjxm", driver.get("personnelName")); params.put("sfzh", driver.get("identityCard")); params.put("tel", driver.get("personnelPhone")); params.put("wlbh", planDetails.get("materialCode")); params.put("bmbh", planDetails.get("receiveSourceId")); params.put("shbh", planDetails.get("supplierCompanyCode")); params.put("fhbh", planDetails.get("carrierCode") == null ? "" : planDetails.get("carrierCode")); params.put("ckbh", planDetails.get("shippingPointSourceId") == null ? "" : planDetails.get("shippingPointSourceId")); params.put("fhdd", planDetails.get("fhdd") == null ? "":planDetails.get("fhdd")); params.put("note", ""); params.put("zjs", omsOrderChild.getOriginMaterialZjs() == null ? 0 :omsOrderChild.getOriginMaterialZjs()); params.put("zsl", omsOrderChild.getMaterialNumber()); params.put("hsdj", planDetails.get("unitPrice") == null ? "" : planDetails.get("unitPrice")); params.put("yfdj", "");//运费单价 params.put("htbh", planDetails.get("orderNumber") == null ? "" : planDetails.get("orderNumber")); params.put("tdls", planDetails.get("tdls") != null ? planDetails.get("tdls"):planDetails.get("transRequirementId")); params.put("tdfl", planDetails.get("tdfl") != null ? planDetails.get("tdfl"):planDetails.get("requirementChildId")); params.put("ywbh", businessType); params.put("rjhh", omsTransOrder.getSerialNumber()); params.put("username", omsTransOrder.getInsertUsername()); params.put("wldh", planDetails.get("planNumber")); params.put("pfjd", capacity.get("emissionStandardName") == null ? "" :capacity.get("emissionStandardName"));//排放阶段 params.put("sfzhid", driver.get("innerCode") == null ? "" : driver.get("innerCode"));//身份证内码 params.put("rjhhid", omsOrderChild.getOrderChildId());//运单序号 = 分录主键 params.put("bhdh",""); params.put("bhnm",""); params.put("isReplace","否"); daZongUtil.execute("30010000036", new Map[]{params}); break; case "生产": //params.put("clbh", capacity.get("capacityNumber")); //params.put("cllx", capacity.get("capacityType")); //params.put("sjxm", driver.get("personnelName")); //params.put("sfzh", driver.get("identityCard")); //params.put("tel", driver.get("personnelPhone")); //params.put("wlbh", planDetails.get("materialCode")); //params.put("bmbh", planDetails.get("receiveSourceId") == null ? planDetails.get("organizationSourceId") : planDetails.get("receiveSourceId")); //params.put("shbh", planDetails.get("supplierSourceId") == null ? planDetails.get("organizationSourceId") : planDetails.get("supplierSourceId")); //params.put("ckbh", planDetails.get("shippingPointSourceId")); //params.put("fhbh", planDetails.get("carrierCode")); //params.put("yrck", planDetails.get("receivingPointSourceId")); //params.put("fhdd", planDetails.get("fhdd") == null ? "":planDetails.get("fhdd")); //params.put("note", ""); //params.put("zjs", omsOrderChild.getOriginMaterialZjs() == null ? 0 :omsOrderChild.getOriginMaterialZjs()); //params.put("zsl", omsOrderChild.getMaterialNumber()); //params.put("hsdj", planDetails.get("unitPrice") == null ? 0 : planDetails.get("unitPrice"));//含税单价 //params.put("yfdj", "");//运费单价 //params.put("htbh", planDetails.get("orderNumber") == null ? "" : planDetails.get("orderNumber")); //params.put("tdls", planDetails.get("transRequirementId")); //params.put("tdfl", planDetails.get("requirementChildId")); //params.put("ywbh", businessType); //params.put("rjhh", omsTransOrder.getSerialNumber()); //params.put("username", omsTransOrder.getInsertUsername()); //params.put("wldh", planDetails.get("planNumber")); //params.put("pfjd", capacity.get("emissionStandardName") == null ? "" :capacity.get("emissionStandardName"));//排放阶段 //params.put("sfzhid", driver.get("innerCode") + "");//身份证内码 //params.put("rjhhid", omsOrderChild.getOrderChildId());//运单序号 = 分录主键 //daZongUtil.execute("30010000056", new Map[]{params}); break; default: throw new Exception("未知的业务类型!"); } } /** * 派车推送大宗通用方法(必须已有运单后才能使用,并且运单数据中的关键字段未改动,否则查询不到正确的运单信息) * @param transOrderId * @throws Exception */ public void dispatchPushById(BigDecimal transOrderId) throws Exception{ DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(transOrderId); if(omsTransOrder == null){ throw new Exception("未查询到运单!"); } Map searchMap = new HashMap<>(); searchMap.put("transOrderId",transOrderId); searchMap.put("deleted",0); List omsOrderChilds = omsOrderChildMapper.selectByParameters(searchMap); if(omsOrderChilds.size() == 0){ throw new Exception("未查询到运单子表!"); } OmsOrderChild omsOrderChild = omsOrderChilds.get(0); Map businessMap = omsTransOrderMapper.getBusinessType(omsTransOrder.getOrderType()); Map capacity = omsTransOrderMapper.getCapacityById(omsTransOrder.getCapacityId()); Map driver = omsTransOrderMapper.getPersonnelById(omsTransOrder.getDriverId()); Map planChildId = new HashMap<>(); planChildId.put("planChildId",omsOrderChild.getPlanChildId().toString()); Map planDetails = omsOrderChildMapper.findPlanChild(planChildId); if(businessMap == null || businessMap.get("businessTypeName") == null){ throw new Exception("业务类型不存在!"); }else if(capacity == null){ throw new Exception("车辆不存在!"); }else if(driver == null){ throw new Exception("司机不存在!"); }else if(planDetails == null){ throw new Exception("计划不存在!"); } if("是".equals(capacity.get("capacityBlacklist"))) { throw new Exception("不允许派发给黑名单车辆"); } Map params = new HashMap<>(); switch (businessMap.get("businessScene").toString()) { case "采购": params.put("clbh", capacity.get("capacityNumber")); params.put("cllx", capacity.get("capacityType")); params.put("sjxm", driver.get("personnelName")); params.put("sfzh", driver.get("identityCard")); params.put("tel", driver.get("personnelPhone")); params.put("wlbh", planDetails.get("materialCode")); params.put("bmbh", planDetails.get("receiveSourceId")); params.put("shbh", planDetails.get("supplierCompanyCode")); params.put("fhbh", planDetails.get("carrierCode")); params.put("ckbh", planDetails.get("receivingPointSourceId")); params.put("fhdd", planDetails.get("fhdd") == null ? "":planDetails.get("fhdd")); params.put("note", ""); params.put("zjs", omsOrderChild.getOriginMaterialZjs() == null ? 0 :omsOrderChild.getOriginMaterialZjs()); params.put("zsl", omsOrderChild.getMaterialNumber()); params.put("hsdj", planDetails.get("unitPrice") == null ? 0 : planDetails.get("unitPrice")); params.put("yfdj", "");//运费单价 params.put("htbh", planDetails.get("orderNumber") == null ? "":planDetails.get("orderNumber")); params.put("tdls", planDetails.get("tdls") != null ? planDetails.get("tdls"):planDetails.get("transRequirementId")); params.put("tdfl", planDetails.get("tdfl") != null ? planDetails.get("tdfl"):planDetails.get("requirementChildId")); params.put("ywbh", omsTransOrder.getOrderType()); params.put("yfrq", dateFormat.format(omsOrderChild.getOriginDate() == null ? new Date():omsOrderChild.getOriginDate())); params.put("dfbd", omsOrderChild.getOriginPoundNo() == null ? "":omsOrderChild.getOriginPoundNo());//原发磅单号 params.put("rjhh", omsTransOrder.getSerialNumber()); params.put("username", omsTransOrder.getInsertUsername()); params.put("wldh", planDetails.get("planNumber")); params.put("pfjd", capacity.get("emissionStandardName") == null ? "" :capacity.get("emissionStandardName"));//排放阶段 params.put("sfzhid", driver.get("innerCode") == null ? "" : driver.get("innerCode"));//身份证内码 params.put("rjhhid", omsOrderChild.getOrderChildId());//运单序号 = 分录主键 params.put("isReplace",planDetails.get("isReplace") == null ? "否" : planDetails.get("isReplace").toString()); daZongUtil.execute("30010000017", new Map[]{params}); break; case "销售": params.put("clbh", capacity.get("capacityNumber")); params.put("cllx", capacity.get("capacityType")); params.put("sjxm", driver.get("personnelName")); params.put("sfzh", driver.get("identityCard")); params.put("tel", driver.get("personnelPhone")); params.put("wlbh", planDetails.get("materialCode")); params.put("bmbh", planDetails.get("receiveSourceId")); params.put("shbh", planDetails.get("supplierCompanyCode")); params.put("fhbh", planDetails.get("carrierCode")); params.put("ckbh", planDetails.get("shippingPointSourceId")); params.put("fhdd", planDetails.get("fhdd") == null ? "":planDetails.get("fhdd")); params.put("note", ""); params.put("zjs", omsOrderChild.getOriginMaterialZjs() == null ? 0 :omsOrderChild.getOriginMaterialZjs()); params.put("zsl", omsOrderChild.getMaterialNumber()); params.put("hsdj", planDetails.get("unitPrice") == null ? "" : planDetails.get("unitPrice")); params.put("yfdj", "");//运费单价 params.put("htbh", planDetails.get("orderNumber") == null ? "" : planDetails.get("orderNumber")); params.put("tdls", planDetails.get("tdls") != null ? planDetails.get("tdls"):planDetails.get("transRequirementId")); params.put("tdfl", planDetails.get("tdfl") != null ? planDetails.get("tdfl"):planDetails.get("requirementChildId")); params.put("ywbh", omsTransOrder.getOrderType()); params.put("rjhh", omsTransOrder.getSerialNumber()); params.put("username", omsTransOrder.getInsertUsername()); params.put("wldh", planDetails.get("planNumber")); params.put("pfjd", capacity.get("emissionStandardName") == null ? "" :capacity.get("emissionStandardName"));//排放阶段 params.put("sfzhid", driver.get("innerCode"));//身份证内码 params.put("rjhhid", omsOrderChild.getOrderChildId());//运单序号 = 分录主键 params.put("isReplace","否"); daZongUtil.execute("30010000036", new Map[]{params}); break; case "生产": //params.put("clbh", capacity.get("capacityNumber")); //params.put("cllx", capacity.get("capacityType")); //params.put("sjxm", driver.get("personnelName")); //params.put("sfzh", driver.get("identityCard")); //params.put("tel", driver.get("personnelPhone")); //params.put("wlbh", planDetails.get("materialCode")); //params.put("bmbh", planDetails.get("receiveSourceId") == null ? planDetails.get("organizationSourceId") : planDetails.get("receiveSourceId")); //params.put("shbh", planDetails.get("supplierSourceId") == null ? planDetails.get("organizationSourceId") : planDetails.get("supplierSourceId")); //params.put("ckbh", planDetails.get("shippingPointSourceId")); //params.put("fhbh", planDetails.get("carrierCode")); //params.put("yrck", planDetails.get("receivingPointSourceId")); //params.put("fhdd", planDetails.get("fhdd") == null ? "":planDetails.get("fhdd")); //params.put("note", ""); //params.put("zjs", omsOrderChild.getOriginMaterialZjs() == null ? 0 :omsOrderChild.getOriginMaterialZjs()); //params.put("zsl", omsOrderChild.getMaterialNumber()); //params.put("hsdj", planDetails.get("unitPrice") == null ? 0 : planDetails.get("unitPrice"));//含税单价 //params.put("yfdj", "");//运费单价 //params.put("htbh", planDetails.get("orderNumber") == null ? "" : planDetails.get("orderNumber")); //params.put("tdls", planDetails.get("transRequirementId")); //params.put("tdfl", planDetails.get("requirementChildId")); //params.put("ywbh", omsTransOrder.getOrderType()); //params.put("rjhh", omsTransOrder.getSerialNumber()); //params.put("username", omsTransOrder.getInsertUsername()); //params.put("wldh", planDetails.get("planNumber")); //params.put("pfjd", capacity.get("emissionStandardName") == null ? "" :capacity.get("emissionStandardName"));//排放阶段 //params.put("sfzhid", driver.get("innerCode") + "");//身份证内码 //params.put("rjhhid", omsOrderChild.getOrderChildId());//运单序号 = 分录主键 //daZongUtil.execute("30010000056", new Map[]{params}); break; default: throw new Exception("未知的业务类型!"); } if (!"生产".equals(businessMap.get("businessScene"))){ //推送车辆档案 capacity = omsTransOrderMapper.findCapacityMes(omsTransOrder.getCapacityId()); driver = omsTransOrderMapper.findDriverMes(omsTransOrder.getDriverId()); params = new HashMap<>(); params.putAll(capacity); params.putAll(driver); daZongUtil.execute("30010000002", new Map[]{params}); } } /** * 非过磅车辆,通行登记单推送大宗 * @param omsTransOrder 包含driverId和capacityId * @param sbddList 大宗门禁编号列表(01,02...);不控制门禁则传 '' * @param startTime 起始时间 * @param endTime 截止时间 * @param txlx 通行卡分类:客运车辆 / 非道路运输车辆 * @param note 备注 */ public void accessPush(OmsTransOrder omsTransOrder, String sbddList, Date startTime, Date endTime, String txlx, String note) throws Exception { DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Map params = new HashMap<>(); params.put("rjhh",omsTransOrder.getSerialNumber()); Map capacity = omsTransOrderMapper.findCapacityMes(omsTransOrder.getCapacityId()); Map driver = omsTransOrderMapper.findDriverMes(omsTransOrder.getDriverId()); params.putAll(capacity); params.putAll(driver); params.put("mjbh",sbddList); params.put("qssj",dateFormat.format(startTime)); params.put("zzsj",dateFormat.format(endTime)); params.put("txlx",txlx); params.put("note",note); params.put("sfzhid",params.get("sfzhid") == null ? "" : params.get("sfzhid")); params.put("username",omsTransOrder.getInsertUsername()); daZongUtil.execute("30010000070", new Map[]{params}); } @Transactional(rollbackFor = Exception.class) public Map dispatchTask(Map map) throws Exception { //然后生成订单 //判断该需求是否有计划 BigDecimal requirementChildId = DataChange.dataToBigDecimal(map.get("requirementChildId")); Map mapReC = new HashMap<>(); mapReC.put("requirementChildId",requirementChildId); List amsPlanChildren = amsPlanChildMapper.selectByParameters(mapReC); if(amsPlanChildren!=null&&amsPlanChildren.size()>0){ BigDecimal planChildId = amsPlanChildren.get(0).getPlanChildId(); map.put("planChildId",planChildId); if(DataChange.dataToBigDecimal(map.get("businessType")).compareTo(new BigDecimal(129988)) == 0) { String result = batchDispatchInnerGp(map); }else{ String result = batchDispatchSc(map); } return map; } AmsTransPlan amsTransPlan = new AmsTransPlan(); BigDecimal planId = amsTransPlanMapper.nextId(); amsTransPlan.setTransPlanId(planId); amsTransPlan.setSerialNumber("SCJH" + amsTransPlan.getTransPlanId().intValue()); amsTransPlan.setCarrierId(DataChange.dataToBigDecimal(map.get("carrierId"))); amsTransPlan.setDeleted(BigDecimal.ZERO); amsTransPlan.setTableName("AMS_TRANS_PLAN"); if (map.containsKey("insertUpdateRemark")) { amsTransPlan.setInsertUpdateRemark(map.get("insertUpdateRemark").toString()); } if (map.containsKey("secondaryCarrierId")) { amsTransPlan.setSecondaryCarrierId(DataChange.dataToBigDecimal(map.get("secondaryCarrierId"))); } amsTransPlan.setInsertUsername(map.get("userName").toString()); amsTransPlan.setInsertTime(new Date()); AmsPlanChild amsPlanChild = new AmsPlanChild(); BigDecimal planChildId = amsPlanChildMapper.nextId(); amsPlanChild.setPlanChildId(planChildId); amsPlanChild.setTransPlanId(planId); amsPlanChild.setMaterialId(DataChange.dataToBigDecimal(map.get("materialId"))); amsPlanChild.setMaterialWeight(DataChange.dataToBigDecimal(map.get("materialWeight"))); amsPlanChild.setMaterialNumber(DataChange.dataToBigDecimal(map.get("materialNumber"))); amsPlanChild.setTransTruckNumber(DataChange.dataToBigDecimal(map.get("transTruckNumber"))); amsPlanChild.setRequirementChildId(requirementChildId); amsPlanChild.setDeleted(new BigDecimal(0)); amsPlanChild.setInsertUsername(map.get("userName").toString()); amsPlanChild.setInsertTime(new Date()); amsPlanChild.setTableName("AMS_PLAN_CHILD"); entityDispose.disposePlanChild(amsPlanChild); entityDispose.disposeTransPlan(amsTransPlan); amsTransPlanMapper.insertSelective(amsTransPlan); amsPlanChildMapper.insertSelective(amsPlanChild); map.put("planChildId", planChildId); try { if(DataChange.dataToBigDecimal(map.get("businessType")).compareTo(new BigDecimal(129988)) == 0) { String result = batchDispatchInnerGp(map); }else{ String result = batchDispatchSc(map); } } catch (Exception e) { e.printStackTrace(); map.put("status", "failed"); map.put("errorMessage", e.getMessage()); throw e; } //更新需求状态为已制定计划4 int requirementStatus = 4; amsTransPlanMapper.updateRequirementStatus(requirementChildId, requirementStatus); ////推送到大宗 //String businessTypeName = (String) map.get("businessTypeName"); //if (businessTypeName != null && (businessTypeName.contains("计时") || businessTypeName.contains("计次"))) { // return map; //} //推送大宗 计划取消推送大宗 //Map requirement = amsPlanChildMapper.selectLeftByChildId(amsPlanChild.getRequirementChildId()); //Map params = new HashMap<>(); //params.put("wldh", amsTransPlan.getSerialNumber()); //params.put("tdls", requirement.get("transRequirementId")); //params.put("tdfl", requirement.get("requirementChildId")); //params.put("tzdh", requirement.get("requirementNumber")); //params.put("ddbh", requirement.get("orderNumber") == null ? "" : requirement.get("orderNumber")); //params.put("bmbh", requirement.get("receiveSourceId") == null ? "" : requirement.get("receiveSourceId")); //params.put("bmmc", requirement.get("receiveCompanyName") == null ? "" : requirement.get("receiveCompanyName")); //DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); //params.put("zdrq", dateFormat.format(amsTransPlan.getInsertTime())); //dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //params.put("qsrq", dateFormat.format(amsTransPlan.getInsertTime())); //params.put("zzrq", dateFormat.format(requirement.get("dueTime"))); //params.put("dwbh", requirement.get("supplierCompanyCode") == null ? "" : requirement.get("supplierCompanyCode")); //params.put("dwmc", requirement.get("supplierCompanyName") == null ? "" : requirement.get("supplierCompanyName")); //params.put("wlbh", requirement.get("materialCode")); //params.put("wlmc", requirement.get("materialName")); //String ggxh = ""; //if (requirement.get("materialSpecification") != null && requirement.get("materialModel") != null) { // ggxh = requirement.get("materialSpecification") + "-" + requirement.get("materialModel"); //} else if (requirement.get("materialSpecification") != null) { // ggxh = requirement.get("materialSpecification").toString(); //} else if (requirement.get("materialModel") != null) { // ggxh = requirement.get("materialModel").toString(); //} //params.put("ggxh", ggxh); //params.put("ckbh", requirement.get("shippingPointSourceId") == null ? "" : requirement.get("shippingPointSourceId")); //params.put("ckmc", requirement.get("shippingPointName") == null ? "" : requirement.get("shippingPointName")); //params.put("yrck", requirement.get("receivingPointSourceId") == null ? "" : requirement.get("receivingPointSourceId")); //params.put("yrmc", requirement.get("receivingPointName") == null ? "" : requirement.get("receivingPointName")); //params.put("sysl", requirement.get("materialNumber")); //params.put("zjs", 0); //params.put("dj", requirement.get("unitPrice") == null ? 0 : requirement.get("unitPrice")); //params.put("ywbh", requirement.get("businessType")); //params.put("fhdd", requirement.get("fhdd") == null ? "" : requirement.get("fhdd")); //params.put("zdxm", amsTransPlan.getInsertUsername()); //params.put("note", amsTransPlan.getInsertUpdateRemark() == null ? "" : amsTransPlan.getInsertUpdateRemark()); //params.put("ts", "" + dateFormat.format(amsTransPlan.getInsertTime())); //Map carrier = omsTransOrderMapper.findCompanyById(amsTransPlan.getCarrierId().toString()); //params.put("ysbh", carrier.get("companyCode") == null ? "" : carrier.get("companyCode")); //params.put("ysdw", carrier.get("companyName") == null ? "" : carrier.get("companyName")); //params.put("jhsl", amsPlanChild.getMaterialNumber()); //params.put("jhjs", 0); //params.put("jhcs", amsPlanChild.getTransTruckNumber()); //daZongUtil.execute("30010000054", new Map[]{params}); return map; } //根据派车单号删除WMS派车单 @TargetDataSource(dataSourceKey = DataSourceKey.DB_OTHER) public String deleteSlmDlivDirListByDlivDirnoSeq(String dlivDirnoSeq) throws Exception { try { //查询WMS中是否有改派车单号 Integer integer2 = omsTransOrderMapper.selectSlmDlivDir(dlivDirnoSeq); if (integer2 == 0) { return "WMS中不存在派车单号:" + dlivDirnoSeq; } //查询WMS派车单中是否有条码 Integer integer = omsTransOrderMapper.selectDlivDirnoSeqCount(dlivDirnoSeq); if (integer > 0) { return "派车单在WMS中已扫入条码!"; } //根据派车单号删除WMS中的派车单 Integer integer1 = omsTransOrderMapper.deleteSlmDlivDirListByDlivDirnoSeq(dlivDirnoSeq); if (integer1 == 0) { throw new Exception("删除WMS中派车单失败!"); } } catch (Exception e) { throw new Exception(e.getMessage()); } return "OK"; } //获取销售派车单信息 public Map getDlivDirnoSeqList(String id) { Map dlivDirnoSeqList = omsTransOrderMapper.getDlivDirnoSeqList(id); return dlivDirnoSeqList; } //修改销售派车单信息 @Transactional(rollbackFor = Exception.class) public Map updateDlivDirnoSeq(Map map) throws Exception { try { //获取要修改的运单子表数据 BigDecimal planChildId = DataChange.dataToBigDecimal(map.get("planChildId")); OmsOrderChild omsOrderChild = omsOrderChildMapper.selectByPrimaryKey(planChildId); OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(omsOrderChild.getTransOrderId()); if (omsTransOrder.getDeleted().compareTo(DataChange.dataToBigDecimal(4)) != 0) { throw new Exception("只能在未确认状态下修改!"); } List> children = (List>) map.get("children"); Map child = children.get(0); //获取物资ID BigDecimal materialId = omsTransOrderMapper.getMaterialId(child.get("prodName").toString(), child.get("prodCode").toString()); omsOrderChild.setMaterialId(materialId); omsOrderChild.setMaterialNumber(DataChange.dataToBigDecimal(child.get("planWeight"))); omsOrderChild.setMaterialWeight(DataChange.dataToBigDecimal(child.get("planNumber"))); omsOrderChild.setUpdateTime(new Date()); omsOrderChild.setUpdateUsername(map.get("userId").toString()); omsOrderChild.setAlternateFields3(map.get("position").toString()); //获取装货点-仓库Id String storageattr = omsTransOrderMapper.findOperationByOperationName(map.get("storageattr").toString()); omsOrderChild.setAlternateFields2(storageattr);//发货仓库 omsOrderChild.setInsertUpdateRemark(map.get("memo").toString()); //获取运单表信息 omsTransOrder.setCapacityId(DataChange.dataToBigDecimal(map.get("capacityId"))); omsTransOrder.setDriverId(DataChange.dataToBigDecimal(map.get("driverId"))); omsTransOrder.setLineId(DataChange.dataToBigDecimal(child.get("lineId"))); omsTransOrder.setUpdateTime(new Date()); omsTransOrder.setUpdateUsername(map.get("userId").toString()); omsTransOrderMapper.updateByPrimaryKey(omsTransOrder); omsOrderChildMapper.updateByPrimaryKey(omsOrderChild); AmsPlanChild amsPlanChild = amsPlanChildMapper.selectByPrimaryKey(omsOrderChild.getPlanChildId()); AmsRequirementChild amsRequirementChild = amsRequirementChildMapper.selectByPrimaryKey(amsPlanChild.getRequirementChildId()); AmsTransRequirement amsTransRequirement = amsTransRequirementMapper.selectByPrimaryKey(amsRequirementChild.getTransRequirementId()); String businessTypeName = amsTransRequirementMapper.selectBusinessTypeName(amsTransRequirement.getBusinessType().toString()); List dlivDirnoSeqList = new ArrayList<>(); if ((businessTypeName.equals("安泰型钢销售") || businessTypeName.equals("安泰高线销售") || businessTypeName.equals("型钢销售订单") || businessTypeName.equals("高线销售订单")) && (amsTransRequirement.getSourceOrderId() != null || amsTransRequirement.getSourceOrderId().compareTo(new BigDecimal(0)) != 0)) { dlivDirnoSeqList.add(omsOrderChild.getAlternateFields1()); } if (dlivDirnoSeqList.size() > 0) { List> listMap = omsTransOrderMapper.selectDlivDirnolistByWMS(dlivDirnoSeqList); String url = "/antai.maketx/v1/slmdlivdirlists/wuliuUpdate"; wmsUtil.executeArray("90010000006", listMap, map.get("accessToken").toString(), url); } } catch (Exception e) { throw new Exception(e.getMessage()); } return map; } public List> selectDlivDirnoSeqDetails(Map map) { List>params = omsTransOrderMapper.selectDlivDirnoSeqDetails(map); return params; } @Transactional(rollbackFor = Exception.class) public Map matchLineAndCreatResult(Map map) throws Exception { BigDecimal transOrderId = DataChange.dataToBigDecimal(map.get("transOrderId").toString()); BigDecimal planChildId = DataChange.dataToBigDecimal(map.get("planChildId").toString()); BigDecimal businessTypeId = DataChange.dataToBigDecimal(map.get("businessTypeId").toString()); BigDecimal materialTypeId = DataChange.dataToBigDecimal(map.get("materialTypeId")); BigDecimal businessNameId = DataChange.dataToBigDecimal(map.get("businessNameId")); BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId")); BigDecimal loadPointId = DataChange.dataToBigDecimal(map.get("loadPointId")); BigDecimal unloadPointId = DataChange.dataToBigDecimal(map.get("unloadPointId")); BigDecimal consigneeId = DataChange.dataToBigDecimal(map.get("consigneeId")); BigDecimal lineId; if (map.containsKey("lineId") && map.get("lineId") != null) { lineId = DataChange.dataToBigDecimal(map.get("lineId")); } else { lineId = omsTransOrderMapper.matchLineId(businessTypeId, materialTypeId, businessNameId, materialId, loadPointId, unloadPointId, consigneeId); if (lineId == null || lineId.compareTo(BigDecimal.ZERO) == 0) { throw new Exception("没有对应的运输路径,请维护运输路径,或新增对应匹配规则!"); } } //根据运输路线创建实绩 creatTransResult(lineId, transOrderId,planChildId, map.get("userName").toString()); //返回个lineId看看 map.put("lineId", lineId); return map; } public Integer updateOrderSeqAddOne(BigDecimal transOrderId) { return omsTransOrderMapper.updateOrderSeqAddOne(transOrderId); } @Transactional(rollbackFor = Exception.class) public synchronized String saleDispatchList(Map map) throws Exception { //效验是否超重量 AmsRequirementChild amsRequirementChild = amsRequirementChildMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(map.get("requirementChildId"))); if (amsRequirementChild.getDeleted().compareTo(new BigDecimal(7)) != 0 && amsRequirementChild.getDeleted().compareTo(new BigDecimal(8)) != 0) { throw new Exception("该状态下不允许发货!"); } AmsTransRequirement amsTransRequirement = amsTransRequirementMapper.selectByPrimaryKey(amsRequirementChild.getTransRequirementId()); List> listMpa = (ArrayList) map.get("list"); BigDecimal weight = DataChange.dataToBigDecimal(0); BigDecimal number = DataChange.dataToBigDecimal(0); for (Map params : listMpa) { weight = weight.add(DataChange.dataToBigDecimal(params.get("materialWeight"))); number = number.add(DataChange.dataToBigDecimal(params.get("materialNumber"))); } if (weight.compareTo(amsRequirementChild.getMaterialNumber()) == 1) { throw new Exception("物资重量超出计划重量!"); } //如果派车时是允许发货,就改变状态为正在执行,否则就不改 if (amsRequirementChild.getDeleted().compareTo(DataChange.dataToBigDecimal(7)) == 0) { amsRequirementChild.setDeleted(DataChange.dataToBigDecimal(8)); amsRequirementChildMapper.updateByPrimaryKey(amsRequirementChild); } //新增派车记录 List amsTransPlanList = new ArrayList<>(); List amsPlanChildList = new ArrayList<>(); List omsTransOrderList = new ArrayList(); List omsOrderChildList = new ArrayList(); List tmsLoadResultList = new ArrayList<>(); List dlivDirnoSeqList = new ArrayList<>(); //获取运输类型 String businessTypeName = amsTransRequirementMapper.selectBusinessTypeName(amsTransRequirement.getBusinessType().toString()); int j = 1; for (Map list : listMpa) { //增加需求计划记录 //主表 AmsTransPlan amsTransPlan = new AmsTransPlan(); amsTransPlan.setTransPlanId(amsTransPlanMapper.nextId()); amsTransPlan.setSerialNumber(DataChange.generateEightDigitsNumber("XS", amsTransPlan.getTransPlanId().intValue())); amsTransPlan.setCarrierId(DataChange.dataToBigDecimal(map.get("carrierId"))); amsTransPlan.setInsertUsername(map.get("userName").toString()); amsTransPlan.setInsertTime(new Date()); amsTransPlan.setDeleted(DataChange.dataToBigDecimal(4)); amsTransPlan.setAlternateFields1("否"); amsTransPlan.setAlternateFields2(map.get("loadPointId").toString()); amsTransPlan.setInsertUpdateRemark(amsRequirementChild.getInsertUpdateRemark()); amsTransPlan.setTableName("AMS_TRANS_PLAN"); entityDispose.disposeTransPlan(amsTransPlan); amsTransPlanList.add(amsTransPlan); //子表 AmsPlanChild amsPlanChild = new AmsPlanChild(); amsPlanChild.setPlanChildId(amsPlanChildMapper.nextId()); amsPlanChild.setTransPlanId(amsTransPlan.getTransPlanId()); amsPlanChild.setRequirementChildId(amsRequirementChild.getRequirementChildId()); amsPlanChild.setMaterialId(DataChange.dataToBigDecimal(map.get("materialId"))); amsPlanChild.setMaterialNumber(DataChange.dataToBigDecimal(list.get("materialWeight"))); amsPlanChild.setMaterialWeight(DataChange.dataToBigDecimal(list.get("materialNumber"))); amsPlanChild.setTransTruckNumber(DataChange.dataToBigDecimal(1)); amsPlanChild.setDeleted(DataChange.dataToBigDecimal(0)); amsPlanChild.setInsertUsername(map.get("userName").toString()); amsPlanChild.setInsertTime(new Date()); entityDispose.disposePlanChild(amsPlanChild); amsPlanChildList.add(amsPlanChild); OmsTransOrder omsTransOrder = new OmsTransOrder(); omsTransOrder.setTransOrderId(omsTransOrderMapper.nextId()); omsTransOrder.setSerialNumber(DataChange.generateEightDigitsNumber("YSDD", omsTransOrder.getTransOrderId().intValue())); if (amsTransRequirement.getTransMode().compareTo(new BigDecimal(0)) == 0) { omsTransOrder.setCapacityId(DataChange.dataToBigDecimal(list.get("capacityId"))); } else { omsTransOrder.setCapacityId(DataChange.dataToBigDecimal(list.get("capacityNumber"))); } omsTransOrder.setDriverId(DataChange.dataToBigDecimal(list.get("driverId"))); omsTransOrder.setOrderType(amsTransRequirement.getBusinessType()); omsTransOrder.setIssueTime(new Date()); omsTransOrder.setInsertUsername(map.get("userName").toString()); omsTransOrder.setInsertTime(new Date()); omsTransOrder.setDeleted(DataChange.dataToBigDecimal(4)); omsTransOrder.setInsertUpdateRemark(list.get("remark") == null || list.get("remark").equals("") ? amsRequirementChild.getInsertUpdateRemark() : list.get("remark").toString()); omsTransOrder.setCurrentLineSeq(DataChange.dataToBigDecimal(0)); OmsOrderChild omsOrderChild = new OmsOrderChild(); omsOrderChild.setOrderChildId(omsOrderChildMapper.nextId()); omsOrderChild.setTransOrderId(omsTransOrder.getTransOrderId()); omsOrderChild.setPlanChildId(amsPlanChild.getPlanChildId()); omsOrderChild.setMaterialId(DataChange.dataToBigDecimal(map.get("materialId"))); omsOrderChild.setMaterialWeight(DataChange.dataToBigDecimal(list.get("materialNumber"))); omsOrderChild.setMaterialNumber(DataChange.dataToBigDecimal(list.get("materialWeight"))); omsOrderChild.setInsertTime(new Date()); omsOrderChild.setInsertUsername(map.get("userName").toString()); omsOrderChild.setDeleted(DataChange.dataToBigDecimal(0)); omsOrderChild.setAlternateFields7("1"); omsOrderChild.setInsertUpdateRemark(list.get("remark") == null || list.get("remark").equals("") ? amsRequirementChild.getInsertUpdateRemark() : list.get("remark").toString()); omsOrderChild.setAlternateFields1(omsTransOrderMapper.selectMax(j)); j++; if ((businessTypeName.equals("安泰型钢销售") || businessTypeName.equals("安泰高线销售") || businessTypeName.equals("型钢销售订单") || businessTypeName.equals("高线销售订单")) && (amsTransRequirement.getSourceOrderId() != null || amsTransRequirement.getSourceOrderId().compareTo(new BigDecimal(0)) != 0)) { dlivDirnoSeqList.add(omsOrderChild.getAlternateFields1()); } omsOrderChild.setAlternateFields2(map.get("loadPointId").toString()); //如果是火运,需要添加货位 if (amsTransRequirement.getTransMode().compareTo(new BigDecimal(1)) == 0) { omsOrderChild.setAlternateFields3(list.get("allocation").toString()); } //汽运需要新增各类实绩 if (amsTransRequirement.getTransMode().compareTo(new BigDecimal(0)) == 0) { //查询物资及物资大类信息 Map materialMap = new HashMap<>(); materialMap.put("materialId", omsOrderChild.getMaterialId()); Map materialType = omsTransOrderMapper.getMaterialInfo(materialMap); if (materialType == null) { materialType = new HashMap<>(); } //匹配路线新增各类实绩 Map lineMap = new HashMap<>(); lineMap.put("planChildId", amsPlanChild.getPlanChildId()); lineMap.put("businessTypeId", omsTransOrder.getOrderType()); lineMap.put("transOrderId", omsTransOrder.getTransOrderId()); lineMap.put("materialTypeId", DataChange.dataToBigDecimal(materialType.get("materialTypeId"))); lineMap.put("businessNameId", amsRequirementChild.getOperationsNameId()); lineMap.put("materialId", omsOrderChild.getMaterialId()); lineMap.put("loadPointId", map.get("loadPointId").toString()); lineMap.put("consigneeId", amsTransRequirement.getReceivingCompanyId()); lineMap.put("userName", map.get("userName").toString()); lineMap.put("lineId", amsTransRequirement.getLineId()); Map objectMap = matchLineAndCreatResult(lineMap); omsTransOrder.setLineId(DataChange.dataToBigDecimal(objectMap.get("lineId"))); } else { //火运只需要装货实绩 TmsLoadResult tmsLoadResult = new TmsLoadResult(); tmsLoadResult.setResultId(tmsLoadResultMapper.nextId()); tmsLoadResult.setTransOrderId(omsTransOrder.getTransOrderId()); tmsLoadResult.setLoadPointId(DataChange.dataToBigDecimal(map.get("loadPointId").toString())); tmsLoadResult.setInsertTime(new Date()); tmsLoadResult.setInsertUsername(map.get("userName").toString()); tmsLoadResult.setDeleted(BigDecimal.ZERO); tmsLoadResultMapper.insert(tmsLoadResult); } entityDispose.disposeOmsTransOrder(omsTransOrder); entityDispose.disposeOrderChild(omsOrderChild); omsTransOrderList.add(omsTransOrder); omsOrderChildList.add(omsOrderChild); } amsTransPlanMapper.batchInsert(amsTransPlanList); amsPlanChildMapper.batchInsert(amsPlanChildList); omsTransOrderMapper.batchInsert(omsTransOrderList); omsOrderChildMapper.batchInsert(omsOrderChildList); sumWeight(amsRequirementChild.getRequirementChildId()); for(AmsPlanChild amsPlanChild : amsPlanChildList) { sumWeightPlan(amsPlanChild.getPlanChildId()); } if ((businessTypeName.equals("安泰高线销售") || businessTypeName.equals("安泰型钢销售") || businessTypeName.equals("型钢销售订单") || businessTypeName.equals("高线销售订单")) && (amsTransRequirement.getSourceOrderId() != null || amsTransRequirement.getSourceOrderId().compareTo(new BigDecimal(0)) != 0)) { BigDecimal sumWeight = new BigDecimal(0); //修改发运通知单记录表 HashMap dlivDirnoMap = amsTransRequirementMapper.selectByDlivDirNo(amsRequirementChild.getAlternateFields1()); sumWeight = DataChange.dataToBigDecimal(dlivDirnoMap.get("outweight")).add(weight); HashMap hashMap = new HashMap<>(); hashMap.put("dlivDirno", amsRequirementChild.getAlternateFields1()); hashMap.put("outweight", sumWeight); amsTransRequirementMapper.updatedlivDirNo(hashMap); } //推送WMS派车单 if (dlivDirnoSeqList.size() > 0) { List> listMap = omsTransOrderMapper.selectDlivDirnolistByWMS(dlivDirnoSeqList); String url = "/antai.maketx/v1/slmdlivdirlists/wuliuAdd"; try { wmsUtil.executeArray("90010000004", listMap, map.get("accessToken").toString(), url); } catch (Exception e) { //如果出现报错需要删除掉wms的派车单 url = "/antai.maketx/v1/slmdlivdirlists/wuliuDel"; for (Map dlivDirnoSeqMap : listMap) { Map paramsMap = new HashMap<>(); paramsMap.put("id", dlivDirnoSeqMap.get("dlivDirnoSeq")); wmsUtil.executeObject("90010000005", paramsMap, map.get("accessToken").toString(), url); } throw new Exception("派车失败!" + e.getMessage()); } } return "派车成功!"; } /* 迁移实绩,销售特殊业务专用 销售查询是否有同车号,业务类型为型钢销售订单、高线销售订单,未接单但有装货的运单,最近一条。迁移其他实绩 */ void replaceResultSpecial(Map transOrder){ try{ replaceResult(DataChange.dataToBigDecimal(transOrder.get("transOrderId"))); }catch (Exception e){ e.printStackTrace(); log.error("销售特殊业务迁移实绩失败:"+e.getMessage()); } } /** * 迁移实绩,源运单和目标运单的运输步骤流程需要完全一致 * @param originTransOrderId * @throws Exception */ void replaceResult(BigDecimal originTransOrderId) throws Exception{ //查询原运单所有实绩 Map searchMap_origin = new HashMap<>(); searchMap_origin.put("transOrderId", originTransOrderId); searchMap_origin.put("deleted", 0); List tmsWeightResultsOrigin = tmsWeightResultMapper.selectByParameters(searchMap_origin); List tmsWeightResultsTarget = new ArrayList<>(); List omsOrderChildren = new ArrayList<>(); //遍历旧实绩迁移 if (tmsWeightResultsOrigin.size() > 0) { for (int i = 0; i < tmsWeightResultsOrigin.size(); i++) { TmsWeightResult itemOrigin = tmsWeightResultsOrigin.get(i); Map searchMap = new HashMap<>(); Map orderMap = new HashMap<>(); if (itemOrigin.getNetWeight() == null || itemOrigin.getNetWeightTime() == null) { continue; } if (itemOrigin.getAlternateFields10() == null) { continue; } searchMap.put("alternateFields9",itemOrigin.getTransOrderId()); searchMap.put("alternateFields10",itemOrigin.getResultId()); List tmsWeightResultLoad = tmsWeightResultMapper.selectByParametersSt(searchMap); if (tmsWeightResultLoad.size() == 0 || tmsWeightResultLoad.get(0) == null) { continue; } int j = 1; int loadWeightSize = tmsWeightResultLoad.size(); for (TmsWeightResult itemTarget : tmsWeightResultLoad) { //创建条码运单子表 //根据条码计重实绩获取运单数据 orderMap.put("transOrderId",itemTarget.getTransOrderId()); OmsOrderChild omsOrderChild = omsOrderChildMapper.selectByParameters(orderMap).get(0); if(omsOrderChild.getActualWeight().compareTo(BigDecimal.ZERO) <= 0) { continue; } itemTarget.setTransOrderChildId(omsOrderChild.getOrderChildId()); itemTarget.setPoundNo(itemOrigin.getPoundNo()); itemTarget.setGrossWeightTime(itemOrigin.getGrossWeightTime()); itemTarget.setGrossPlaceId(itemOrigin.getGrossPlaceId()); itemTarget.setTareWeightTime(itemOrigin.getTareWeightTime()); itemTarget.setTarePlaceId(itemOrigin.getTarePlaceId()); itemTarget.setNetWeightTime(itemOrigin.getNetWeightTime()); itemTarget.setNetWeight(itemOrigin.getNetWeight()); itemTarget.setResultImage(itemOrigin.getResultImage()); itemTarget.setAlternateFields6(itemOrigin.getAlternateFields6()); omsOrderChild.setNetWeightTime(itemTarget.getNetWeightTime()); omsOrderChild.setTareWeightTime(itemTarget.getTareWeightTime()); omsOrderChild.setGrossWeightTime(itemTarget.getGrossWeightTime()); omsOrderChild.setNetWeight(itemOrigin.getNetWeight()); itemTarget.setTareWeight(itemOrigin.getTareWeight()); itemTarget.setGrossWeight(itemOrigin.getGrossWeight()); itemTarget.setNetWeight(itemOrigin.getNetWeight()); omsOrderChild.setNetWeight(itemOrigin.getNetWeight()); //获取条码运单的计重实绩进行更新 j++; tmsWeightResultsTarget.add(itemTarget); omsOrderChildren.add(omsOrderChild); } } } int result = 0; if (tmsWeightResultsTarget.size() > 0) { result = tmsWeightResultMapper.batchUpdate(tmsWeightResultsTarget); omsOrderChildMapper.batchUpdate(omsOrderChildren); } log.info("replaceResult origin:"+originTransOrderId); } //多拼新增销售发运通知单 @Transactional(rollbackFor = Exception.class) public String saleDispatchDuoPin(Map map) throws Exception { List> mapList = (ArrayList) map.get("list"); List transPlanList = new ArrayList<>(); List planChildList = new ArrayList<>(); List transOrderList = new ArrayList<>(); List orderChildList = new ArrayList<>(); List dlivDirnoSeqList = new ArrayList<>(); int i = 1; for (Map maps : mapList) { AmsRequirementChild amsRequirementChild = amsRequirementChildMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(maps.get("requirementChildId"))); AmsTransRequirement amsTransRequirement = amsTransRequirementMapper.selectByPrimaryKey(amsRequirementChild.getTransRequirementId()); if (amsRequirementChild.getDeleted().compareTo(new BigDecimal(7)) != 0 && amsRequirementChild.getDeleted().compareTo(new BigDecimal(8)) != 0) { throw new Exception("状态不对,不允许发货!"); } if (amsRequirementChild.getDeleted().compareTo(new BigDecimal(7)) == 0) { amsRequirementChild.setDeleted(new BigDecimal(8)); amsRequirementChildMapper.updateByPrimaryKey(amsRequirementChild); } //是否超出计划重量 if (DataChange.dataToBigDecimal(maps.get("residueweight")).compareTo(DataChange.dataToBigDecimal(maps.get("materialWeight"))) == -1) { throw new Exception("发货重量大于剩余重量!"); } //增加计划住表记录 AmsTransPlan amsTransPlan = new AmsTransPlan(); amsTransPlan.setTransPlanId(amsTransPlanMapper.nextId()); amsTransPlan.setSerialNumber(DataChange.generateEightDigitsNumber("XS", amsTransPlan.getTransPlanId().intValue())); amsTransPlan.setCarrierId(DataChange.dataToBigDecimal(map.get("carrierId"))); amsTransPlan.setInsertTime(new Date()); amsTransPlan.setInsertUsername(map.get("userName").toString()); amsTransPlan.setDeleted(new BigDecimal(4)); amsTransPlan.setAlternateFields1("是"); amsTransPlan.setAlternateFields2(map.get("loadPointId").toString()); amsTransPlan.setTableName("AMS_TRANS_PLAN"); entityDispose.disposeTransPlan(amsTransPlan); transPlanList.add(amsTransPlan); //增加计划子表记录 AmsPlanChild amsPlanChild = new AmsPlanChild(); amsPlanChild.setPlanChildId(amsPlanChildMapper.nextId()); amsPlanChild.setTransPlanId(amsTransPlan.getTransPlanId()); amsPlanChild.setRequirementChildId(amsRequirementChild.getRequirementChildId()); amsPlanChild.setMaterialId(DataChange.dataToBigDecimal(maps.get("materialId"))); amsPlanChild.setMaterialWeight(DataChange.dataToBigDecimal(maps.get("materialNumber"))); amsPlanChild.setMaterialNumber(DataChange.dataToBigDecimal(maps.get("materialWeight"))); amsPlanChild.setTransTruckNumber(new BigDecimal(1)); amsPlanChild.setDeleted(new BigDecimal(0)); amsPlanChild.setInsertTime(new Date()); amsPlanChild.setInsertUsername(map.get("userName").toString()); amsPlanChild.setInsertUpdateRemark(amsRequirementChild.getInsertUpdateRemark()); entityDispose.disposePlanChild(amsPlanChild); planChildList.add(amsPlanChild); //增加运单主表记录 OmsTransOrder omsTransOrder = new OmsTransOrder(); omsTransOrder.setTransOrderId(omsTransOrderMapper.nextId()); omsTransOrder.setSerialNumber(DataChange.generateEightDigitsNumber("YSDD", omsTransOrder.getTransOrderId().intValue())); omsTransOrder.setCapacityId(DataChange.dataToBigDecimal(map.get("capacityId"))); omsTransOrder.setDriverId(DataChange.dataToBigDecimal(map.get("personnelId"))); omsTransOrder.setOrderType(amsTransRequirement.getBusinessType()); omsTransOrder.setIssueTime(amsTransRequirement.getInsertTime()); omsTransOrder.setInsertTime(new Date()); omsTransOrder.setInsertUsername(map.get("userName").toString()); omsTransOrder.setDeleted(new BigDecimal(4)); omsTransOrder.setAlternateFields2(""); omsTransOrder.setCurrentLineSeq(new BigDecimal(0)); entityDispose.disposeOmsTransOrder(omsTransOrder); transOrderList.add(omsTransOrder); //增加运单子表记录 OmsOrderChild omsOrderChild = new OmsOrderChild(); omsOrderChild.setOrderChildId(omsOrderChildMapper.nextId()); omsOrderChild.setTransOrderId(omsTransOrder.getTransOrderId()); omsOrderChild.setPlanChildId(amsPlanChild.getPlanChildId()); omsOrderChild.setMaterialId(DataChange.dataToBigDecimal(maps.get("materialId"))); omsOrderChild.setMaterialWeight(DataChange.dataToBigDecimal(maps.get("materialNumber"))); omsOrderChild.setMaterialNumber(DataChange.dataToBigDecimal(maps.get("materialWeight"))); omsOrderChild.setInsertTime(new Date()); omsOrderChild.setInsertUsername(map.get("userName").toString()); omsOrderChild.setInsertUpdateRemark(amsRequirementChild.getInsertUpdateRemark()); omsOrderChild.setDeleted(new BigDecimal(0)); omsOrderChild.setAlternateFields7("1"); omsOrderChild.setAlternateFields1(omsOrderChildMapper.selectMax(i)); i++; omsOrderChild.setAlternateFields2(map.get("loadPointId") + ""); entityDispose.disposeOrderChild(omsOrderChild); orderChildList.add(omsOrderChild); //修改发运单已出重量 BigDecimal weight = new BigDecimal(0); HashMap dlivDirnoMap = amsTransRequirementMapper.selectByDlivDirNo(amsRequirementChild.getAlternateFields1()); weight = DataChange.dataToBigDecimal(dlivDirnoMap.get("outweight")).add(DataChange.getBigDecimal(maps.get("materialWeight"))); dlivDirnoMap.put("outweight", weight); amsTransRequirementMapper.updatedlivDirNo(dlivDirnoMap); //获取运输类型 String businessTypeName = amsTransRequirementMapper.selectBusinessTypeName(amsTransRequirement.getBusinessType().toString()); if ((businessTypeName.equals("安泰高线销售") || businessTypeName.equals("安泰型钢销售") || businessTypeName.equals("型钢销售订单") || businessTypeName.equals("高线销售订单")) && amsTransRequirement.getSourceOrderId() != null) { dlivDirnoSeqList.add(omsOrderChild.getAlternateFields1()); } //查询物资及物资大类信息 Map materialMap = new HashMap<>(); materialMap.put("materialId", omsOrderChild.getMaterialId()); Map materialType = omsTransOrderMapper.getMaterialInfo(materialMap); if (materialType == null) { materialType = new HashMap<>(); } //匹配路线新增各类实绩 Map lineMap = new HashMap<>(); lineMap.put("planChildId", amsPlanChild.getPlanChildId()); lineMap.put("businessTypeId", omsTransOrder.getOrderType()); lineMap.put("transOrderId", omsTransOrder.getTransOrderId()); lineMap.put("materialTypeId", DataChange.dataToBigDecimal(materialType.get("materialTypeId"))); lineMap.put("businessNameId", amsRequirementChild.getOperationsNameId()); lineMap.put("materialId", omsOrderChild.getMaterialId()); lineMap.put("loadPointId", map.get("loadPointId").toString()); lineMap.put("consigneeId", amsTransRequirement.getReceivingCompanyId()); lineMap.put("userName", map.get("userName").toString()); lineMap.put("lineId", amsTransRequirement.getLineId()); Map objectMap = matchLineAndCreatResult(lineMap); omsTransOrder.setLineId(DataChange.dataToBigDecimal(objectMap.get("lineId"))); } amsTransPlanMapper.batchInsert(transPlanList); amsPlanChildMapper.batchInsert(planChildList); omsTransOrderMapper.batchInsert(transOrderList); omsOrderChildMapper.batchInsert(orderChildList); //反写通知单总重量 for (AmsPlanChild amsPlanChild : planChildList) { sumWeight(amsPlanChild.getRequirementChildId()); sumWeightPlan(amsPlanChild.getPlanChildId()); } //推送WMS派车单 if (dlivDirnoSeqList.size() > 0) { List> listMap = omsTransOrderMapper.selectDlivDirnolistByWMS(dlivDirnoSeqList); String url = "/antai.maketx/v1/slmdlivdirlists/wuliuAdd"; wmsUtil.executeArray("90010000004", listMap, map.get("accessToken").toString(), url); } return "操作成功!"; } /** * 一车多趟,重新派车 * @param transOrderId */ @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRES_NEW) public void reDispatchOrder(BigDecimal transOrderId) throws Exception{ //查询运单并校验 OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(transOrderId); //校验次数是否还有 if(DataChange.dataToBigDecimal(omsTransOrder.getAlternateFields28()).compareTo(new BigDecimal(1)) == 0) { throw new Exception("次数已抵达上限,无法派车!"); //如果次数等于0 } if(!"系统签到".equals(omsTransOrder.getConfirmReason())) { throw new Exception("非系统签到无法使用一车多趟!"); } Map searchMap_child = new HashMap<>(); searchMap_child.put("transOrderId",omsTransOrder.getTransOrderId()); searchMap_child.put("deleted",0); OmsOrderChild omsOrderChild = omsOrderChildMapper.selectByParameters(searchMap_child).get(0); //校验分录余额 Map planChild = new HashMap<>(); planChild.put("planChildId",omsOrderChild.getPlanChildId()); Map planDetails; if (omsTransOrder.getBusinessScene().equals("销售")) { planDetails = omsOrderChildMapper.findPlanChild2(planChild); } else { planDetails = omsOrderChildMapper.findPlanChild(planChild); } if (planDetails == null) { throw new Exception("运输计划异常:可能被删除或停用!无法派单,请刷新!"); } BigDecimal businessType = DataChange.getBigDecimal(planDetails.get("businessType")); String businessScene = DataChange.getString(planDetails.get("businessScene")); int controlMode = Integer.parseInt(planDetails.get("controlMode").toString()); switch (controlMode) { case 0: //不控制 break; case 1: //1:数量控制 BigDecimal numberLeft = DataChange.dataToBigDecimal(planDetails.get("numberLeft")); BigDecimal materialNumber = omsOrderChild.getNetWeight() == null ? DataChange.dataToBigDecimal(omsOrderChild.getMaterialNumber()) : omsOrderChild.getNetWeight(); if (materialNumber.compareTo(numberLeft) > 0) { throw new Exception("数量超出需求限制!"); } break; case 2: //2:金额控制 break; case 3: //3:车数控制 BigDecimal truckLeft = DataChange.dataToBigDecimal(planDetails.get("truckLeft")); BigDecimal truckNumber = BigDecimal.ONE; if (truckNumber.compareTo(truckLeft) > 0) { throw new Exception("车辆数量超出需求限制!"); } break; default: throw new Exception("未知的控制类型!"); } //更换运单信息 omsTransOrder.setTransOrderId(omsTransOrderMapper.nextId()); omsOrderChild.setOrderChildId(omsOrderChildMapper.nextId()); omsOrderChild.setTransOrderId(omsTransOrder.getTransOrderId()); omsTransOrder.setSerialNumber(DataChange.generateEightDigitsNumber("YSDD", omsTransOrder.getTransOrderId().intValue())); omsTransOrder.setConfirmReason(null); omsTransOrder.setDriverConfirmTime(null); omsTransOrder.setOrderCommunicationDuration(null); omsTransOrder.setCurrentLineSeq(BigDecimal.ZERO); omsTransOrder.setIssueTime(new Date()); omsTransOrder.setInsertTime(new Date()); omsTransOrder.setOrderStatus(null); if("销售采购联动".equals(omsTransOrder.getAlternateFields8())) { omsTransOrder.setInsertUpdateRemark("一车多趟推单,自动置为9"); omsTransOrder.setDeleted(new BigDecimal(9)); }else{ omsTransOrder.setInsertUpdateRemark("一车多趟推单,自动置为4"); omsTransOrder.setDeleted(new BigDecimal(4)); } omsTransOrder.setAlternateFields28(DataChange.dataToBigDecimal(omsTransOrder.getAlternateFields28()).subtract(new BigDecimal(1)).toString()); omsOrderChild.setInsertTime(new Date()); if("销售".equals(omsTransOrder.getBusinessScene())) { omsOrderChild.setMaterialNumber(omsOrderChild.getNetWeight() == null ? DataChange.dataToBigDecimal(omsOrderChild.getMaterialNumber()):omsOrderChild.getNetWeight()) ; omsOrderChild.setMaterialWeight(BigDecimal.ZERO); }else{ omsOrderChild.setMaterialNumber(BigDecimal.ZERO); omsOrderChild.setMaterialWeight(BigDecimal.ZERO); } omsOrderChild.setNetWeight(null); omsOrderChild.setActualWeight(null); omsOrderChild.setOriginDate(null); omsOrderChild.setAlternateFields9(null); omsOrderChild.setAlternateFields10(null); omsOrderChild.setAlternateFields11(null); omsOrderChild.setTareWeightTime(null); omsOrderChild.setEnfactoryTime(null); omsOrderChild.setOutfactoryTime(null); omsOrderChild.setGrossWeightTime(null); omsOrderChild.setNetWeightTime(null); omsOrderChild.setSignInTime(null); omsOrderChild.setAlternateFields15(null); omsOrderChild.setAlternateFields7(null); creatTransResult(omsTransOrder.getLineId(), omsTransOrder.getTransOrderId(), omsOrderChild.getPlanChildId(),omsTransOrder.getInsertUsername()); //新增并推送大宗 entityDispose.disposeOmsTransOrder(omsTransOrder); entityDispose.disposeOrderChild(omsOrderChild); omsTransOrderMapper.insertSelective(omsTransOrder); omsOrderChildMapper.insertSelective(omsOrderChild); //推送大宗 Map config = omsTransOrderMapper.getConfigByName("派单推送大宗"); config = config == null ? new HashMap<>() : config; if("否".equals(config.get("valueString"))){ log.info("配置如此,无需上传大宗"); }else{ dispatchPush(businessType,omsTransOrder.getCapacityId(),omsTransOrder.getDriverId(),omsTransOrder,omsOrderChild,planDetails); } } //查询运单详情 public void findUnloadDetails(OmsTransOrder omsTransOrder,String userName) throws Exception{ BigDecimal transOrderId = omsTransOrder.getTransOrderId(); String transOrderNumber = omsTransOrder.getSerialNumber(); Map searchMap = new HashMap<>(); searchMap.put("transOrderId",transOrderId); searchMap.put("transOrderNumber",transOrderNumber); searchMap.put("deleted",0); List transOrderChildren = omsOrderChildMapper.selectByParameters(searchMap); OmsOrderChild transOrderChild = transOrderChildren.get(0); BigDecimal transOrderChildId = transOrderChild.getOrderChildId(); Map unloadDetails = dzFeign.getUnloadDetails(searchMap); if(unloadDetails == null) { return; } SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyyMMddHHmmss"); List list = tmsUnloadResultMapper.selectByParameters(searchMap); for(TmsUnloadResult item : list){ //查询大宗 String materialCode = "" + unloadDetails.get("materialCode"); String startTimeStr = null; String endTimeStr = null; if(unloadDetails.get("startTime") == null && unloadDetails.get("endTime") == null) { continue; } if(unloadDetails.get("startTime") == null) { startTimeStr = "" + unloadDetails.get("endTime"); }else{ startTimeStr = "" + unloadDetails.get("startTime"); } if(unloadDetails.get("endTime") == null) { endTimeStr = "" + unloadDetails.get("startTime"); }else{ endTimeStr = "" + unloadDetails.get("endTime"); } String cysjStr = DataChange.getString(unloadDetails.get("cysj")); Date unloadStartTime = simpleDateFormat.parse(startTimeStr); Date unloadEndTime = simpleDateFormat.parse(endTimeStr); Date cysjDate = unloadStartTime; if(cysjStr != null && !cysjStr.equals("")){ cysjDate = simpleDateFormat.parse(cysjStr); } String cysj = simpleDateFormat.format(cysjDate); String unloadSourceId = "" + unloadDetails.get("unloadSourceId"); String address = "" + unloadDetails.get("address"); BigDecimal water = DataChange.dataToBigDecimal(unloadDetails.get("water")); BigDecimal zazhi = DataChange.dataToBigDecimal(unloadDetails.get("zazhi")); BigDecimal actualTonnage = DataChange.dataToBigDecimal(unloadDetails.get("actualTonnage")); BigDecimal yfsl = DataChange.dataToBigDecimal(unloadDetails.get("yfsl")); BigDecimal unloadPointId = omsTransOrderMapper.getOperationPointBySourceId(unloadSourceId); BigDecimal materialId = omsTransOrderMapper.getMaterialIdByCode(materialCode); item.setUnloadActualAddress(address); item.setTransOrderChildId(transOrderChildId); item.setUnloadPointId(unloadPointId); item.setActualTonnage(actualTonnage); item.setUnloadStatus("自动卸货"); item.setAlternateFields3(water.toString()); item.setAlternateFields4(zazhi.toString()); item.setAlternateFields8(cysj); item.setUnloadStartTime(unloadStartTime); item.setUnloadEndTime(unloadEndTime); item.setUnloadDuration(new BigDecimal( (item.getUnloadEndTime().getTime() - item.getUnloadStartTime().getTime())/60000 )); item.setUpdateTime(new Date()); item.setUpdateUsername(userName); tmsUnloadResultMapper.updateByPrimaryKeySelective(item); OmsOrderChild omsOrderChild = omsOrderChildMapper.selectByPrimaryKey(transOrderChildId); omsOrderChild.setActualWeight(item.getActualTonnage()); omsOrderChild.setMaterialNumber(yfsl); omsOrderChild.setKs(DataChange.dataToBigDecimal(item.getAlternateFields3())); omsOrderChild.setKz(DataChange.dataToBigDecimal(item.getAlternateFields4())); omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild); } } public void findLoadDetails(OmsTransOrder omsTransOrder,String userName) throws Exception{ BigDecimal transOrderId = omsTransOrder.getTransOrderId(); String transOrderNumber = omsTransOrder.getSerialNumber(); Map searchMap = new HashMap<>(); searchMap.put("transOrderId",transOrderId); searchMap.put("transOrderNumber",transOrderNumber); searchMap.put("deleted",0); List transOrderChildren = omsOrderChildMapper.selectByParameters(searchMap); OmsOrderChild transOrderChild = transOrderChildren.get(0); BigDecimal transOrderChildId = transOrderChild.getOrderChildId(); Map loadDetails = dzFeign.getLoadDetails(searchMap); if(loadDetails == null) { return; } List list = tmsLoadResultMapper.selectByParameters(searchMap); for(TmsLoadResult item : list) { if(item.getLoadEndTime() == null) { String loadSourceId = "" + loadDetails.get("loadSourceId"); BigDecimal loadPointId = omsTransOrderMapper.getOperationPointBySourceId(loadSourceId); item.setLoadStartTime(DataChange.dataToDate(loadDetails.get("loadEndTime"))); item.setLoadEndTime(DataChange.dataToDate(loadDetails.get("loadEndTime"))); item.setLoadPointId(loadPointId); item.setUpdateTime(new Date()); item.setUpdateUsername("大宗"); tmsLoadResultMapper.updateByPrimaryKeySelective(item); OmsOrderChild omsOrderChild = omsOrderChildMapper.selectByPrimaryKey(transOrderChildId); omsOrderChild.setActualWeight(item.getActualTonnage()); omsOrderChild.setOriginDate(item.getLoadEndTime()); omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild); } } } //补录车辆档案 @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRES_NEW) public void buluCapacity(Map transOrder) throws Exception{ Map capacity = dzFeign.getCapacityDetails(transOrder); if(capacity != null) { if(capacity.get("xszh") != null && !"".equals(capacity.get("xszh"))){ transOrder.put("xszh",capacity.get("xszh")); } if(capacity.get("yyzh") != null && !"".equals(capacity.get("yyzh"))){ transOrder.put("yyzh",capacity.get("yyzh")); } if(capacity.get("cyzgz") != null && !"".equals(capacity.get("cyzgz"))){ transOrder.put("cyzgz",capacity.get("cyzgz")); } if(capacity.get("zs") != null && !"".equals(capacity.get("zs"))){ transOrder.put("zs",capacity.get("zs")); } if(capacity.get("hzjz") != null && !"".equals(capacity.get("hzjz"))){ transOrder.put("hzjz",capacity.get("hzjz")); } if(capacity.get("hzl") != null && !"".equals(capacity.get("hzl"))){ transOrder.put("hzl",capacity.get("hzl")); } omsTransOrderMapper.updateCapacity(transOrder); omsTransOrderMapper.updateDriver(transOrder); //if(capacity.get("sfzh") != null && capacity.get("innerCode") != null) { // //根据身份证号更新内码 // omsTransOrderMapper.updateIdcardsInfo(capacity); //} } } /** * 补录大宗运单实绩-采购 * @throws ParseException */ public void buluTransOrder() throws ParseException { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd-hhmmss"); List> list = dzFeign.getTransOrderDz(); Map capacityMap = new HashMap<>(); Map driverMap = new HashMap<>(); List transOrderList_add = new ArrayList<>(); List orderChildList_add = new ArrayList<>(); List weightResultList_add = new ArrayList<>(); log.debug("listSize = "+list.size()); for(Map item : list){ String planNo = item.get("planNo").toString(); String pczh = item.get("pczh").toString(); log.debug("pczh:"+pczh); // String capacityNumber = item.get("capacityNumber").toString(); // String driverName = item.get("driverName").toString(); String startTime = item.get("startTime").toString(); BigDecimal materialNumber = DataChange.dataToBigDecimal(item.get("materialNumber")); String poundNo = item.get("poundNo").toString(); BigDecimal grossWeight = DataChange.dataToBigDecimal(item.get("grossWeight")); BigDecimal tareWeight = DataChange.dataToBigDecimal(item.get("tareWeight")); BigDecimal netWeight = DataChange.dataToBigDecimal(item.get("netWeight")); BigDecimal bzw = DataChange.dataToBigDecimal(item.get("bzw")); //计划 Map planChild = omsTransOrderMapper.findPlanChildByPlanNo(item); BigDecimal planChildId = DataChange.dataToBigDecimal(planChild.get("planChildId")); BigDecimal materialId = DataChange.dataToBigDecimal(planChild.get("materialId")); BigDecimal orderType = DataChange.dataToBigDecimal(planChild.get("businessType")); //车辆 BigDecimal capacityId = null; // if(capacityMap.get(capacityNumber) != null){ // capacityId = capacityMap.get(capacityNumber); // }else{ // capacityId = omsTransOrderMapper.getCapacityId(capacityNumber); // capacityMap.put(capacityNumber,capacityId); // } //司机 BigDecimal driverId = null; // if(driverMap.get(driverName) != null){ // driverId = driverMap.get(driverName); // }else{ // driverId = omsTransOrderMapper.getPersonnelId(driverName); // driverMap.put(driverName,driverId); // } //运单 Map search_Order = new HashMap<>(); search_Order.put("serialNumber",pczh); // List resultList = new ArrayList<>(); List resultList = omsTransOrderMapper.selectByParameters(search_Order); if(resultList.size() == 0){ //运单主表 OmsTransOrder omsTransOrder = new OmsTransOrder(); omsTransOrder.setTransOrderId(omsTransOrderMapper.nextId()); omsTransOrder.setSerialNumber(pczh); omsTransOrder.setCapacityId(capacityId); omsTransOrder.setDriverId(driverId); omsTransOrder.setOrderType(orderType); omsTransOrder.setIssueTime(dateFormat.parse(startTime)); omsTransOrder.setOrderStatus("企运通派车回传"); omsTransOrder.setInsertTime(new Date()); omsTransOrder.setInsertUsername("大宗导入数据"); omsTransOrder.setDeleted(new BigDecimal(2)); omsTransOrder.setCurrentLineSeq(new BigDecimal(0)); transOrderList_add.add(omsTransOrder); //运单子表 OmsOrderChild omsOrderChild = new OmsOrderChild(); omsOrderChild.setOrderChildId(omsOrderChildMapper.nextId()); omsOrderChild.setTransOrderId(omsTransOrder.getTransOrderId()); omsOrderChild.setPlanChildId(planChildId); omsOrderChild.setMaterialId(materialId); omsOrderChild.setMaterialWeight(BigDecimal.ZERO); omsOrderChild.setMaterialNumber(materialNumber); omsOrderChild.setInsertTime(new Date()); omsOrderChild.setInsertUsername("大宗导入数据"); omsOrderChild.setDeleted(new BigDecimal(0)); orderChildList_add.add(omsOrderChild); //计量实绩 TmsWeightResult tmsWeightResult = new TmsWeightResult(); tmsWeightResult.setResultId(tmsWeightResultMapper.nextId()); tmsWeightResult.setTransOrderId(omsTransOrder.getTransOrderId()); tmsWeightResult.setTransOrderChildId(omsOrderChild.getOrderChildId()); tmsWeightResult.setPoundNo(poundNo); tmsWeightResult.setGrossWeight(grossWeight); tmsWeightResult.setGrossWeightTime(omsTransOrder.getIssueTime()); tmsWeightResult.setTareWeight(DataChange.dataToBigDecimal(tareWeight)); tmsWeightResult.setTareWeightTime(omsTransOrder.getIssueTime()); tmsWeightResult.setNetWeight(netWeight); tmsWeightResult.setNetWeightTime(omsTransOrder.getIssueTime()); tmsWeightResult.setAlternateFields13(bzw.toString()); tmsWeightResult.setDeleted(new BigDecimal(0)); tmsWeightResult.setInsertUsername("大宗导入数据"); tmsWeightResult.setInsertTime(new Date()); weightResultList_add.add(tmsWeightResult); }else{ log.debug(pczh+"已存在!"); } } int index = 0,section = 200;//分片大小 while(index * section < transOrderList_add.size()) { index++; List tempList = null; List tempList1 = null; List tempList2 = null; if (index * section < transOrderList_add.size()) { tempList = transOrderList_add.subList((index - 1) * section, index * section); tempList1 = orderChildList_add.subList((index - 1) * section, index * section); tempList2 = weightResultList_add.subList((index - 1) * section, index * section); } else { tempList = transOrderList_add.subList((index - 1) * section, transOrderList_add.size()); tempList1 = orderChildList_add.subList((index - 1) * section, transOrderList_add.size()); tempList2 = weightResultList_add.subList((index - 1) * section, transOrderList_add.size()); } if(tempList.size()>0){ omsTransOrderMapper.batchInsert(tempList); omsOrderChildMapper.batchInsert(tempList1); tmsWeightResultMapper.batchInsert(tempList2); } } } public void findSignTime(OmsTransOrder omsTransOrder, String userName) throws Exception { //查询运输订单下的签到实绩 Map searchMap = new HashMap<>(); searchMap.put("transOrderId",omsTransOrder.getTransOrderId()); searchMap.put("deleted",0); List list = tmsSignInResultMapper.selectByParameters(searchMap); Map config = omsTransOrderMapper.getConfigByName("签到过期时间"); config = config == null ? new HashMap<>() : config; BigDecimal expireHour = DataChange.dataToBigDecimal(config.get("valueNumber")); Map objectObjectHashMap = new HashMap<>(); objectObjectHashMap.put("transOrderNumber",omsTransOrder.getSerialNumber()); Map signMap = dzFeign.getTransResult(objectObjectHashMap); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); if(signMap != null && signMap.get("fksj") != null) { Date date = simpleDateFormat.parse(signMap.get("fksj").toString()); for(TmsSignInResult item : list) { if (item.getSignInTime() == null) { item.setSignInMode("签到机签到"); item.setSignInAddress("签到机签到"); item.setLocationMode("签到机签到"); item.setSignInTime(date); if (expireHour.compareTo(BigDecimal.ZERO) > 0) { item.setExpireTime( new Date(item.getSignInTime().getTime() + expireHour.multiply(new BigDecimal(1000 * 60 * 60)).longValue()) ); } item.setResultImage(null); item.setUpdateTime(new Date()); item.setUpdateUsername(userName); tmsSignInResultMapper.updateByPrimaryKeySelective(item); omsOrderChildService.updateOrderChildInfo(omsTransOrder.getTransOrderId(),null,item.getSignInTime(),"签到"); //omsTransOrderService.updateOrderStatus(transOrderIds.get(0),item.getSegmentSqe(),"签到",item.getUpdateUsername()); //map.put("resultId",item.getResultId());//返回给日志记录 } throw new Exception("没有能修改的记录!"); } } } ExecutorService threadPool = new ThreadPoolExecutor(2,5, 1L, TimeUnit.SECONDS, new LinkedBlockingQueue<>(3), Executors.defaultThreadFactory(), new ThreadPoolExecutor.AbortPolicy()); /** * 同步生产实绩 * @return */ @Transactional(rollbackFor = Exception.class) public synchronized String syncProductionResult(Map map) { BigDecimal orderId = omsTransOrderMapper.selectOrderInfoByDB(map); System.out.println(map.get("djbh").toString() + "==djbh"); //if (orderId != null) { // return "1"; //} JSONObject jsonObject = new JSONObject(map); String info1 = null; String info2 = null; if (jsonObject.toString().length() > 3000) { info1 = jsonObject.toString().substring(0,3000); info2 = jsonObject.toString().substring(3000); }else{ info1 = jsonObject.toString(); } //接参 String djbh = map.get("djbh").toString(); String capacityNumber = map.get("capacityNumber").toString(); //新增报文表 Date ts = DataChange.dataToDate(map.get("ts")); Date enFacotryTime = DataChange.dataToDate(map.get("enFacotryTime")); String entryMode = DataChange.getString(map.get("entryMode")); String entryGate = DataChange.getString(map.get("entryGate")); String entryImage = DataChange.getString(map.get("entryImage")); Date tareTime = DataChange.dataToDate(map.get("tareTime")); String tareGate = DataChange.getString(map.get("tareGate")); String tareImage = DataChange.getString(map.get("tareImage")); Date grossTime = DataChange.dataToDate(map.get("grossTime")); String grossGate = DataChange.getString(map.get("grossGate")); String grossImage = DataChange.getString(map.get("grossImage")); Date outFactoryTime = DataChange.dataToDate(map.get("outFactoryTime")); String outMode = DataChange.getString(map.get("outMode")); String outGate = DataChange.getString(map.get("outGate")); String outImage = DataChange.getString(map.get("outImage")); BigDecimal tareWeight = DataChange.dataToBigDecimal(map.get("tareWeight")); BigDecimal grossWeight = DataChange.dataToBigDecimal(map.get("grossWeight")); BigDecimal netWeight = DataChange.dataToBigDecimal(map.get("netWeight")); String isReWeight = DataChange.getString(map.get("isReWeight"));//是否复磅 Date enFacotryTime2 = DataChange.dataToDate(map.get("enFacotryTime2")); String entryMode2 = DataChange.getString(map.get("entryMode2")); String entryGate2 = DataChange.getString(map.get("entryGate2")); String entryImage2 = DataChange.getString(map.get("entryImage2")); Date tareTime2 = DataChange.dataToDate(map.get("tareTime2")); String tareGate2 = DataChange.getString(map.get("tareGate2")); String tareImage2 = DataChange.getString(map.get("tareImage2")); Date grossTime2 = DataChange.dataToDate(map.get("grossTime2")); String grossGate2 = DataChange.getString(map.get("grossGate2")); String grossImage2 = DataChange.getString(map.get("grossImage2")); Date outFactoryTime2 = DataChange.dataToDate(map.get("outFactoryTime2")); String outMode2 = DataChange.getString(map.get("outMode2")); String outGate2 = DataChange.getString(map.get("outGate2")); String outImage2 = DataChange.getString(map.get("outImage2")); Date unloadTime = null; Date loadTime = null; if(map.get("unloadTime") != null) { unloadTime = DataChange.dataToDate(map.get("unloadTime")); } //获取卸货时间 Map objectObjectHashMap = new HashMap<>(); objectObjectHashMap.put("djbh",djbh); objectObjectHashMap.put("businessScene","调拨"); if("收货".equals(map.get("djflag"))) { }else{ Map zxsjMap = dzFeign.getZxTime(objectObjectHashMap); if(zxsjMap != null && zxsjMap.get("xhsj") != null) { unloadTime = DataChange.dataToDate(zxsjMap.get("xhsj")); } if(zxsjMap != null && zxsjMap.get("zhsj") != null) { loadTime = DataChange.dataToDate(zxsjMap.get("zhsj")); } } BigDecimal tareWeight2 = DataChange.dataToBigDecimal(map.get("tareWeight2")); BigDecimal grossWeight2 = DataChange.dataToBigDecimal(map.get("grossWeight2")); BigDecimal netWeight2 = DataChange.dataToBigDecimal(map.get("netWeight2")); Map planChildMap = new HashMap<>(); // 根据需求查询计划 if("收货".equals(map.get("djflag"))) { //map.put("businessTypeId",49996); planChildMap = omsTransOrderMapper.findTransPlan(map); if(planChildMap == null ) { amsFeign.transPurchaseRequirementFromDz(map); planChildMap = omsTransOrderMapper.findTransPlan(map); if(planChildMap == null) { log.error(map.get("tdls")+ "==需求自动导入失败,请运维人员手动导入"); return "需求自动导入失败,请运维人员手动导入"; } } }else{ map.put("businessTypeId",12); planChildMap = omsTransOrderMapper.findTransPlan(map); if(planChildMap == null ) { amsFeign.transProductRequirementFromDz(map); planChildMap = omsTransOrderMapper.findTransPlan(map); if(planChildMap == null) { log.error(map.get("tdls")+ "==需求自动导入失败,请运维人员手动导入"); return "需求自动导入失败,请运维人员手动导入"; } } } BigDecimal requirementChildId = DataChange.dataToBigDecimal(planChildMap.get("requirementChildId")); AmsRequirementChild amsRequirementChild = amsRequirementChildMapper.selectByPrimaryKey(requirementChildId); AmsTransRequirement amsTransRequirement = amsTransRequirementMapper.selectByPrimaryKey(amsRequirementChild.getTransRequirementId()); BigDecimal planChildId = DataChange.dataToBigDecimal(planChildMap.get("planChildId")); if(planChildId == null || planChildId.compareTo(BigDecimal.ZERO) == 0) { //生成计划 AmsTransPlan amsTransPlan = new AmsTransPlan(); amsTransPlan.setTransPlanId(amsTransPlanMapper.nextId()); amsTransPlan.setSerialNumber(DataChange.generateEightDigitsNumber("XS", amsTransPlan.getTransPlanId().intValue())); amsTransPlan.setCarrierId(new BigDecimal(37019)); amsTransPlan.setDeleted(BigDecimal.ZERO); amsTransPlan.setInsertTime(new Date()); amsTransPlan.setInsertUsername("系统新增"); AmsPlanChild amsPlanChild = new AmsPlanChild(); amsPlanChild.setPlanChildId(amsPlanChildMapper.nextId()); amsPlanChild.setTransPlanId(amsTransPlan.getTransPlanId()); amsPlanChild.setRequirementChildId(requirementChildId); amsPlanChild.setDeleted(new BigDecimal(0)); amsTransPlanMapper.insertSelective(amsTransPlan); amsPlanChildMapper.insertSelective(amsPlanChild); planChildId = amsPlanChild.getPlanChildId(); } OmsTransOrder omsTransOrder = new OmsTransOrder(); BigDecimal driverId = null; Object driverName = map.get("driverName"); if(driverName != null) { String driverName1 = driverName.toString().split("国六|电动")[0]; map.put("driverName",driverName1); } //根据身份证号查找司机 try { driverId = omsTransOrderMapper.selectDriverId(map); } catch (Exception e) { e.printStackTrace(); //根据司机姓名去查询身份证号 try { String idCardNo = omsTransOrderMapper.getIdCardNo(map.get("driverName").toString()); map.put("identityCard",idCardNo); driverId = omsTransOrderMapper.selectDriverId(map); } catch (Exception exception) { exception.printStackTrace(); } log.error(info1); log.error(info2); log.error("该身份证对应多个司机。"); //return "该身份证对应多个司机。"; } if (driverId == null) { try { String idCardNo = omsTransOrderMapper.getIdCardNo(map.get("driverName").toString()); map.put("identityCard",idCardNo); driverId = omsTransOrderMapper.selectDriverId(map); } catch (Exception exception) { exception.printStackTrace(); } log.error(info1); log.error(info2); log.error("该身份证未对应到司机"); //return "该身份证未对应到司机"; } BigDecimal capacityId = null; String reg = "((厂内|场内|社会){0,1}[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼]{1}[A-HJ-Z]{1}(([DF]{1}[A-HJ-NP-Z0-9]{1}[0-9]{4})|([0-9]{5}[DF]{1})|([A-HJ-NP-Z0-9]{5})))"; Pattern pattern = Pattern.compile(reg); Matcher matcher = pattern.matcher(map.get("capacityNumber").toString().toUpperCase()); String capacityNo = null; if(matcher.find()) { capacityNo = matcher.group(); capacityId = omsTransOrderMapper.selectCapacityId(capacityNo); } // 生成运单 if (orderId == null) { //没有,走新增 omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(new BigDecimal(364428)); omsTransOrder.setTransOrderId(omsTransOrderMapper.nextId()); omsTransOrder.setSerialNumber(DataChange.generateEightDigitsNumber("YSDD", omsTransOrder.getTransOrderId().intValue())); omsTransOrder.setDriverId(driverId); omsTransOrder.setCapacityId(capacityId); omsTransOrder.setAlternateFields7(map.get("djbh").toString()); omsTransOrder.setIssueTime(new Date()); omsTransOrder.setInsertTime(new Date()); omsTransOrder.setInsertUsername("大宗回传"); omsTransOrder.setDeleted(new BigDecimal(2)); omsTransOrder.setUpdateTime(new Date()); omsTransOrder.setUpdateUsername("大宗回传"); omsTransOrder.setOrderStatus(isReWeight); if("update".equals(map.get("flag"))) { omsTransOrder.setAlternateFields30(info1); omsTransOrder.setAlternateFields31(info2); }else{ omsTransOrder.setAlternateFields4(info1); omsTransOrder.setAlternateFields5(info2); } omsTransOrder.setCapacityNumber(capacityNo == null ? map.get("capacityNumber").toString() : capacityNo); omsTransOrder.setDriverName(map.get("driverName").toString()); omsTransOrder.setAlternateFields27("重复更新"); OmsOrderChild omsOrderChild = omsOrderChildMapper.selectByPrimaryKey(new BigDecimal(364428)); omsOrderChild.setOrderChildId(omsOrderChildMapper.nextId()); omsOrderChild.setPlanChildId(planChildId); omsOrderChild.setTransOrderId(omsTransOrder.getTransOrderId()); omsOrderChild.setDeleted(new BigDecimal(0)); omsOrderChild.setMaterialId(amsRequirementChild.getMaterialId()); omsOrderChild.setLoadTime(loadTime); omsOrderChild.setUnloadTime(unloadTime); map.put("transOrderId",omsTransOrder.getTransOrderId()); //查询各种实绩 Map searchMap = new HashMap<>(); searchMap.put("transOrderId",364428); List enfactoryResultList = tmsEnfactoryResultMapper.selectWeightMap(searchMap); List outfactoryResultList = tmsOutfactoryResultMapper.selectWeightMap(searchMap); List tmsWeightResults = tmsWeightResultMapper.selectByParametersSt(searchMap); List enfactoryResultListActuall = new ArrayList<>(); List outfactoryResultListActuall = new ArrayList<>(); List tmsWeightResultsActuall = new ArrayList<>(); //进厂实绩 enfactoryResultList.get(0).setResultId(tmsEnfactoryResultMapper.nextId()); enfactoryResultList.get(0).setTransOrderId(omsTransOrder.getTransOrderId()); enfactoryResultList.get(0).setEntryGateTime(enFacotryTime); enfactoryResultList.get(0).setEntryMode(entryMode); enfactoryResultList.get(0).setGatepostId(omsTransOrderMapper.getOperationPointId(""+entryGate,null)); enfactoryResultList.get(0).setResultImage(entryImage); enfactoryResultList.get(0).setAlternateFields2("否"); enfactoryResultListActuall.add(enfactoryResultList.get(0)); //出厂实绩 outfactoryResultList.get(0).setResultId(tmsOutfactoryResultMapper.nextId()); outfactoryResultList.get(0).setTransOrderId(omsTransOrder.getTransOrderId()); outfactoryResultList.get(0).setOutGateTime(outFactoryTime); outfactoryResultList.get(0).setOutMode(outMode); outfactoryResultList.get(0).setGatepostId(omsTransOrderMapper.getOperationPointId(""+outGate,null)); outfactoryResultList.get(0).setResultImage(outImage); outfactoryResultList.get(0).setAlternateFields2("否"); outfactoryResultListActuall.add(outfactoryResultList.get(0)); //计量实绩 tmsWeightResults.get(0).setResultId(tmsWeightResultMapper.nextId()); tmsWeightResults.get(0).setTransOrderId(omsTransOrder.getTransOrderId()); tmsWeightResults.get(0).setTransOrderChildId(omsOrderChild.getOrderChildId()); tmsWeightResults.get(0).setTareWeight(tareWeight); tmsWeightResults.get(0).setTareWeightTime(tareTime); tmsWeightResults.get(0).setAlternateFields6(tareImage); tmsWeightResults.get(0).setTarePlaceId(omsTransOrderMapper.getOperationPointId(""+tareGate,null)); tmsWeightResults.get(0).setGrossWeight(grossWeight); tmsWeightResults.get(0).setGrossWeightTime(grossTime); tmsWeightResults.get(0).setResultImage(grossImage); tmsWeightResults.get(0).setGrossPlaceId(omsTransOrderMapper.getOperationPointId(""+grossGate,null)); tmsWeightResults.get(0).setNetWeight(netWeight); tmsWeightResults.get(0).setNetWeightTime(grossTime); tmsWeightResults.get(0).setAlternateFields12("否"); tmsWeightResults.get(0).setMaterialId(omsOrderChild.getMaterialId()); tmsWeightResults.get(0).setPoundNo(djbh); //判断净重 if("龙门吊库→新专线".equals(amsTransRequirement.getAlternateFields13()) && tmsWeightResults.get(0).getNetWeight().compareTo(new BigDecimal(40)) == -1) { omsOrderChild.setAlternateFields23("1"); } omsTransOrder.setIssueTime(tmsWeightResults.get(0).getNetWeightTime()); omsOrderChild.setNetWeight(tmsWeightResults.get(0).getNetWeight()); tmsWeightResultsActuall.add(tmsWeightResults.get(0)); //复磅信息 if("复磅".equals(isReWeight)){ try{ //进厂实绩 enfactoryResultList.get(1).setResultId(tmsEnfactoryResultMapper.nextId()); enfactoryResultList.get(1).setTransOrderId(omsTransOrder.getTransOrderId()); enfactoryResultList.get(1).setEntryGateTime(enFacotryTime2); enfactoryResultList.get(1).setEntryMode(entryMode2); enfactoryResultList.get(1).setGatepostId(omsTransOrderMapper.getOperationPointId(""+entryGate2,null)); enfactoryResultList.get(1).setResultImage(entryImage2); enfactoryResultList.get(1).setAlternateFields2("是"); enfactoryResultListActuall.add(enfactoryResultList.get(1)); //出厂实绩 outfactoryResultList.get(1).setResultId(tmsOutfactoryResultMapper.nextId()); outfactoryResultList.get(1).setTransOrderId(omsTransOrder.getTransOrderId()); outfactoryResultList.get(1).setOutGateTime(outFactoryTime2); outfactoryResultList.get(1).setOutMode(outMode2); outfactoryResultList.get(1).setGatepostId(omsTransOrderMapper.getOperationPointId(""+outGate2,null)); outfactoryResultList.get(1).setResultImage(outImage2); outfactoryResultList.get(1).setAlternateFields2("是"); outfactoryResultListActuall.add(outfactoryResultList.get(1)); //计量实绩 tmsWeightResults.get(1).setResultId(tmsWeightResultMapper.nextId()); tmsWeightResults.get(1).setTransOrderId(omsTransOrder.getTransOrderId()); tmsWeightResults.get(1).setTransOrderChildId(omsOrderChild.getOrderChildId()); tmsWeightResults.get(1).setTareWeight(tareWeight2); tmsWeightResults.get(1).setTareWeightTime(tareTime2); tmsWeightResults.get(1).setAlternateFields6(tareImage2); tmsWeightResults.get(1).setTarePlaceId(omsTransOrderMapper.getOperationPointId(""+tareGate2,null)); tmsWeightResults.get(1).setGrossWeight(grossWeight2); tmsWeightResults.get(1).setGrossWeightTime(grossTime2); tmsWeightResults.get(1).setResultImage(grossImage2); tmsWeightResults.get(1).setGrossPlaceId(omsTransOrderMapper.getOperationPointId(""+grossGate2,null)); tmsWeightResults.get(1).setNetWeight(netWeight2); tmsWeightResults.get(1).setNetWeightTime(tareTime2); tmsWeightResults.get(1).setMaterialId(omsOrderChild.getMaterialId()); tmsWeightResults.get(1).setAlternateFields12("是"); tmsWeightResults.get(1).setPoundNo(djbh); tmsWeightResultsActuall.add(tmsWeightResults.get(1)); omsTransOrder.setIssueTime(tmsWeightResults.get(0).getNetWeightTime()); omsOrderChild.setNetWeight(tmsWeightResults.get(1).getNetWeight()); }catch (NullPointerException e){ log.error("生产路线不包含复磅实绩,报空指针"); }catch (Exception e){ e.printStackTrace(); log.error("生产复磅非空指针异常:"+e.getMessage()); } } //新增 entityDispose.disposeOmsTransOrder(omsTransOrder); entityDispose.disposeOrderChild(omsOrderChild); omsOrderChildMapper.insertSelective(omsOrderChild); try { matchLoaderCapacityOrder(omsTransOrder,omsOrderChild); } catch (Exception e) { e.printStackTrace(); } try { matchPriceSyncDz(omsTransOrder,omsOrderChild); } catch (Exception e) { e.printStackTrace(); } tmsEnfactoryResultMapper.batchInsert(enfactoryResultListActuall); tmsOutfactoryResultMapper.batchInsert(outfactoryResultListActuall); tmsWeightResultMapper.batchInsert(tmsWeightResultsActuall); //try { // if (omsTransOrder.getAlternateFields25() == null) { // omsTransOrder = syncInwardTransOrder(capacityNo, amsTransRequirement, amsRequirementChild, omsTransOrder, tmsWeightResults); // } //} catch (Exception e) { // e.printStackTrace(); //} if(capacityId != null && driverId == null && omsTransOrder.getCapacityInnerNumber() != null) { //如果有小号,车号不存在则提醒调度 try { HashMap sendMap = new HashMap<>(); sendMap.put("userId", "admin"); sendMap.put("userName","admin"); sendMap.put("title", "调拨过磅异常提醒"); sendMap.put("sendMessage", omsTransOrder.getCapacityInnerNumber() + ":未匹配到司机姓名,请前往运输订单-大宗检查名字是否符合要求"); sendMap.put("sendType", "01");//01:通知消息 String websocketId = "物流公司汽运与机械处"; RESTfulResult resTfulResult = null; resTfulResult = websocketFeign.sendWebsocket(websocketId, sendMap); if (resTfulResult != null && !resTfulResult.isSucceed()) { log.error("物流调度消息推送失败:" + resTfulResult.getMessage()); } } catch (Exception e) { log.error("物流调度消息推送异常:{}", e); e.printStackTrace(); } } omsTransOrderMapper.insertSelective(omsTransOrder); return "同步成功"; }else{ //有,走更新 omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(orderId); omsTransOrder.setDriverId(driverId); omsTransOrder.setCapacityId(capacityId); omsTransOrder.setAlternateFields7(map.get("djbh").toString()); omsTransOrder.setDeleted(new BigDecimal(2)); omsTransOrder.setUpdateTime(new Date()); omsTransOrder.setUpdateUsername("大宗回传"); omsTransOrder.setOrderStatus(isReWeight); if("update".equals(map.get("flag"))) { omsTransOrder.setAlternateFields30(info1); omsTransOrder.setAlternateFields31(info2); }else{ omsTransOrder.setAlternateFields4(info1); omsTransOrder.setAlternateFields5(info2); } omsTransOrder.setAlternateFields27("重复更新"); omsTransOrder.setCapacityNumber(capacityNo == null ? map.get("capacityNumber").toString() : capacityNo); omsTransOrder.setDriverName(map.get("driverName").toString()); map.put("transOrderId",omsTransOrder.getTransOrderId()); //查询各种实绩 Map searchMap = new HashMap<>(); searchMap.put("transOrderId",omsTransOrder.getTransOrderId()); List omsOrderChilds = omsOrderChildMapper.selectByParameters(searchMap); OmsOrderChild omsOrderChild = omsOrderChilds.get(0); omsOrderChild.setPlanChildId(planChildId); omsOrderChild.setTransOrderId(omsTransOrder.getTransOrderId()); omsOrderChild.setDeleted(new BigDecimal(0)); omsOrderChild.setLoadTime(loadTime); omsOrderChild.setUnloadTime(unloadTime); omsOrderChild.setMaterialId(amsRequirementChild.getMaterialId()); List enfactoryResultList = tmsEnfactoryResultMapper.selectByParameters(searchMap); List outfactoryResultList = tmsOutfactoryResultMapper.selectByParameters(searchMap); List tmsWeightResults = tmsWeightResultMapper.selectByParameters(searchMap); //进厂实绩 enfactoryResultList.get(0).setEntryGateTime(enFacotryTime); enfactoryResultList.get(0).setEntryMode(entryMode); enfactoryResultList.get(0).setGatepostId(omsTransOrderMapper.getOperationPointId(""+entryGate,null)); enfactoryResultList.get(0).setResultImage(entryImage); //出厂实绩 outfactoryResultList.get(0).setOutGateTime(outFactoryTime); outfactoryResultList.get(0).setOutMode(outMode); outfactoryResultList.get(0).setGatepostId(omsTransOrderMapper.getOperationPointId(""+outGate,null)); outfactoryResultList.get(0).setResultImage(outImage); //计量实绩 tmsWeightResults.get(0).setTareWeight(tareWeight); tmsWeightResults.get(0).setTareWeightTime(tareTime); tmsWeightResults.get(0).setAlternateFields6(tareImage); tmsWeightResults.get(0).setTarePlaceId(omsTransOrderMapper.getOperationPointId(""+tareGate,null)); tmsWeightResults.get(0).setPoundNo(djbh); tmsWeightResults.get(0).setGrossWeight(grossWeight); tmsWeightResults.get(0).setGrossWeightTime(grossTime); tmsWeightResults.get(0).setResultImage(grossImage); tmsWeightResults.get(0).setGrossPlaceId(omsTransOrderMapper.getOperationPointId(""+grossGate,null)); tmsWeightResults.get(0).setNetWeight(netWeight); tmsWeightResults.get(0).setNetWeightTime(grossTime); tmsWeightResults.get(0).setAlternateFields12("否"); tmsWeightResults.get(0).setMaterialId(omsOrderChild.getMaterialId()); //毛重减皮重 //判断净重 omsOrderChild.setAlternateFields23(null); if("龙门吊库→新专线".equals(amsTransRequirement.getAlternateFields13()) && tmsWeightResults.get(0).getNetWeight().compareTo(new BigDecimal(40)) == -1) { omsOrderChild.setAlternateFields23("1"); } omsTransOrder.setIssueTime(tmsWeightResults.get(0).getNetWeightTime()); omsOrderChild.setNetWeight(tmsWeightResults.get(0).getNetWeight()); //复磅信息 if("复磅".equals(isReWeight)){ if(netWeight2.compareTo(BigDecimal.ZERO) == 1) { omsOrderChild.setNetWeight(netWeight2); } try{ //进厂实绩 enfactoryResultList.get(1).setEntryGateTime(enFacotryTime2); enfactoryResultList.get(1).setEntryMode(entryMode2); enfactoryResultList.get(1).setGatepostId(omsTransOrderMapper.getOperationPointId(""+entryGate2,null)); enfactoryResultList.get(1).setResultImage(entryImage2); //出厂实绩 outfactoryResultList.get(1).setOutGateTime(outFactoryTime2); outfactoryResultList.get(1).setOutMode(outMode2); outfactoryResultList.get(1).setGatepostId(omsTransOrderMapper.getOperationPointId(""+outGate2,null)); outfactoryResultList.get(1).setResultImage(outImage2); //计量实绩 tmsWeightResults.get(1).setTareWeight(tareWeight2); tmsWeightResults.get(1).setTareWeightTime(tareTime2); tmsWeightResults.get(1).setAlternateFields6(tareImage2); tmsWeightResults.get(1).setTarePlaceId(omsTransOrderMapper.getOperationPointId(""+tareGate2,null)); tmsWeightResults.get(1).setGrossWeight(grossWeight2); tmsWeightResults.get(1).setGrossWeightTime(grossTime2); tmsWeightResults.get(1).setResultImage(grossImage2); tmsWeightResults.get(1).setGrossPlaceId(omsTransOrderMapper.getOperationPointId(""+grossGate2,null)); tmsWeightResults.get(1).setMaterialId(omsOrderChild.getMaterialId()); tmsWeightResults.get(1).setNetWeight(netWeight2); tmsWeightResults.get(1).setNetWeightTime(tareTime2); tmsWeightResults.get(1).setPoundNo(djbh); tmsWeightResults.get(1).setAlternateFields12("是"); omsTransOrder.setIssueTime(tmsWeightResults.get(0).getNetWeightTime()); omsOrderChild.setNetWeight(tmsWeightResults.get(1).getNetWeight()); }catch (NullPointerException e){ log.error("生产路线不包含复磅实绩,报空指针"); }catch (Exception e){ e.printStackTrace(); log.error("生产复磅非空指针异常:"+e.getMessage()); } } //更新 entityDispose.disposeOmsTransOrder(omsTransOrder); entityDispose.disposeOrderChild(omsOrderChild); try { matchLoaderCapacityOrder(omsTransOrder,omsOrderChild); } catch (Exception e) { e.printStackTrace(); } try { matchPriceSyncDz(omsTransOrder,omsOrderChild); } catch (Exception e) { e.printStackTrace(); } tmsEnfactoryResultMapper.batchUpdate(enfactoryResultList); tmsOutfactoryResultMapper.batchUpdate(outfactoryResultList); tmsWeightResultMapper.batchUpdate(tmsWeightResults); //同步实绩 omsOrderChildMapper.updateByPrimaryKey(omsOrderChild); omsTransOrderMapper.updateByPrimaryKeySelective(omsTransOrder); if(capacityId != null && driverId == null && omsTransOrder.getCapacityInnerNumber() != null) { //如果有小号,车号不存在则提醒调度 try { HashMap sendMap = new HashMap<>(); sendMap.put("userId", "admin"); sendMap.put("userName","admin"); sendMap.put("title", "调拨过磅异常提醒"); sendMap.put("sendMessage", omsTransOrder.getCapacityInnerNumber() + ":未匹配到司机姓名,请前往运输订单-大宗检查名字是否符合要求"); sendMap.put("sendType", "01");//01:通知消息 String websocketId = "物流公司汽运与机械处"; RESTfulResult resTfulResult = null; resTfulResult = websocketFeign.sendWebsocket(websocketId, sendMap); if (resTfulResult != null && !resTfulResult.isSucceed()) { log.error("物流调度消息推送失败:" + resTfulResult.getMessage()); } } catch (Exception e) { log.error("物流调度消息推送异常:{}", e); e.printStackTrace(); } } return "同步生产实绩成功!"; } } public synchronized void matchPriceSyncDz(OmsTransOrder omsTransOrder,OmsOrderChild omsOrderChild) { // 同步运输订单,查询区间 String materialName = omsOrderChild.getMaterialName(); if(materialName == null) { return; } if(omsTransOrder.getCapacityNumber() == null) { return; } //判断车号是不是电动 String reg = "([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼]{1}[A-HJ-Z]{1}([0-9]{5}[DF]{1}))"; Pattern pattern = Pattern.compile(reg); Matcher matcher = pattern.matcher(omsTransOrder.getCapacityNumber()); String capacityNo = null; String capacityTypeName = "普通"; if(matcher.find()) { capacityNo = matcher.group(); capacityTypeName = "电动车"; } Map map = omsOrderChildMapper.selectBusinessRange(omsOrderChild.getPlanChildId()); String businessRange = map.get("businessRange") == null ? "" : map.get("businessRange").toString(); String serialNumber = map.get("serialNumber") == null ? "" : map.get("serialNumber").toString(); //根据区间及名称查询是否有单价 Map objectObjectHashMap = new HashMap<>(); objectObjectHashMap.put("businessRange",businessRange); objectObjectHashMap.put("serialNumber",serialNumber); objectObjectHashMap.put("materialName",materialName); objectObjectHashMap.put("capacityTypeName",capacityTypeName); objectObjectHashMap.put("netWeightTime",omsTransOrder.getIssueTime()); objectObjectHashMap.put("deleted",0); BigDecimal tonnagePriceValue = omsOrderChildMapper.getNextPrice(objectObjectHashMap); if(tonnagePriceValue != null) { Map resMap = new HashMap<>(); resMap.put("djbh",omsTransOrder.getAlternateFields7()); resMap.put("dj",tonnagePriceValue); resMap.put("businessScene",omsTransOrder.getBusinessScene()); dzFeign.updateYf(resMap); } return ; } public synchronized void matchLoaderCapacityOrder(OmsTransOrder omsTransOrder,OmsOrderChild omsOrderChild) { //匹配装载机信息 //获取大宗单据的物料信息与区间 String materialName = omsOrderChild.getMaterialName(); if(materialName == null) { return; } if("公司".equals(omsTransOrder.getCapacityNumber())) { return; } if(omsOrderChild.getNetWeight() == null || omsOrderChild.getNetWeight().compareTo(BigDecimal.ZERO) == 0) { return; } Map map = omsOrderChildMapper.selectBusinessRange(omsOrderChild.getPlanChildId()); String businessRange = map.get("businessRange") == null ? "" : map.get("businessRange").toString(); String serialNumber = map.get("serialNumber") == null ? "" : map.get("serialNumber").toString(); //以下是调拨运单,根据物料名称以及运输订单数据, // 根据物料名称以及区间去查询,匹配到了生产物流的一批业务区间、业务名称 List dilContrastingRelationList = new ArrayList<>(); if ("采购".equals(omsTransOrder.getBusinessScene()) || "销售".equals(omsTransOrder.getBusinessScene())) { dilContrastingRelationList = dilContrastingRelationMapper.selectInfoMap(serialNumber); }else{ dilContrastingRelationList = dilContrastingRelationMapper.selectDbMap(businessRange,materialName); } if(dilContrastingRelationList == null || dilContrastingRelationList.size() == 0) { omsTransOrder.setAlternateFields44("未匹配到生产物流大车单据"); omsTransOrder.setAlternateFields45("未匹配到生产物流装机数据"); return; } // 该业务匹配到了一批数据;分为两块,一个是匹配大车,一个是匹配装载机 //// 首先匹配大车数据 Map objectObjectHashMap = new HashMap<>(); objectObjectHashMap.put("dilContrastingRelationList",dilContrastingRelationList); objectObjectHashMap.put("netWeightTime",omsTransOrder.getIssueTime()); objectObjectHashMap.put("capacityNumber",omsTransOrder.getCapacityNumber()); objectObjectHashMap.put("driverName",omsTransOrder.getDriverName()); //// 大车应只有一个 //List orderDcChilds = omsTransOrderMapper.selectDacheCapacityIds(objectObjectHashMap); //if(orderDcChilds == null || orderDcChilds.size() == 0) { // omsTransOrder.setAlternateFields44("未匹配到生产物流大车单据"); // return; //} //BigDecimal netWeight = DataChange.dataToBigDecimal(omsOrderChild.getNetWeight()); //BigDecimal actualWeight = DataChange.dataToBigDecimal(omsOrderChild.getActualWeight()); //BigDecimal materialNumber = DataChange.dataToBigDecimal(omsOrderChild.getMaterialNumber()); //for(BigDecimal orderChildId : orderDcChilds) { // OmsOrderChild omsOrderChild1 = omsOrderChildMapper.selectByPrimaryKey(orderChildId); // if(omsOrderChild1.getAlternateFields20() != null) { // String[] stringList = omsOrderChild1.getAlternateFields20().split(","); // if(Arrays.asList(stringList).contains(omsOrderChild.getTransOrderId().toString())) { // continue; // } // } // omsOrderChild1.setNetWeight(DataChange.dataToBigDecimal(omsOrderChild1.getNetWeight()).add(netWeight)); // omsOrderChild1.setActualWeight(DataChange.dataToBigDecimal(omsOrderChild1.getActualWeight()).add(actualWeight)); // omsOrderChild1.setMaterialNumber(DataChange.dataToBigDecimal(omsOrderChild1.getMaterialNumber().add(materialNumber))); // omsOrderChild1.setAlternateFields20(omsOrderChild1.getAlternateFields20() == null ? omsOrderChild.getTransOrderId().toString() : omsOrderChild1.getAlternateFields20() + "," + omsOrderChild.getTransOrderId()); // omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild1); //} //omsTransOrder.setAlternateFields44(orderDcChilds.toString()); // 如果该区间该时间匹配到装机数据了 List orderZjChilds = omsTransOrderMapper.selectLoaderCapacityIds(objectObjectHashMap); if(orderZjChilds == null || orderZjChilds.size() == 0) { omsTransOrder.setAlternateFields45("未匹配到生产物流装机数据"); return; } // 平分 BigDecimal avgWeight = omsOrderChild.getNetWeight().divide(new BigDecimal(orderZjChilds.size()),2,4); for(BigDecimal orderChildId : orderZjChilds) { OmsOrderChild omsOrderChild1 = omsOrderChildMapper.selectByPrimaryKey(orderChildId); if(omsOrderChild1.getAlternateFields20() != null) { String[] stringList = omsOrderChild1.getAlternateFields20().split(","); if(Arrays.asList(stringList).contains(omsOrderChild.getTransOrderId().toString())) { continue; } } omsOrderChild1.setNetWeight(DataChange.dataToBigDecimal(omsOrderChild1.getNetWeight()).add(avgWeight)); omsOrderChild1.setActualWeight(omsOrderChild1.getNetWeight()); omsOrderChild1.setAlternateFields20(omsOrderChild1.getAlternateFields20() == null ? omsOrderChild.getTransOrderId().toString() : omsOrderChild1.getAlternateFields20() + "," + omsOrderChild.getTransOrderId()); omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild1); } omsTransOrder.setAlternateFields45(orderZjChilds.toString()); return; //if("无烟煤".equals(materialName)) { // //匹配无烟煤数据 // Map objectObjectHashMap = new HashMap<>(); // objectObjectHashMap.put("businessName","下站无烟煤"); // objectObjectHashMap.put("netWeightTime",omsTransOrder.getIssueTime()); // List orderChildIds = omsTransOrderMapper.selectLoaderCapacityOrderIds(objectObjectHashMap); // if(orderChildIds == null || orderChildIds.size() == 0) { // return; // } // //平分 // BigDecimal avgWeight = omsOrderChild.getNetWeight().divide(new BigDecimal(orderChildIds.size()),2,4); // for(BigDecimal orderChildId : orderChildIds) { // OmsOrderChild omsOrderChild1 = omsOrderChildMapper.selectByPrimaryKey(orderChildId); // if(omsOrderChild1.getAlternateFields20() != null) { // String[] stringList = omsOrderChild1.getAlternateFields20().split(","); // if(Arrays.asList(stringList).contains(omsOrderChild.getTransOrderId().toString())) { // continue; // } // } // omsOrderChild1.setNetWeight(DataChange.dataToBigDecimal(omsOrderChild1.getNetWeight()).add(avgWeight)); // omsOrderChild1.setActualWeight(omsOrderChild1.getNetWeight()); // omsOrderChild1.setAlternateFields20(omsOrderChild1.getAlternateFields20() == null ? omsOrderChild.getTransOrderId().toString() : omsOrderChild1.getAlternateFields20() + "," + omsOrderChild.getTransOrderId()); // omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild1); // } // return; //} //if(materialName.contains("球团") && "旧烧结→4#高炉".equals(businessRange)) { // //匹配球团数据 // Map objectObjectHashMap = new HashMap<>(); // //objectObjectHashMap.put("businessRange","旧供料"); // objectObjectHashMap.put("businessName","装 矿石 球团 等物料"); // objectObjectHashMap.put("netWeightTime",omsTransOrder.getIssueTime()); // List orderChildIds = omsTransOrderMapper.selectLoaderCapacityOrderIds(objectObjectHashMap); // objectObjectHashMap.put("businessName","装球团"); // List orderChildIds1 = omsTransOrderMapper.selectLoaderCapacityOrderIds(objectObjectHashMap); // orderChildIds.addAll(orderChildIds1); // if(orderChildIds == null || orderChildIds.size() == 0) { // return; // } // //平分 // BigDecimal avgWeight = omsOrderChild.getNetWeight().divide(new BigDecimal(orderChildIds.size()),2,4); // for(BigDecimal orderChildId : orderChildIds) { // OmsOrderChild omsOrderChild1 = omsOrderChildMapper.selectByPrimaryKey(orderChildId); // if(omsOrderChild1.getAlternateFields20() != null) { // String[] stringList = omsOrderChild1.getAlternateFields20().split(","); // if(Arrays.asList(stringList).contains(omsOrderChild.getTransOrderId().toString())) { // continue; // } // } // omsOrderChild1.setNetWeight(DataChange.dataToBigDecimal(omsOrderChild1.getNetWeight()).add(avgWeight)); // omsOrderChild1.setActualWeight(omsOrderChild1.getNetWeight()); // omsOrderChild1.setAlternateFields20(omsOrderChild1.getAlternateFields20() == null ? omsOrderChild.getTransOrderId().toString() : omsOrderChild1.getAlternateFields20() + "," + omsOrderChild.getTransOrderId()); // omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild1); // } // return; //} //// 获取仓储库中物料 //List materialNameList = omsOrderChildMapper.selectMaterialName(); //if(materialNameList.contains(materialName)){ // //匹配装矿石数据 // Map objectObjectHashMap = new HashMap<>(); // objectObjectHashMap.put("businessRange","物流仓储库"); // objectObjectHashMap.put("businessName","装矿石"); // objectObjectHashMap.put("netWeightTime",omsTransOrder.getIssueTime()); // List orderChildIds = omsTransOrderMapper.selectLoaderCapacityOrderIds(objectObjectHashMap); // if(orderChildIds == null || orderChildIds.size() == 0) { // return; // } // //平分 // BigDecimal avgWeight = omsOrderChild.getNetWeight().divide(new BigDecimal(orderChildIds.size()),2,4); // for(BigDecimal orderChildId : orderChildIds) { // OmsOrderChild omsOrderChild1 = omsOrderChildMapper.selectByPrimaryKey(orderChildId); // if(omsOrderChild1.getAlternateFields20() != null) { // String[] stringList = omsOrderChild1.getAlternateFields20().split(","); // if(Arrays.asList(stringList).contains(omsOrderChild.getTransOrderId().toString())) { // continue; // } // } // omsOrderChild1.setNetWeight(DataChange.dataToBigDecimal(omsOrderChild1.getNetWeight()).add(avgWeight)); // omsOrderChild1.setActualWeight(omsOrderChild1.getNetWeight()); // omsOrderChild1.setAlternateFields20(omsOrderChild1.getAlternateFields20() == null ? omsOrderChild.getTransOrderId().toString() : omsOrderChild1.getAlternateFields20() + "," + omsOrderChild.getTransOrderId()); // omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild1); // } // return; //} //// 获取装垃圾数据 //if(("垃圾".equals(materialName) || "矸石".equals(materialName)) && "三厂→安博".equals(businessRange)) { // //匹配区间,三厂的 // //匹配装矿石数据 // Map objectObjectHashMap = new HashMap<>(); // objectObjectHashMap.put("businessRange","配运车间-安博"); // objectObjectHashMap.put("businessName","倒垃圾"); // //objectObjectHashMap.put("businessName","串、厂内转运"); // objectObjectHashMap.put("netWeightTime",omsTransOrder.getIssueTime()); // List orderChildIds = omsTransOrderMapper.selectLoaderCapacityOrderIds(objectObjectHashMap); // if(orderChildIds == null || orderChildIds.size() == 0) { // return; // } // //平分 // BigDecimal avgWeight = omsOrderChild.getNetWeight().divide(new BigDecimal(orderChildIds.size()),2,4); // for(BigDecimal orderChildId : orderChildIds) { // OmsOrderChild omsOrderChild1 = omsOrderChildMapper.selectByPrimaryKey(orderChildId); // if(omsOrderChild1.getAlternateFields20() != null) { // String[] stringList = omsOrderChild1.getAlternateFields20().split(","); // if(Arrays.asList(stringList).contains(omsOrderChild.getTransOrderId().toString())) { // continue; // } // } // omsOrderChild1.setNetWeight(DataChange.dataToBigDecimal(omsOrderChild1.getNetWeight()).add(avgWeight)); // omsOrderChild1.setActualWeight(omsOrderChild1.getNetWeight()); // omsOrderChild1.setAlternateFields20(omsOrderChild1.getAlternateFields20() == null ? omsOrderChild.getTransOrderId().toString() : omsOrderChild1.getAlternateFields20() + "," + omsOrderChild.getTransOrderId()); // omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild1); // } // return; //} //// //// 获取装垃圾数据 //if(("垃圾".equals(materialName) || "矸石".equals(materialName)) && "新泰→安博".equals(businessRange)) { // //匹配区间,三厂的 // //匹配装矿石数据 // Map objectObjectHashMap = new HashMap<>(); // objectObjectHashMap.put("businessName","装垃圾"); // objectObjectHashMap.put("netWeightTime",omsTransOrder.getIssueTime()); // List orderChildIds = omsTransOrderMapper.selectLoaderCapacityOrderIds(objectObjectHashMap); // objectObjectHashMap.put("businessName","倒垃圾"); // List orderChildIds1 = omsTransOrderMapper.selectLoaderCapacityOrderIds(objectObjectHashMap); // orderChildIds.addAll(orderChildIds1); // if(orderChildIds == null || orderChildIds.size() == 0) { // return; // } // //平分 // BigDecimal avgWeight = omsOrderChild.getNetWeight().divide(new BigDecimal(orderChildIds.size()),2,4); // for(BigDecimal orderChildId : orderChildIds) { // OmsOrderChild omsOrderChild1 = omsOrderChildMapper.selectByPrimaryKey(orderChildId); // if(omsOrderChild1.getAlternateFields20() != null) { // String[] stringList = omsOrderChild1.getAlternateFields20().split(","); // if(Arrays.asList(stringList).contains(omsOrderChild.getTransOrderId().toString())) { // continue; // } // } // omsOrderChild1.setNetWeight(DataChange.dataToBigDecimal(omsOrderChild1.getNetWeight()).add(avgWeight)); // omsOrderChild1.setActualWeight(omsOrderChild1.getNetWeight()); // omsOrderChild1.setAlternateFields20(omsOrderChild1.getAlternateFields20() == null ? omsOrderChild.getTransOrderId().toString() : omsOrderChild1.getAlternateFields20() + "," + omsOrderChild.getTransOrderId()); // omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild1); // } // return; //} //if("烧结矿".equals(materialName)) { // //匹配无烟煤数据 // Map objectObjectHashMap = new HashMap<>(); // //objectObjectHashMap.put("businessRange","冶炼厂旧供料"); // objectObjectHashMap.put("businessName","装烧结"); // objectObjectHashMap.put("netWeightTime",omsTransOrder.getIssueTime()); // List orderChildIds = omsTransOrderMapper.selectLoaderCapacityOrderIds(objectObjectHashMap); // if(orderChildIds == null || orderChildIds.size() == 0) { // return; // } // //平分 // BigDecimal avgWeight = omsOrderChild.getNetWeight().divide(new BigDecimal(orderChildIds.size()),2,4); // for(BigDecimal orderChildId : orderChildIds) { // OmsOrderChild omsOrderChild1 = omsOrderChildMapper.selectByPrimaryKey(orderChildId); // if(omsOrderChild1.getAlternateFields20() != null) { // String[] stringList = omsOrderChild1.getAlternateFields20().split(","); // if(Arrays.asList(stringList).contains(omsOrderChild.getTransOrderId().toString())) { // continue; // } // } // omsOrderChild1.setNetWeight(DataChange.dataToBigDecimal(omsOrderChild1.getNetWeight()).add(avgWeight)); // omsOrderChild1.setActualWeight(omsOrderChild1.getNetWeight()); // omsOrderChild1.setAlternateFields20(omsOrderChild1.getAlternateFields20() == null ? omsOrderChild.getTransOrderId().toString() : omsOrderChild1.getAlternateFields20() + "," + omsOrderChild.getTransOrderId()); // omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild1); // } // return; //} //if("锰矿".equals(materialName)) { // //匹配无烟煤数据 // Map objectObjectHashMap = new HashMap<>(); // objectObjectHashMap.put("businessRange","冶炼厂旧供料"); // objectObjectHashMap.put("businessName","装锰矿"); // objectObjectHashMap.put("netWeightTime",omsTransOrder.getIssueTime()); // List orderChildIds = omsTransOrderMapper.selectLoaderCapacityOrderIds(objectObjectHashMap); // if(orderChildIds == null || orderChildIds.size() == 0) { // return; // } // //平分 // BigDecimal avgWeight = omsOrderChild.getNetWeight().divide(new BigDecimal(orderChildIds.size()),2,4); // for(BigDecimal orderChildId : orderChildIds) { // OmsOrderChild omsOrderChild1 = omsOrderChildMapper.selectByPrimaryKey(orderChildId); // if(omsOrderChild1.getAlternateFields20() != null) { // String[] stringList = omsOrderChild1.getAlternateFields20().split(","); // if(Arrays.asList(stringList).contains(omsOrderChild.getTransOrderId().toString())) { // continue; // } // } // omsOrderChild1.setNetWeight(DataChange.dataToBigDecimal(omsOrderChild1.getNetWeight()).add(avgWeight)); // omsOrderChild1.setActualWeight(omsOrderChild1.getNetWeight()); // omsOrderChild1.setAlternateFields20(omsOrderChild1.getAlternateFields20() == null ? omsOrderChild.getTransOrderId().toString() : omsOrderChild1.getAlternateFields20() + "," + omsOrderChild.getTransOrderId()); // omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild1); // } // return; //} //if("石子".equals(materialName)) { // //匹配无烟煤数据 // Map objectObjectHashMap = new HashMap<>(); // //objectObjectHashMap.put("businessRange","冶炼厂旧供料"); // objectObjectHashMap.put("businessName","装石子"); // objectObjectHashMap.put("netWeightTime",omsTransOrder.getIssueTime()); // List orderChildIds = omsTransOrderMapper.selectLoaderCapacityOrderIds(objectObjectHashMap); // if(orderChildIds == null || orderChildIds.size() == 0) { // return; // } // //平分 // BigDecimal avgWeight = omsOrderChild.getNetWeight().divide(new BigDecimal(orderChildIds.size()),2,4); // for(BigDecimal orderChildId : orderChildIds) { // OmsOrderChild omsOrderChild1 = omsOrderChildMapper.selectByPrimaryKey(orderChildId); // if(omsOrderChild1.getAlternateFields20() != null) { // String[] stringList = omsOrderChild1.getAlternateFields20().split(","); // if(Arrays.asList(stringList).contains(omsOrderChild.getTransOrderId().toString())) { // continue; // } // } // omsOrderChild1.setNetWeight(DataChange.dataToBigDecimal(omsOrderChild1.getNetWeight()).add(avgWeight)); // omsOrderChild1.setActualWeight(omsOrderChild1.getNetWeight()); // omsOrderChild1.setAlternateFields20(omsOrderChild1.getAlternateFields20() == null ? omsOrderChild.getTransOrderId().toString() : omsOrderChild1.getAlternateFields20() + "," + omsOrderChild.getTransOrderId()); // omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild1); // } // return; //} //if(materialName.contains("白云石粉") && "四厂中间库(炼铁)→西料场".equals(businessRange)){ // //匹配无烟煤数据 // Map objectObjectHashMap = new HashMap<>(); // objectObjectHashMap.put("businessRange","洗煤厂中间库-西料场"); // objectObjectHashMap.put("businessName","装白云石"); // objectObjectHashMap.put("netWeightTime",omsTransOrder.getIssueTime()); // List orderChildIds = omsTransOrderMapper.selectLoaderCapacityOrderIds(objectObjectHashMap); // if(orderChildIds == null || orderChildIds.size() == 0) { // return; // } // //平分 // BigDecimal avgWeight = omsOrderChild.getNetWeight().divide(new BigDecimal(orderChildIds.size()),2,4); // for(BigDecimal orderChildId : orderChildIds) { // OmsOrderChild omsOrderChild1 = omsOrderChildMapper.selectByPrimaryKey(orderChildId); // if(omsOrderChild1.getAlternateFields20() != null) { // String[] stringList = omsOrderChild1.getAlternateFields20().split(","); // if(Arrays.asList(stringList).contains(omsOrderChild.getTransOrderId().toString())) { // continue; // } // } // omsOrderChild1.setNetWeight(DataChange.dataToBigDecimal(omsOrderChild1.getNetWeight()).add(avgWeight)); // omsOrderChild1.setActualWeight(omsOrderChild1.getNetWeight()); // omsOrderChild1.setAlternateFields20(omsOrderChild1.getAlternateFields20() == null ? omsOrderChild.getTransOrderId().toString() : omsOrderChild1.getAlternateFields20() + "," + omsOrderChild.getTransOrderId()); // omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild1); // } // return; //} } //private void matchPurchaseSaleCapacityOrder(OmsTransOrder omsTransOrder, OmsOrderChild omsOrderChild,String serialNumber) { // // 如果是采购或者销售 // // 根据合同号去找寻生产物流对应的业务区间、业务名称、业务类型数据 // Map objectObjectHashMap = new HashMap<>(); // objectObjectHashMap.put("serialNumber",serialNumber); // List dilContrastingRelationList = dilContrastingRelationMapper.selectInfoMap(objectObjectHashMap); // // if(dilContrastingRelationList != null && dilContrastingRelationList.size() > 0 && dilContrastingRelationList.get(0) != null) { // DilContrastingRelation dilContrastingRelation = dilContrastingRelationList.get(0); // List // Map objectObjectHashMap1 = new HashMap<>(); // objectObjectHashMap1.put("businessRange",dilContrastingRelation.getScBusinessRange()); // objectObjectHashMap1.put("businessName",dilContrastingRelation.getScBusinessName()); // objectObjectHashMap1.put("scBusinessType",dilContrastingRelation.getScBusinessType()); // objectObjectHashMap1.put("capacityNumber",omsTransOrder.getCapacityNumber()); // objectObjectHashMap1.put("driverName",omsTransOrder.getDriverName()); // objectObjectHashMap1.put("netWeightTime",omsOrderChild.getNetWeightTime()); // //根据车号、司机、类型、业务区间、业务名称去匹配车号 // BigDecimal scOmsOrderChildId = omsOrderChildMapper.getDzOmsOrderChildId(objectObjectHashMap1); // if(scOmsOrderChildId == null) { // omsTransOrder.setAlternateFields43("未找到对应的生产物流运单"); // omsTransOrderMapper.updateByPrimaryKeySelective(omsTransOrder); // return; // } // OmsOrderChild scOmsOrderChild = omsOrderChildMapper.selectByPrimaryKey(scOmsOrderChildId); // BigDecimal actualWeight = omsOrderChild.getActualWeight(); // BigDecimal materialNumber = omsOrderChild.getMaterialNumber(); // BigDecimal netWeight = omsOrderChild.getNetWeight(); // if(scOmsOrderChild.getAlternateFields20() != null) { // String[] stringList = scOmsOrderChild.getAlternateFields20().split(","); // if(Arrays.asList(stringList).contains(omsOrderChild.getTransOrderId().toString())) { // //如果包含,则重新算 // return; // } // } // scOmsOrderChild.setNetWeight(DataChange.dataToBigDecimal(scOmsOrderChild.getNetWeight()).add(netWeight)); // scOmsOrderChild.setActualWeight(DataChange.dataToBigDecimal(scOmsOrderChild.getActualWeight()).add(actualWeight)); // scOmsOrderChild.setMaterialNumber(DataChange.dataToBigDecimal(scOmsOrderChild.getMaterialNumber()).add(materialNumber)); // scOmsOrderChild.setAlternateFields20(scOmsOrderChild.getAlternateFields20() == null ? omsOrderChild.getTransOrderId().toString() : scOmsOrderChild.getAlternateFields20() + "," + omsOrderChild.getTransOrderId()); // omsOrderChildMapper.updateByPrimaryKeySelective(scOmsOrderChild); // } // //} @Transactional(rollbackFor = Exception.class) public OmsTransOrder syncInwardTransOrder(String capacityNo, AmsTransRequirement amsTransRequirement, AmsRequirementChild amsRequirementChild, OmsTransOrder omsTransOrder, List tmsWeightResults) { //查询视拓需求 Map searchMap = new HashMap<>(); searchMap.put("dzMaterialId",amsRequirementChild.getMaterialId()); searchMap.put("dzTransRange",amsTransRequirement.getAlternateFields13()); searchMap.put("deleted",0); List amsBindRequirementList = amsBindRequirementMapper.selectByParameters(searchMap); if(amsBindRequirementList == null || amsBindRequirementList.size() == 0) { //如果为空,则新增记录 AmsBindRequirement amsBindRequirement = new AmsBindRequirement(); amsBindRequirement.setPrimaryId(amsBindRequirementMapper.nextId()); amsBindRequirement.setDzMaterialId(amsRequirementChild.getMaterialId()); amsBindRequirement.setDzTransRange(amsTransRequirement.getAlternateFields13()); amsBindRequirementMapper.insertSelective(amsBindRequirement); omsTransOrder.setAlternateFields27("未找到匹配的物流需求"); return omsTransOrder; } if(amsBindRequirementList.get(0).getStMaterialType() == null && amsBindRequirementList.get(0).getStTransRange() == null) { omsTransOrder.setAlternateFields27("未找到匹配的物流需求"); return omsTransOrder; } TmsWeightResult tmsWeightResultOld = tmsWeightResults.get(tmsWeightResults.size() - 1); Map stSearchMap = new HashMap<>(); stSearchMap.put("capacityNo",capacityNo); stSearchMap.put("stTransRange",amsBindRequirementList.get(0).getStTransRange()); stSearchMap.put("capacityTypeId",amsBindRequirementList.get(0).getStCapacityTypeId()); stSearchMap.put("materialId",amsBindRequirementList.get(0).getStMaterialId()); stSearchMap.put("materialType",amsBindRequirementList.get(0).getStMaterialType()); stSearchMap.put("netWeightTime",tmsWeightResultOld.getNetWeightTime()); OmsOrderChild omsOrderChildInward = omsOrderChildMapper.selectInwardTransOrderId(stSearchMap); if(omsOrderChildInward == null) { omsTransOrder.setAlternateFields27("未找到符合条件的运单"); return omsTransOrder; } OmsTransOrder omsTransOrderInward = omsTransOrderMapper.selectByPrimaryKey(omsOrderChildInward.getTransOrderId()); //查询该运单下的所有计量实绩 Map weightMap = new HashMap<>(); weightMap.put("transOrderId",omsTransOrderInward.getTransOrderId()); weightMap.put("deleted",0); List tmsWeightResultList = tmsWeightResultMapper.selectByParametersSt(weightMap); int lineSeq = tmsWeightResultList.size() + 1; TmsWeightResult tmsWeightResult = new TmsWeightResult(); tmsWeightResult.setResultId(tmsWeightResultMapper.nextId()); tmsWeightResult.setTransOrderId(omsTransOrderInward.getTransOrderId()); tmsWeightResult.setTransOrderChildId(omsOrderChildInward.getOrderChildId()); tmsWeightResult.setTareWeight(tmsWeightResultOld.getTareWeight()); tmsWeightResult.setTareWeightTime(tmsWeightResultOld.getTareWeightTime()); tmsWeightResult.setAlternateFields6(tmsWeightResultOld.getAlternateFields6()); tmsWeightResult.setTarePlaceId(tmsWeightResultOld.getTarePlaceId()); tmsWeightResult.setGrossWeight(tmsWeightResultOld.getGrossWeight()); tmsWeightResult.setGrossWeightTime(tmsWeightResultOld.getGrossWeightTime()); tmsWeightResult.setResultImage(tmsWeightResultOld.getResultImage()); tmsWeightResult.setGrossPlaceId(tmsWeightResultOld.getGrossPlaceId()); tmsWeightResult.setNetWeight(tmsWeightResultOld.getNetWeight()); tmsWeightResult.setNetWeightTime(tmsWeightResultOld.getNetWeightTime()); tmsWeightResult.setAlternateFields12("否"); tmsWeightResult.setMaterialId(tmsWeightResultOld.getMaterialId()); tmsWeightResult.setPoundNo(tmsWeightResultOld.getPoundNo()); if (tmsWeightResultOld.getTareWeightTime().getTime() > tmsWeightResultOld.getGrossWeightTime().getTime()) { //皮重时间大于毛重时间,则是先毛后皮 tmsWeightResult.setGrossSegmentSqe(new BigDecimal(lineSeq +1)); tmsWeightResult.setTareSegmentSqe(new BigDecimal(lineSeq + 2)); }else{ //先皮后毛 tmsWeightResult.setGrossSegmentSqe(new BigDecimal(lineSeq + 2)); tmsWeightResult.setTareSegmentSqe(new BigDecimal(lineSeq + 1)); } //更新路段顺序 omsTransOrderInward.setCurrentLineSeq(new BigDecimal(lineSeq + 2)); omsOrderChildInward.setNetWeight(tmsWeightResult.getNetWeight().add(omsOrderChildInward.getNetWeight() == null ? BigDecimal.ZERO : omsOrderChildInward.getNetWeight())); //上面已经更新好了运单表、计量表、运单子表、老运单表 tmsWeightResult.setAlternateFields9(omsTransOrder.getTransOrderId().toString()); tmsWeightResult.setAlternateFields10(tmsWeightResultOld.getResultId().toString()); omsOrderChildMapper.updateByPrimaryKey(omsOrderChildInward); omsTransOrderMapper.updateByPrimaryKey(omsTransOrderInward); tmsWeightResultMapper.insertSelective(tmsWeightResult); omsTransOrder.setAlternateFields25(omsTransOrderInward.getTransOrderId().toString()); omsTransOrder.setAlternateFields26(tmsWeightResult.getResultId().toString()); return omsTransOrder; } /** * 一车多趟,重新派车 * @param transOrderId */ @Transactional(rollbackFor = Exception.class) public void reDispatchOrderBySc(BigDecimal transOrderId) throws Exception{ //查询运单并校验 OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(transOrderId); Map searchMap_child = new HashMap<>(); searchMap_child.put("transOrderId",omsTransOrder.getTransOrderId()); searchMap_child.put("deleted",0); OmsOrderChild omsOrderChild = omsOrderChildMapper.selectByParameters(searchMap_child).get(0); //校验分录余额 Map planChild = new HashMap<>(); planChild.put("planChildId",omsOrderChild.getPlanChildId()); Map planDetails = omsOrderChildMapper.findPlanChild(planChild); if (planDetails == null) { throw new Exception("运输计划异常:可能被删除或停用!无法派单,请刷新!"); } BigDecimal businessType = DataChange.getBigDecimal(planDetails.get("businessType")); String businessScene = DataChange.getString(planDetails.get("businessScene")); int controlMode = Integer.parseInt(planDetails.get("controlMode").toString()); switch (controlMode) { case 0: //不控制 break; case 1: //1:数量控制 BigDecimal numberLeft = DataChange.dataToBigDecimal(planDetails.get("numberLeft")); BigDecimal materialNumber = DataChange.dataToBigDecimal(planChild.get("materialNumber")); if (materialNumber.compareTo(numberLeft) > 0) { throw new Exception("数量超出需求限制!"); } break; case 2: //2:金额控制 break; case 3: //3:车数控制 BigDecimal truckLeft = DataChange.dataToBigDecimal(planDetails.get("truckLeft")); BigDecimal truckNumber = BigDecimal.ONE; if (truckNumber.compareTo(truckLeft) > 0) { throw new Exception("车辆数量超出需求限制!"); } break; default: throw new Exception("未知的控制类型!"); } //更换运单信息 omsTransOrder.setTransOrderId(omsTransOrderMapper.nextId()); omsOrderChild.setOrderChildId(omsOrderChildMapper.nextId()); omsOrderChild.setTransOrderId(omsTransOrder.getTransOrderId()); omsTransOrder.setSerialNumber(DataChange.generateEightDigitsNumber("YSDD", omsTransOrder.getTransOrderId().intValue())); omsTransOrder.setConfirmReason(null); omsTransOrder.setDriverConfirmTime(null); omsTransOrder.setOrderCommunicationDuration(null); omsTransOrder.setDeleted(new BigDecimal(4)); omsTransOrder.setCurrentLineSeq(BigDecimal.ZERO); omsTransOrder.setIssueTime(new Date()); omsTransOrder.setInsertTime(new Date()); omsTransOrder.setOrderStatus("等待执行"); omsOrderChild.setInsertTime(new Date()); creatTransResult(omsTransOrder.getLineId(), omsTransOrder.getTransOrderId(), omsOrderChild.getPlanChildId(),omsTransOrder.getInsertUsername()); //新增并推送大宗 omsTransOrderMapper.insertSelective(omsTransOrder); omsOrderChildMapper.insertSelective(omsOrderChild); } public List> getDriverDayJob(Map map) { List> list = new ArrayList<>(); //获取计重吨数 if(map.get("type").toString().contains("计重")){ list.addAll(omsTransOrderMapper.selectDriverDayJobByWeight(map)); } //获取计次吨数重量 if(map.get("type").toString().contains("计次")){ list.addAll(omsTransOrderMapper.selectDriverDayJobByTime(map)); } return list; } public String outBound(Map maps) throws Exception { //获取勾选中的数据 List> list = (ArrayList)maps.get("list"); for (Map map : list) { //只有大宗销售订单的火运才能在物流中出库 if (!map.get("businessTypeName").equals("大宗销售订单")) { throw new Exception("该业务类型不适用出库!"); } //校验出库量是否超出计划量 HashMap hashMap = new HashMap<>(); hashMap.put("dlivDirno", map.get("dlivDirno")); List> mapList = amsTransRequirementMapper.selectDlivDirNo(hashMap); if (DataChange.dataToBigDecimal(mapList.get(0).get("residueweight")).compareTo(DataChange.dataToBigDecimal(0)) == -1) { throw new Exception("出库量超出计划量!"); } //修改运单状态 OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(map.get("transOrderId"))); omsTransOrder.setDeleted(new BigDecimal(2)); omsTransOrderMapper.updateByPrimaryKey(omsTransOrder); //添加出库人和时间 Map loadMap = new HashMap<>(); loadMap.put("transOrderId", map.get("transOrderId")); List tmsLoadResults = tmsLoadResultMapper.selectByParameters(loadMap); TmsLoadResult tmsLoadResult = tmsLoadResults.get(0); tmsLoadResult.setAlternateFields3(maps.get("userName").toString()); tmsLoadResult.setLoadEndTime(new Date()); tmsLoadResultMapper.updateByPrimaryKey(tmsLoadResult); } return "出库成功!"; } public String revokeOutBound(Map maps) throws Exception { //获取勾选中的数据 List> list = (ArrayList)maps.get("list"); for (Map map : list) { OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(map.get("transOrderId"))); if (omsTransOrder.getDeleted().intValue() != 2) { throw new Exception("该状态下不允许撤销出库!"); } omsTransOrder.setDeleted(new BigDecimal(4)); omsTransOrderMapper.updateByPrimaryKey(omsTransOrder); //清除出库人和时间 Map loadMap = new HashMap<>(); loadMap.put("transOrderId", map.get("transOrderId")); List tmsLoadResults = tmsLoadResultMapper.selectByParameters(loadMap); TmsLoadResult tmsLoadResult = tmsLoadResults.get(0); tmsLoadResult.setAlternateFields3(""); tmsLoadResult.setLoadEndTime(null); tmsLoadResultMapper.updateByPrimaryKey(tmsLoadResult); } return "撤销成功!"; } public String slmDlivDirList(Map map) throws Exception { List> dlivDirnoSeqList = (ArrayList)map.get("list"); List> listMap = omsTransOrderMapper.selectDlivDirnolistByWMS(dlivDirnoSeqList); String url = "/antai.maketx/v1/slmdlivdirlists/wuliuAdd"; wmsUtil.executeArray("90030000001", listMap, map.get("accessToken").toString(), url); return "OK"; } /** * 更新时间运单状态 * * @param transOrderId * @param orderStatus 运单执行状态 * @return */ public int updateTimeOrderStatus(BigDecimal transOrderId, String orderStatus, String userName) throws Exception { try { Map searchMap = new HashMap<>(); searchMap.put("transOrderId", transOrderId.toString()); searchMap.put("userName", userName); Map transOrder = omsTransOrderMapper.getTransOrder(searchMap); if (transOrder == null) { throw new Exception("没有查询到唯一运单!"); } searchMap.put("businessTypeName",transOrder.get("businessTypeName").toString()); searchMap.put("billingType",transOrder.get("billingType").toString()); searchMap.put("remark1",transOrder.get("remark1")); searchMap.put("businessScene",transOrder.get("businessScene")); searchMap.put("businessType",transOrder.get("businessType")); searchMap.put("operationsNameId",transOrder.get("operationsNameId")); searchMap.put("operationsRange",transOrder.get("operationsRange")); searchMap.put("capacityTypeId",transOrder.get("capacityTypeId")); searchMap.put("capacityId",transOrder.get("capacityId")); searchMap.put("businessCompanyId",transOrder.get("businessCompanyId")); searchMap.put("carrierId",transOrder.get("carrierId")); BigDecimal deleted = DataChange.dataToBigDecimal(transOrder.get("deleted")); OmsTransOrder omsTransOrder = new OmsTransOrder(); omsTransOrder.setSerialNumber(transOrder.get("transOrderNumber").toString()); omsTransOrder.setTransOrderId(transOrderId); omsTransOrder.setOrderStatus(orderStatus); omsTransOrder.setAlternateFields36("同意"); OmsOrderChild omsOrderChild = omsOrderChildMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(transOrder.get("transOrderChildId"))); //补录车辆档 if (deleted.compareTo(new BigDecimal(4)) == 0 || deleted.compareTo(new BigDecimal(5)) == 0) { //正在运行中的运单需要校验是否结束 //关闭运单 if ("计重且计时".equals(transOrder.get("billingType"))) { if("计时且计吨结束".equals(orderStatus) || (omsOrderChild.getActualWeight() != null && omsOrderChild.getActualDuration() != null)) { omsTransOrder.setDeleted(new BigDecimal(2)); } }else{ omsTransOrder.setDeleted(new BigDecimal(2)); } if ("计重或计时".equals(transOrder.get("billingType"))) { if(omsOrderChild.getActualWeight() != null || omsOrderChild.getActualDuration() != null) { omsTransOrder.setDeleted(new BigDecimal(2)); } } omsTransOrder.setUpdateUsername(userName); omsTransOrder.setUpdateTime(new Date()); omsTransOrderMapper.updateOtherStatus(omsTransOrder.getTransOrderId(),omsTransOrder.getDeleted()); }else{ //emsFeign.emsdetailsordersAdd(searchMap); } //调用结算接口生成详单 entityDispose.disposeOmsTransOrder(omsTransOrder); omsTransOrderMapper.updateByPrimaryKeySelective(omsTransOrder); //传递transOrderId Map map = new HashMap<>(); map.put("transOrderId",transOrderId); RESTfulResult resTfulResult = reportFeign.generateOperateDaily(map); log.info(resTfulResult); } catch (Exception e) { e.printStackTrace(); log.error("更新运单状态失败:" + e.getMessage()); //throw e; } return 0; } @Transactional(rollbackFor = Exception.class) public String updateCarNo(Map map) throws Exception { OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(map.get("transOrderId"))); omsTransOrder.setCapacityId(DataChange.dataToBigDecimal(map.get("newCarno"))); omsTransOrderMapper.updateByPrimaryKey(omsTransOrder); OmsOrderChild omsOrderChild = omsOrderChildMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(map.get("transOrderChildId"))); //传WMS系统 Map listMap = new HashMap<>(); listMap.put("dlivDirnoSeq", omsOrderChild.getAlternateFields1()); listMap.put("carNo", omsTransOrder.getCapacityId()); String url = "/antai.maketx/v1/slmdlivdirlists/wuliuUpdateCarno"; wmsUtil.executeObject("90010000006", listMap, map.get("accessToken").toString(), url); return "修改成功!"; } public String banTransOrder(Map map) throws Exception{ OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(map.get("transOrderId").toString())); if(omsTransOrder.getDeleted().compareTo(new BigDecimal(4)) != 0 && omsTransOrder.getDeleted().compareTo(new BigDecimal(5)) != 0){ throw new Exception("该运单无法禁用!只允许禁用'未确认'或'已确认'的运单"); } omsTransOrder.setAlternateFields24(map.get("isBan").toString());//0:未禁用,1:已禁用 omsTransOrder.setOrderStatus(map.get("isBan").toString().equals("0") ? "未禁用" : "已禁用"); omsTransOrder.setUpdateTime(new Date()); omsTransOrder.setUpdateUsername(map.get("userName").toString()); omsTransOrderMapper.updateByPrimaryKeySelective(omsTransOrder); return "操作成功!"; } public List> loadingOperation(Map map) { return omsTransOrderMapper.loadingOperation(map); } public String updateTrainOrderSeq(Map params) { String transOrderId = params.get("transOrderId").toString(); String seq = params.get("seq").toString(); Map map = new HashMap<>(); String[] split = transOrderId.split(","); map.put("list", split); map.put("seq", seq); omsTransOrderMapper.updateTrainOrderSeq(map); return "操作成功!"; } public List> purchaseTrainsOrderList(Map map) { String seq = map.get("transOrderId").toString(); String[] split = seq.split(","); map.put("list", split); return omsTransOrderMapper.purchaseTrainsOrderList(map); } //计算发运数量反写通知单 public void sumWeight(BigDecimal requirementChildId) { //获取发运计划总重量 String sumWeightToTransPlan = omsTransOrderMapper.sumWeightToTransPlan(requirementChildId); //获取运输订单中重量 String sumWeightToTransOrder = omsTransOrderMapper.sumWeightToTransOrder(requirementChildId); //反写通知单 Map map = new HashMap<>(); map.put("sumWeightToTransPlan", sumWeightToTransPlan); map.put("sumWeightToTransOrder", sumWeightToTransOrder); map.put("requirementChildId", requirementChildId); omsTransOrderMapper.updateSumWeightToRequirementChild(map); } //计算数量反写计划 public void sumWeightPlan(BigDecimal planChildId) { //查询已出数量 Map info = omsTransOrderMapper.selectNumInfo(planChildId); //更新计划数量 if(info != null) { info.put("planChildId",planChildId); omsTransOrderMapper.updateNumInfo(info); } } //统计运单 public synchronized void listAggCapacity(BigDecimal planChildId) { //查询计划下的车号 String listAggCapacity = omsTransOrderMapper.selectListAggCapacity(planChildId); if(listAggCapacity != null) { omsTransOrderMapper.updateCapacityNumbers(planChildId,listAggCapacity); }else{ omsTransOrderMapper.updateCapacityNumbers(planChildId,""); } } //匹配运单 public Map matching(BigDecimal transOrderId) { //根据运单匹配运单信息 Map objectHashMap = new HashMap<>(); Map searchMap = new HashMap<>(); objectHashMap.put("transOrderId",transOrderId); //objectHashMap.put("deleted",0); List omsOrderChildList = omsOrderChildMapper.selectByParameters(objectHashMap); List omsTransOrderList = omsTransOrderMapper.selectByParameters(objectHashMap); if (omsOrderChildList.get(0).getMaterialName() != null && omsOrderChildList.get(0).getMaterialName().contains("压球")) { //查询物料是否配置在原发数量表中 //查询车辆是不是农用车 String capacityInnerNumber = tmsSignInResultMapper.getCapacityInnerNumber(omsTransOrderList.get(0).getCapacityId()); if(capacityInnerNumber != null && capacityInnerNumber.contains("农")) { Map map = new HashMap<>(); map.put("oldTransOrderId",0); map.put("materialNumber",25.0); return map; } Map map = new HashMap<>(); map.put("oldTransOrderId",0); map.put("materialNumber",50.0); return map; } //获取销售物料相同, //searchMap.put("materialId",omsOrderChildList.get(0).getMaterialId()); searchMap.put("deleted",0); searchMap.put("capacityId",omsTransOrderList.get(0).getCapacityId()); searchMap.put("driverId",omsTransOrderList.get(0).getDriverId()); Map oldTransOrderIdMap = omsOrderChildMapper.selectWeightTransOrderId(searchMap); if(oldTransOrderIdMap == null) { return new HashMap<>(); } if(DataChange.dataToBigDecimal(oldTransOrderIdMap.get("materialId")).compareTo(omsOrderChildList.get(0).getMaterialId()) != 0) { return new HashMap<>(); } BigDecimal oldTransOrderId = DataChange.dataToBigDecimal(oldTransOrderIdMap.get("transOrderId")); //根据运单ID查询净重 BigDecimal materialNumber = omsOrderChildMapper.selectAllWeight(oldTransOrderId); Map map = new HashMap<>(); map.put("oldTransOrderId",oldTransOrderId); map.put("materialNumber",materialNumber); return map; } public void dispatchPushUpdateYf(BigDecimal transOrderId,OmsOrderChild omsOrderChild) throws Exception { DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(transOrderId); if (omsTransOrder == null) { throw new Exception("未查询到运单!"); } Map searchMap = new HashMap<>(); searchMap.put("transOrderId", transOrderId); searchMap.put("deleted", 0); Map businessMap = omsTransOrderMapper.getBusinessType(omsTransOrder.getOrderType()); Map capacity = omsTransOrderMapper.getCapacityById(omsTransOrder.getCapacityId()); Map driver = omsTransOrderMapper.getPersonnelById(omsTransOrder.getDriverId()); Map planChildId = new HashMap<>(); planChildId.put("planChildId", omsOrderChild.getPlanChildId().toString()); Map planDetails = omsOrderChildMapper.findPlanChild(planChildId); if (businessMap == null || businessMap.get("businessTypeName") == null) { throw new Exception("业务类型不存在!"); } else if (capacity == null) { throw new Exception("车辆不存在!"); } else if (driver == null) { throw new Exception("司机不存在!"); } else if (planDetails == null) { throw new Exception("计划不存在!"); } Map params = new HashMap<>(); switch (businessMap.get("businessScene").toString()) { case "采购": params.put("clbh", capacity.get("capacityNumber")); params.put("cllx", capacity.get("capacityType")); params.put("sjxm", driver.get("personnelName")); params.put("sfzh", driver.get("identityCard")); params.put("tel", driver.get("personnelPhone")); params.put("wlbh", planDetails.get("materialCode")); params.put("bmbh", planDetails.get("receiveSourceId")); params.put("shbh", planDetails.get("supplierCompanyCode")); params.put("fhbh", planDetails.get("carrierCode")); params.put("ckbh", planDetails.get("receivingPointSourceId")); params.put("fhdd", planDetails.get("fhdd") == null ? "" : planDetails.get("fhdd")); params.put("note", ""); params.put("zjs", omsOrderChild.getOriginMaterialZjs() == null ? 0 : omsOrderChild.getOriginMaterialZjs()); params.put("zsl", omsOrderChild.getMaterialNumber()); params.put("hsdj", planDetails.get("unitPrice") == null ? 0 : planDetails.get("unitPrice")); params.put("yfdj", "");//运费单价 params.put("htbh", planDetails.get("orderNumber") == null ? "" : planDetails.get("orderNumber")); params.put("tdls", planDetails.get("tdls") != null ? planDetails.get("tdls") : planDetails.get("transRequirementId")); params.put("tdfl", planDetails.get("tdfl") != null ? planDetails.get("tdfl") : planDetails.get("requirementChildId")); params.put("ywbh", omsTransOrder.getOrderType()); params.put("yfrq", dateFormat.format(omsOrderChild.getOriginDate() == null ? new Date() : omsOrderChild.getOriginDate())); params.put("dfbd", omsOrderChild.getOriginPoundNo() == null ? "" : omsOrderChild.getOriginPoundNo());//原发磅单号 params.put("rjhh", omsTransOrder.getSerialNumber()); params.put("username", omsTransOrder.getInsertUsername()); params.put("wldh", planDetails.get("planNumber")); params.put("pfjd", capacity.get("emissionStandardName") == null ? "" : capacity.get("emissionStandardName"));//排放阶段 params.put("sfzhid", driver.get("innerCode") == null ? "" : driver.get("innerCode"));//身份证内码 params.put("rjhhid", omsOrderChild.getOrderChildId());//运单序号 = 分录主键 params.put("pcbz",planDetails.get("pcbz") == null ? "" : planDetails.get("pcbz")); params.put("isReplace",planDetails.get("isReplace") == null ? "否" : planDetails.get("isReplace").toString()); daZongUtil.execute("30010000017", new Map[]{params}); break; case "销售": break; case "生产": break; default: throw new Exception("未知的业务类型!"); } if(!"生产".equals(businessMap.get("businessScene"))) { //推送车辆档案 capacity = omsTransOrderMapper.findCapacityMes(omsTransOrder.getCapacityId()); driver = omsTransOrderMapper.findDriverMes(omsTransOrder.getDriverId()); params = new HashMap<>(); params.putAll(capacity); params.putAll(driver); daZongUtil.execute("30010000002", new Map[]{params}); } } public RESTfulResult matchCarNumber() { RESTfulResult resTfulResult = new RESTfulResult(); try { List tmsAddenergyResult = tmsAddenergyResultMapper.selectByCapacityIdIsNull(); for (TmsAddenergyResult addenergyResult : tmsAddenergyResult) { tmsAddenergyResultMapper.updateByPrimaryKeySelective(addenergyResult); } List tmsMaintenanceResult = tmsMaintenanceResultMapper.selectByCapacityIdIsNull(); for (TmsMaintenanceResult maintenanceResult : tmsMaintenanceResult) { tmsMaintenanceResultMapper.updateByPrimaryKeySelective(maintenanceResult); } } catch (Exception e) { log.error("匹配失败:{}",e); throw e; } resTfulResult.setSucceedMessage("操作成功"); return resTfulResult; } @Transactional public RESTfulResult mergeDzOrder(String shift) { RESTfulResult resTfulResult = new RESTfulResult(); try { List> omsTransOrders = tmsMaintenanceResultMapper.getDzOrder(shift); List orderIds = new ArrayList<>(); for (Map omsTransOrder : omsTransOrders) { //查询运单 Map mapC = new HashMap<>(); mapC.put("capacityId",omsTransOrder.get("capacityId")); mapC.put("shift",shift); OmsTransOrder omsTransOrder1 = omsTransOrderMapper.getDzOrderByCapacityId(mapC); BigDecimal transOrderId = omsTransOrder1.getTransOrderId(); Map map = new HashMap<>(); map.put("transOrderId",transOrderId); List omsOrderChilds = omsOrderChildMapper.selectByParameters(map); omsTransOrder1.setTransOrderId(omsTransOrderMapper.nextId()); omsTransOrder1.setSerialNumber(DataChange.generateEightDigitsNumber("YSDD", omsTransOrder1.getTransOrderId().intValue())); omsTransOrder1.setInsertUpdateRemark("大宗合并运单"); omsTransOrderMapper.insertSelective(omsTransOrder1); orderIds.add(omsTransOrder1.getTransOrderId()); BigDecimal orderChildId = null; if(omsOrderChilds!=null&&omsOrderChilds.size()>0){ OmsOrderChild omsOrderChild = omsOrderChilds.get(0); omsOrderChild.setTransOrderId(omsTransOrder1.getTransOrderId()); orderChildId = omsOrderChildMapper.nextId(); omsOrderChild.setOrderChildId(orderChildId); omsOrderChild.setInsertUpdateRemark("大宗合并运单"); omsOrderChild.setNetWeight(new BigDecimal(omsTransOrder.get("netWeight").toString())); omsOrderChildMapper.insert(omsOrderChild); } TmsWeightResult tmsWeightResult = new TmsWeightResult(); tmsWeightResult.setTransOrderId(omsTransOrder1.getTransOrderId()); tmsWeightResult.setResultId(tmsWeightResultMapper.nextId()); tmsWeightResult.setTransOrderChildId(orderChildId); tmsWeightResult.setNetWeight(new BigDecimal(omsTransOrder.get("netWeight").toString())); tmsWeightResult.setInsertUpdateRemark("大宗合并运单"); tmsWeightResult.setInsertTime(new Date()); tmsWeightResultMapper.insertSelective(tmsWeightResult); } resTfulResult.setData(orderIds); } catch (Exception e) { log.error("合并运单:{}",e); throw e; } resTfulResult.setSucceedMessage("操作成功"); return resTfulResult; } //校验物流单是否超过截止时间,如果超过截止时间,不允许派车并关闭运单 @Transactional(propagation = Propagation.REQUIRES_NEW) public String verificationDeadline(Map params) throws Exception { AmsTransPlan amsTransPlan = amsTransPlanMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(params.get("transPlanId"))); Object dueTime = amsTransPlan.getDueTime(); if (dueTime != null && DataChange.isExpireDay(dueTime)) { //停用计划 if (amsPlanChildMapper.countExecuteTransOrder(params) > 0) { return "超过截止时间,禁止派车,该计划下已有正在执行的运输订单,不能停用!"; } //推送大宗 Map dzMap = new HashMap<>(); dzMap.put("wldh", amsTransPlan.getSerialNumber()); dzMap.put("action", 1); dzMap.put("closename", params.get("userName")); daZongUtil.execute("30010000015", new Map[]{dzMap}); //更新计划下未接收的运单 amsTransPlan.setDeleted(new BigDecimal(3)); amsTransPlan.setUpdateUsername(params.get("userName").toString()); amsTransPlan.setUpdateTime(new Date()); amsTransPlanMapper.updateByPrimaryKey(amsTransPlan); amsPlanChildMapper.updateUnExcuteOrder(params); return "超过物流单截止时间,派车失败,物流单自动停用!"; } else { return "OK"; } } //采购-修改原发数量 public String modifyChange(Map params) throws Exception { OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(params.get("transOrderId"))); if (omsTransOrder.getDeleted().compareTo(new BigDecimal(2)) == 0) { throw new Exception("已完成运单不允许修改!"); } //修改运单原发数量 OmsOrderChild omsOrderChild = omsOrderChildMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(params.get("transOrderChildId"))); omsOrderChild.setMaterialNumber(DataChange.dataToBigDecimal(params.get("materialNumber"))); omsOrderChildMapper.updateByPrimaryKey(omsOrderChild); //修改大宗原发数量 Map dzMap = new HashMap<>(); dzMap.put("serialNumber", omsTransOrder.getSerialNumber()); dzMap.put("materialNumber",omsOrderChild.getMaterialNumber()); String s = dzFeign.modifyChange(dzMap); if (!s.equals("OK")) { throw new Exception("大宗推送失败!"); } return "操作成功!"; } public String getNetWeight(Map params) { //获取缺少重量的数据 List> transOrderNoNetWeight = omsTransOrderMapper.getTransOrderNoNetWeight(params); return "同步成功!"; } @Transactional(rollbackFor = Exception.class) public String correctTransOrder(Map mapVal) throws Exception { List> mapList = (List>) mapVal.get("mapList"); for(Map map : mapList) { Map stringObjectMap = dzFeign.getRightWeightInfo(map); if(stringObjectMap.get("tzdid") == null) { throw new Exception("未匹配到,请确定是否需要修正!"); } //根据通知单id查询计划ID Map planChildMap = omsOrderChildMapper.getPlanChildId(stringObjectMap); if(planChildMap == null || planChildMap.get("planChildId") == null || planChildMap.get("materialId") == null) { throw new Exception("未匹配到计划,请先制订计划后再修正!"); } //更新物料 OmsOrderChild omsOrderChild = omsOrderChildMapper.selectByPrimaryKey(DataChange.dataToBigDecimal(map.get("transOrderChildId"))); omsOrderChild.setMaterialId(DataChange.dataToBigDecimal(planChildMap.get("materialId"))); omsOrderChild.setPlanChildId(DataChange.dataToBigDecimal(planChildMap.get("planChildId"))); entityDispose.disposeOrderChild(omsOrderChild); omsOrderChildMapper.updateByPrimaryKey(omsOrderChild); } return "操作成功"; } //@Transactional(rollbackFor = Exception.class) public int fixedDispatch() throws Exception { //查询未派车状态数据 Map map = new HashMap<>(); map.put("alternateFields30", "1"); List amsTransRequirements = amsTransRequirementMapper.selectByParametersSt(map); for (AmsTransRequirement amsTransRequirement : amsTransRequirements) { try { Map map2 = new HashMap<>(); map2.put("transRequirementId", amsTransRequirement.getTransRequirementId()); List amsRequirementChildren = amsRequirementChildMapper.selectByParameters(map2); AmsRequirementChild amsRequirementChild = amsRequirementChildren.get(0); String[] capacityIds = null; String[] driverIds = null; capacityIds = amsTransRequirement.getAlternateFields16().split("','"); Set capacityIdSet=new HashSet(Arrays.asList(capacityIds)); String[] capacityIdsAll = capacityIdSet.toArray(new String[capacityIdSet.size()]); driverIds = amsTransRequirement.getAlternateFields22().split(","); List> list = new ArrayList<>(); for (int i = 0; i < capacityIdsAll.length; i++) { //查询派车证司机 List drivers = amsTransRequirementMapper.getCapacityDriverById(capacityIds[i], driverIds); for (String driver : drivers) { Map item = new HashMap<>(); item.put("capacityId", capacityIds[i]); item.put("driverId", driver); item.put("materialNumber", 0); item.put("taskType", "正常作业"); list.add(item); } } //生成计划 Map directMap = new HashMap<>(); directMap.put("requirementChildId", amsRequirementChild.getRequirementChildId()); directMap.put("carrierId", 37019); directMap.put("userId", "admin"); directMap.put("userName", "派车证自动新增"); directMap.put("materialNumber", amsRequirementChild.getMaterialNumber()); directMap.put("transTruckNumber", amsRequirementChild.getTransTruckNumber()); directMap.put("businessTypeName", amsTransRequirement.getBusinessTypeName()); directMap.put("capacityIds", capacityIds); directMap.put("driverIds", driverIds); BigDecimal planChildId = null; directMap.put("list", list); directMap.put("userId", "admin"); directMap.put("userName", "派车证自动新增"); directMap.put("lineId", amsTransRequirement.getLineId()); directMap.put("businessType", amsTransRequirement.getBusinessType()); try { omsTransOrderService.dispatchTask(directMap); amsTransRequirement.setAlternateFields30("0"); amsTransRequirementMapper.updateByPrimaryKeySelective(amsTransRequirement); } catch (Exception e) { e.printStackTrace(); continue; } } catch (Exception e) { e.printStackTrace(); throw new Exception(amsTransRequirement.getSerialNumber() + ":派车失败!"); } } return 1; } public List> getZtZxShiji(Map map) { return omsTransOrderMapper.getZtZxShiji(map); } @Transactional(rollbackFor = Exception.class) public String disposeMatchLoadData(Map map) { List> zjMapList = (List>) map.get("zjMapList"); List> dcMapList = (List>) map.get("dcMapList"); for(Map stringObjectMap : zjMapList) { //首先把选中的装机数据的吨位和运单id给清空 BigDecimal transOrderChildId = DataChange.dataToBigDecimal(stringObjectMap.get("transOrderChildId")); OmsOrderChild omsOrderChild = omsOrderChildMapper.selectByPrimaryKey(transOrderChildId); omsOrderChild.setActualWeight(null); omsOrderChild.setNetWeight(null); omsOrderChild.setAlternateFields20(null); omsOrderChildMapper.updateByPrimaryKey(omsOrderChild); } //上面把所有吨位清空后,将之进行重新匹配 for(Map stringObjectMap1 : dcMapList) { BigDecimal transOrderChildIdDc = DataChange.dataToBigDecimal(stringObjectMap1.get("transOrderChildId")); BigDecimal transOrderIdDc = DataChange.dataToBigDecimal(stringObjectMap1.get("transOrderId")); OmsOrderChild omsOrderChild = omsOrderChildMapper.selectByPrimaryKey(transOrderChildIdDc); if(omsOrderChild.getNetWeight() == null || omsOrderChild.getNetWeight().compareTo(BigDecimal.ZERO) == 0) { continue; } OmsTransOrder omsTransOrder = omsTransOrderMapper.selectByPrimaryKey(transOrderIdDc); //匹配装载机信息 //获取大宗单据的物料信息与区间 String materialName = omsOrderChild.getMaterialName(); if(materialName == null) { continue; } if("公司".equals(omsTransOrder.getCapacityNumber())) { continue; } if(omsOrderChild.getNetWeight() == null || omsOrderChild.getNetWeight().compareTo(BigDecimal.ZERO) == 0) { continue; } //匹配无烟煤数据 Map objectObjectHashMap = new HashMap<>(); objectObjectHashMap.put("zjMapList",zjMapList); objectObjectHashMap.put("netWeightTime", omsTransOrder.getIssueTime()); List orderChildIds = omsTransOrderMapper.selectLoaderCapacityOrderIds(objectObjectHashMap); if (orderChildIds == null || orderChildIds.size() == 0) { continue; } //平分 BigDecimal avgWeight = omsOrderChild.getNetWeight().divide(new BigDecimal(orderChildIds.size()), 2, 4); for (BigDecimal orderChildId : orderChildIds) { OmsOrderChild omsOrderChild1 = omsOrderChildMapper.selectByPrimaryKey(orderChildId); if (omsOrderChild1.getAlternateFields20() != null) { String[] stringList = omsOrderChild1.getAlternateFields20().split(","); if (Arrays.asList(stringList).contains(omsOrderChild.getTransOrderId().toString())) { continue; } } omsOrderChild1.setNetWeight(DataChange.dataToBigDecimal(omsOrderChild1.getNetWeight()).add(avgWeight)); omsOrderChild1.setActualWeight(omsOrderChild1.getNetWeight()); omsOrderChild1.setAlternateFields20(omsOrderChild1.getAlternateFields20() == null ? omsOrderChild.getTransOrderId().toString() : omsOrderChild1.getAlternateFields20() + "," + omsOrderChild.getTransOrderId()); omsOrderChildMapper.updateByPrimaryKeySelective(omsOrderChild1); } //新增对照关系表 } // return "操作成功!"; } public void sendMessageToHr(String title,String sendMessage){ try { HashMap sendMap = new HashMap<>(); sendMap.put("userId", "admin"); sendMap.put("userName","admin"); sendMap.put("title", title); sendMap.put("sendMessage", sendMessage); sendMap.put("sendType", "01");//01:通知消息 String websocketId = "宏瑞物流"; RESTfulResult resTfulResult = null; resTfulResult = websocketFeign.sendWebsocket(websocketId, sendMap); if (resTfulResult != null && !resTfulResult.isSucceed()) { log.error("宏瑞物流信息推送:" + resTfulResult.getMessage()); } } catch (Exception e) { log.error("宏瑞物流信息推送:{}", e); e.printStackTrace(); } } }