|
|
|
@ -108,23 +108,23 @@ public class ProOrderServiceImpl implements IProOrderService {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//校验各工序设备是否已选择
|
|
|
|
|
List<CascaderDTO> processes = proOrderMapper.getRouteProcess(splitOrderDTO.getRouteCode());
|
|
|
|
|
if (splitOrderDTO.getProdLineCodeArray().length == 0) {
|
|
|
|
|
//校验各工序设备是否已选择
|
|
|
|
|
List<CascaderDTO> processes= proOrderMapper.getRouteProcess(splitOrderDTO.getRouteCode());
|
|
|
|
|
if(splitOrderDTO.getProdLineCodeArray().length == 0){
|
|
|
|
|
checkout = false;
|
|
|
|
|
return error(500, "必须选择工单生产设备!");
|
|
|
|
|
} else {
|
|
|
|
|
}else{
|
|
|
|
|
String codeArray = JSONArray.toJSONString(splitOrderDTO.getProdLineCodeArray());
|
|
|
|
|
for (int i = 0; i < processes.size(); i++) {
|
|
|
|
|
if (codeArray.indexOf(processes.get(i).getValue()) < 0) {
|
|
|
|
|
for(int i=0;i<processes.size();i++){
|
|
|
|
|
if(codeArray.indexOf(processes.get(i).getValue())<0){
|
|
|
|
|
checkout = false;
|
|
|
|
|
return error(500, "所有有工序节点都必须选择生产设备!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String[][] array = splitOrderDTO.getProdLineCodeArray();
|
|
|
|
|
for (int m = 0; m < array.length; m++) {
|
|
|
|
|
if (array[m].length < 2) {
|
|
|
|
|
for(int m=0;m<array.length;m++){
|
|
|
|
|
if(array[m].length<2){
|
|
|
|
|
checkout = false;
|
|
|
|
|
return error(500, "工序没有生产设备可选择,请维护工艺!");
|
|
|
|
|
}
|
|
|
|
@ -137,17 +137,17 @@ public class ProOrderServiceImpl implements IProOrderService {
|
|
|
|
|
if (checkout) {
|
|
|
|
|
|
|
|
|
|
/****白坯订单*****/
|
|
|
|
|
if (splitOrderDTO.getProduct().getProdType().equals("white")) {
|
|
|
|
|
if (splitOrderDTO.getProduct().getProdType().equals("white")){
|
|
|
|
|
|
|
|
|
|
boolean flag = false;
|
|
|
|
|
|
|
|
|
|
// 母订单
|
|
|
|
|
ProOrder proOrderTemp = new ProOrder();
|
|
|
|
|
BeanUtils.copyProperties(splitOrderDTO.getProduct(), proOrderTemp);
|
|
|
|
|
BeanUtils.copyProperties(splitOrderDTO.getProduct(),proOrderTemp);
|
|
|
|
|
// 母订单拆分数量
|
|
|
|
|
proOrderTemp.setUpdateTime(DateUtils.getNowDate());
|
|
|
|
|
proOrderTemp.setUpdateBy(SecurityContextHolder.getUserName());
|
|
|
|
|
proOrderTemp.setQuantitySplit(proOrderTemp.getQuantitySplit() + splitOrderDTO.getSplitNum());
|
|
|
|
|
proOrderTemp.setQuantitySplit(proOrderTemp.getQuantitySplit()+splitOrderDTO.getSplitNum());
|
|
|
|
|
// 拆分中
|
|
|
|
|
proOrderTemp.setStatus("o1");
|
|
|
|
|
// 如果拆分完就更改状态为已拆分
|
|
|
|
@ -158,7 +158,7 @@ public class ProOrderServiceImpl implements IProOrderService {
|
|
|
|
|
if (!flag) {
|
|
|
|
|
// 全部改为拆分中
|
|
|
|
|
proOrderMapper.updateOrderStatusByOrderCode(proOrderTemp.getOrderCode());
|
|
|
|
|
} else {
|
|
|
|
|
}else {
|
|
|
|
|
// 全部改为已拆分
|
|
|
|
|
proOrderMapper.updateOrderStatusCompleteByOrderCode(proOrderTemp.getOrderCode());
|
|
|
|
|
}
|
|
|
|
@ -167,7 +167,7 @@ public class ProOrderServiceImpl implements IProOrderService {
|
|
|
|
|
|
|
|
|
|
// 创建订单对象,并将信息copy进去
|
|
|
|
|
ProOrder proOrder = new ProOrder();
|
|
|
|
|
BeanUtils.copyProperties(splitOrderDTO.getProduct().getChildren().get(0), proOrder);
|
|
|
|
|
BeanUtils.copyProperties(splitOrderDTO.getProduct().getChildren().get(0),proOrder);
|
|
|
|
|
// 子订单
|
|
|
|
|
proOrder.setUpdateTime(DateUtils.getNowDate());
|
|
|
|
|
proOrder.setUpdateBy(SecurityContextHolder.getUserName());
|
|
|
|
@ -175,8 +175,8 @@ public class ProOrderServiceImpl implements IProOrderService {
|
|
|
|
|
proOrder.setQuantity(proOrder.getQuantitySplit());
|
|
|
|
|
proOrder.setStatus("o1");
|
|
|
|
|
if (proOrder.getCarNum() != null) {
|
|
|
|
|
proOrder.setCarNum(proOrder.getCarNum() + splitOrderDTO.getCarNum());
|
|
|
|
|
} else {
|
|
|
|
|
proOrder.setCarNum(proOrder.getCarNum()+splitOrderDTO.getCarNum());
|
|
|
|
|
}else {
|
|
|
|
|
proOrder.setCarNum(splitOrderDTO.getCarNum());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -189,7 +189,7 @@ public class ProOrderServiceImpl implements IProOrderService {
|
|
|
|
|
ProOrderWorkorder proOrderWorkorder = setCommonWorkAttribute(
|
|
|
|
|
proOrder, splitOrderDTO.getProductDate(),
|
|
|
|
|
splitOrderDTO.getProdLineCode(), splitOrderDTO.getShiftId(),
|
|
|
|
|
splitOrderDTO.getRouteCode(), splitOrderDTO.getSortNo()
|
|
|
|
|
splitOrderDTO.getRouteCode(),splitOrderDTO.getSortNo()
|
|
|
|
|
);
|
|
|
|
|
// 设置批次表通用信息
|
|
|
|
|
ProOrderWorkorderBatch proOrderWorkorderBatch = setCommonBatchAttribute();
|
|
|
|
@ -197,7 +197,7 @@ public class ProOrderServiceImpl implements IProOrderService {
|
|
|
|
|
proOrderWorkorder.setWorkorderId(IdUtils.fastSimpleUUID());
|
|
|
|
|
// 设置工单code
|
|
|
|
|
int endCode = getEndCode(proOrder.getId());
|
|
|
|
|
proOrderWorkorder.setWorkorderCode(proOrder.getOrderCode() + "-" + endCode);
|
|
|
|
|
proOrderWorkorder.setWorkorderCode(proOrder.getOrderCode()+"-"+endCode);
|
|
|
|
|
proOrderWorkorder.setOrderId(proOrder.getId());
|
|
|
|
|
proOrderWorkorder.setOrderCode(proOrder.getOrderCode());
|
|
|
|
|
proOrderWorkorder.setUnit(proOrder.getUnit());
|
|
|
|
@ -210,15 +210,15 @@ public class ProOrderServiceImpl implements IProOrderService {
|
|
|
|
|
// 插入工单/**pro_order_workorder**/
|
|
|
|
|
proOrderWorkorderMapper.insertProOrderWorkorder(proOrderWorkorder);
|
|
|
|
|
|
|
|
|
|
setBatch(proOrderWorkorderBatch, splitOrderDTO.getFormFields(), proOrderWorkorder.getWorkorderId(), 1L);
|
|
|
|
|
setBatch(proOrderWorkorderBatch,splitOrderDTO.getFormFields(),proOrderWorkorder.getWorkorderId(),1L);
|
|
|
|
|
|
|
|
|
|
//生成湿料计划------------------------------开始
|
|
|
|
|
List<ProWetMaterialPlanDetail> wetDetails = new ArrayList<>();
|
|
|
|
|
//设备-根据工单获取实际规划设备路线
|
|
|
|
|
String[][] lineCodes = splitOrderDTO.getProdLineCodeArray();//proRfidProcessDetailMapper.getActuaEquips(rfidInfo);
|
|
|
|
|
ProWetMaterialPlanDetail wetDetail = null;
|
|
|
|
|
for (int c1 = 0; c1 < lineCodes.length; c1++) {
|
|
|
|
|
if (lineCodes[c1][1].startsWith("L")) {//L1-8湿料罐
|
|
|
|
|
for(int c1= 0;c1<lineCodes.length;c1++){
|
|
|
|
|
if(lineCodes[c1][1].startsWith("L")){//L1-8湿料罐
|
|
|
|
|
wetDetail = new ProWetMaterialPlanDetail();
|
|
|
|
|
wetDetail.setId(IdUtils.fastSimpleUUID());
|
|
|
|
|
wetDetail.setWorkorderId(proOrderWorkorder.getWorkorderId());
|
|
|
|
@ -233,18 +233,18 @@ public class ProOrderServiceImpl implements IProOrderService {
|
|
|
|
|
//获取当前所选工厂
|
|
|
|
|
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
|
|
|
|
|
String key = "#header.poolName";
|
|
|
|
|
wetDetail.setFactoryCode(request.getHeader(key.substring(8)).replace("ds_", ""));
|
|
|
|
|
wetDetail.setFactoryCode(request.getHeader(key.substring(8)).replace("ds_",""));
|
|
|
|
|
wetDetails.add(wetDetail);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!CollectionUtils.isEmpty(wetDetails)) {
|
|
|
|
|
if(!CollectionUtils.isEmpty(wetDetails)){
|
|
|
|
|
proWetMaterialPlanDetailMapper.batchAddWetDetails(wetDetails);
|
|
|
|
|
}
|
|
|
|
|
//生成湿料计划------------------------------结束
|
|
|
|
|
|
|
|
|
|
return success();
|
|
|
|
|
|
|
|
|
|
} else {/****成品订单*****/
|
|
|
|
|
}else {/****成品订单*****/
|
|
|
|
|
// 创建订单对象,并将信息copy进去
|
|
|
|
|
ProOrder proOrder = new ProOrder();
|
|
|
|
|
BeanUtils.copyProperties(splitOrderDTO.getProduct(), proOrder);
|
|
|
|
@ -252,7 +252,7 @@ public class ProOrderServiceImpl implements IProOrderService {
|
|
|
|
|
ProOrderWorkorder proOrderWorkorder = setCommonWorkAttribute(
|
|
|
|
|
proOrder, splitOrderDTO.getProductDate(),
|
|
|
|
|
splitOrderDTO.getProdLineCode(), splitOrderDTO.getShiftId(),
|
|
|
|
|
splitOrderDTO.getRouteCode(), splitOrderDTO.getSortNo()
|
|
|
|
|
splitOrderDTO.getRouteCode(),splitOrderDTO.getSortNo()
|
|
|
|
|
);
|
|
|
|
|
// 创建批次表通用对象
|
|
|
|
|
ProOrderWorkorderBatch workBatch = setCommonBatchAttribute();
|
|
|
|
@ -279,7 +279,7 @@ public class ProOrderServiceImpl implements IProOrderService {
|
|
|
|
|
workOrder.setParentOrder(parentOrder.toString());
|
|
|
|
|
|
|
|
|
|
workOrder.setSortNo(splitOrderDTO.getSortNo());
|
|
|
|
|
if ("0".equals(workOrder.getParentOrder())) {
|
|
|
|
|
if("0".equals(workOrder.getParentOrder())){
|
|
|
|
|
//20231127,加入belongWorkOrder概念
|
|
|
|
|
belongWorkOrder = workOrder.getWorkorderCode();
|
|
|
|
|
|
|
|
|
@ -289,14 +289,14 @@ public class ProOrderServiceImpl implements IProOrderService {
|
|
|
|
|
BigDecimal newSapQuantityNum = new BigDecimal(proOrder.getQuantity())
|
|
|
|
|
.subtract(new BigDecimal(proOrder.getQuantitySplit()));
|
|
|
|
|
sapChange.setQuantity(newSapQuantityNum.toString());//母订单新数量
|
|
|
|
|
logger.info("【成品订单拆分】母订单" + proOrder.getOrderCode() +
|
|
|
|
|
"订单数量变更:修改前" + proOrder.getQuantity() + "," +
|
|
|
|
|
",已拆数量" + proOrder.getQuantitySplit() + "," +
|
|
|
|
|
"给sap汇报数量" + newSapQuantityNum.toString());
|
|
|
|
|
logger.info("【成品订单拆分】母订单"+proOrder.getOrderCode()+
|
|
|
|
|
"订单数量变更:修改前"+proOrder.getQuantity()+","+
|
|
|
|
|
",已拆数量"+proOrder.getQuantitySplit()+","+
|
|
|
|
|
"给sap汇报数量"+newSapQuantityNum.toString());
|
|
|
|
|
R rSapChange = remoteSapService.shopUpdateSync(sapChange);//sap只能同步指定日期的数据
|
|
|
|
|
logger.info("母订单" + proOrder.getOrderCode() +
|
|
|
|
|
"订单数量变更结果:" + rSapChange.getCode() + "," + rSapChange.getMsg());
|
|
|
|
|
} else {
|
|
|
|
|
logger.info("母订单"+proOrder.getOrderCode()+
|
|
|
|
|
"订单数量变更结果:"+rSapChange.getCode()+","+rSapChange.getMsg());
|
|
|
|
|
}else{
|
|
|
|
|
workOrder.setProductCode(splitOrderDTO.getProduct().getChildren().get(0).getProdCode());
|
|
|
|
|
workOrder.setProductName(splitOrderDTO.getProduct().getChildren().get(0).getProdDesc());
|
|
|
|
|
}
|
|
|
|
@ -309,7 +309,7 @@ public class ProOrderServiceImpl implements IProOrderService {
|
|
|
|
|
setBatch(workBatch, splitOrderDTO.getFormFields(), workOrder.getWorkorderId(), conver);
|
|
|
|
|
|
|
|
|
|
// 如果存在子节点
|
|
|
|
|
if (proOrder.getChildren() != null && proOrder.getChildren().size() > 0) {
|
|
|
|
|
if (proOrder.getChildren() != null && proOrder.getChildren().size()>0) {
|
|
|
|
|
ProOrderDTO newProOrder = (ProOrderDTO) proOrder.getChildren().get(0);
|
|
|
|
|
// 更新换算值
|
|
|
|
|
conver = (newProOrder.getQuantity() / quantity);
|
|
|
|
@ -367,12 +367,12 @@ public class ProOrderServiceImpl implements IProOrderService {
|
|
|
|
|
StringBuilder prodLineName = new StringBuilder("");
|
|
|
|
|
StringBuilder equipCods = new StringBuilder("'");
|
|
|
|
|
JSONArray codeArray = JSONArray.parseArray(proOrderWorkorder.getProdLineCode());
|
|
|
|
|
for (int c = 0; c < codeArray.size(); c++) {
|
|
|
|
|
for(int c=0;c<codeArray.size();c++){
|
|
|
|
|
equipCods.append(codeArray.getJSONArray(c).getString(1));
|
|
|
|
|
equipCods.append("','");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Map<String, CascaderDTO> equipMap = proOrderMapper.getEquipInfoByCodes(equipCods.substring(1));//设备字典
|
|
|
|
|
Map<String,CascaderDTO> equipMap = proOrderMapper.getEquipInfoByCodes(equipCods.substring(1));//设备字典
|
|
|
|
|
for (int c = 0; c < codeArray.size(); c++) {
|
|
|
|
|
String equipCode = codeArray.getJSONArray(c).getString(1);
|
|
|
|
|
prodLineName.append(equipMap.get(equipCode).getLabel() + ",");
|
|
|
|
@ -387,7 +387,7 @@ public class ProOrderServiceImpl implements IProOrderService {
|
|
|
|
|
// 格式化数据
|
|
|
|
|
for (ProOrderWorkorderBatch batchCode : batchCodeList) {
|
|
|
|
|
batchCodes.add(new StringBuilder(batchCode.getBatchCode()).append(";"));
|
|
|
|
|
batchNums.add(new StringBuilder(batchCode.getBatchQuantity() + "").append(";"));
|
|
|
|
|
batchNums.add(new StringBuilder(batchCode.getBatchQuantity()+"").append(";"));
|
|
|
|
|
}
|
|
|
|
|
// 将查询结果设置到当前工单对象
|
|
|
|
|
proOrderWorkorder.setShiftDesc(shiftDesc);
|
|
|
|
@ -434,40 +434,32 @@ public class ProOrderServiceImpl implements IProOrderService {
|
|
|
|
|
// //获取当前所选工厂
|
|
|
|
|
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
|
|
|
|
|
String key = "#header.poolName";
|
|
|
|
|
sapqo.setWerk(request.getHeader(key.substring(8)).replace("ds_", ""));
|
|
|
|
|
sapqo.setWerk(request.getHeader(key.substring(8)).replace("ds_",""));
|
|
|
|
|
|
|
|
|
|
SapProOrder maxCreateTime = proOrderMapper.getMaxCreatetime();
|
|
|
|
|
if (maxCreateTime == null) {
|
|
|
|
|
if(maxCreateTime == null ){
|
|
|
|
|
sapqo.setErdat(DateFormatUtils.format(new Date(), "yyyyMMdd"));//S_ERDAT(创建日期) 例如:20230923
|
|
|
|
|
} else {
|
|
|
|
|
}else{
|
|
|
|
|
sapqo.setErdat(maxCreateTime.getCreateTimeStr());//S_ERDAT(创建日期) 例如:20230923
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// //添加调用sap日志
|
|
|
|
|
// SysSapLog sysSapLog = new SysSapLog();
|
|
|
|
|
// sysSapLog.setId(IdUtils.fastSimpleUUID());
|
|
|
|
|
// sysSapLog.setMesssge(sapqo.toString());
|
|
|
|
|
// sysSapLog.setMethod("syncSAP");
|
|
|
|
|
// sysSapLog.setReqcode("请求");
|
|
|
|
|
// sysSapLog.setCreateTime(DateUtils.getNowDate());
|
|
|
|
|
// proOrderMapper.addSapLog(sysSapLog);
|
|
|
|
|
logger.info("手动订单同步:【参数】" + JSONObject.toJSONString(sapqo));
|
|
|
|
|
//取>=20230923的sap数据
|
|
|
|
|
logger.info("手动订单同步:【参数】"+ JSONObject.toJSONString(sapqo));
|
|
|
|
|
//取>=20230923的sap数据
|
|
|
|
|
R<List<SapProOrder>> rSapProOrder = remoteSapService.shopOrderSync(sapqo);//sap只能同步指定日期的数据
|
|
|
|
|
|
|
|
|
|
List<SapProOrder> newOrders = rSapProOrder.getData();
|
|
|
|
|
if (CollectionUtils.isEmpty(newOrders)) {
|
|
|
|
|
System.out.println("无" + sapqo.getErdat() + "之后的最新订单");
|
|
|
|
|
} else {
|
|
|
|
|
if(CollectionUtils.isEmpty(newOrders)){
|
|
|
|
|
System.out.println("无"+sapqo.getErdat()+"之后的最新订单");
|
|
|
|
|
}else {
|
|
|
|
|
syncSAPFunc(newOrders, "Job");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public String syncSAPFunc(List<SapProOrder> newOrders, String syncUser) {
|
|
|
|
|
public String syncSAPFunc(List<SapProOrder> newOrders,String syncUser){
|
|
|
|
|
String failOrder = "";
|
|
|
|
|
ProOrder proOrder = null;
|
|
|
|
|
for (SapProOrder sapProOrder : newOrders) {
|
|
|
|
|
if ("LJ88".equals(sapProOrder.getOrderType())) {
|
|
|
|
|
for (SapProOrder sapProOrder:newOrders) {
|
|
|
|
|
if("LJ88".equals(sapProOrder.getOrderType())){
|
|
|
|
|
//工单生产后整个订单就被锁定//订单存在就更新,不存在就插入
|
|
|
|
|
proOrder = new ProOrder();
|
|
|
|
|
BeanUtils.copyProperties(sapProOrder, proOrder);
|
|
|
|
@ -479,38 +471,38 @@ public class ProOrderServiceImpl implements IProOrderService {
|
|
|
|
|
return failOrder;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public String syncImportFunc(List<ProOrder> newOrders) {
|
|
|
|
|
public String syncImportFunc(List<ProOrder> newOrders){
|
|
|
|
|
String failOrder = "";
|
|
|
|
|
for (ProOrder proOrder : newOrders) {
|
|
|
|
|
for (ProOrder proOrder:newOrders) {
|
|
|
|
|
//prodType->@Excel(name = "产品类型", readConverterExp = "white=白坯,prod=成品")
|
|
|
|
|
proOrder.setCreateBy(SecurityUtils.getUsername());
|
|
|
|
|
proOrder.setSyncUser("import");
|
|
|
|
|
proOrder.setPlanFactoryCode(proOrder.getFactoryCode());
|
|
|
|
|
String msg = syncFunc(proOrder);
|
|
|
|
|
if (StringUtils.isNotBlank(msg)) {
|
|
|
|
|
failOrder += msg + ",";
|
|
|
|
|
if(StringUtils.isNotBlank(msg)){
|
|
|
|
|
failOrder += msg+",";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return failOrder;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public String syncFunc(ProOrder proOrder) {
|
|
|
|
|
public String syncFunc(ProOrder proOrder){
|
|
|
|
|
String failOrder = "";
|
|
|
|
|
//pro_order_workorder
|
|
|
|
|
Date nowDate = DateUtils.getNowDate();
|
|
|
|
|
ProOrder orderExit = proOrderMapper.selectProOrderByOrderCode(proOrder.getOrderCode());
|
|
|
|
|
if (orderExit == null) {//不存在就插入
|
|
|
|
|
if (orderExit==null) {//不存在就插入
|
|
|
|
|
proOrder.setId(IdUtils.fastSimpleUUID());
|
|
|
|
|
proOrder.setCreateTime(nowDate);
|
|
|
|
|
proOrderMapper.insertProOrder(proOrder);
|
|
|
|
|
logger.info("=======订单" + proOrder.getOrderCode() + "同步成功");
|
|
|
|
|
logger.info("=======订单"+proOrder.getOrderCode()+"同步成功");
|
|
|
|
|
} else {//存在,如果没活动更新,否则不允许更新,关闭订单
|
|
|
|
|
proOrder.setId(orderExit.getId());
|
|
|
|
|
proOrder.setQuantitySplit(0L);
|
|
|
|
|
ProOrderWorkorder owork = new ProOrderWorkorder();
|
|
|
|
|
owork.setOrderCode(proOrder.getOrderCode());
|
|
|
|
|
owork.setStatusArray("'w2','w3','w4'");//已派发w1未派w0活动w2报工w3暂停w4
|
|
|
|
|
owork.setStatusArray("'w1','w2','w3','w4'");//已派发w1未派w0活动w2报工w3暂停w4
|
|
|
|
|
List<ProOrderWorkorder> workOrders = proOrderWorkorderMapper.selectProOrderWorkorderList(owork);
|
|
|
|
|
if (CollectionUtils.isEmpty(workOrders)) {//更新
|
|
|
|
|
proOrder.setUpdateTime(nowDate);
|
|
|
|
@ -526,10 +518,10 @@ public class ProOrderServiceImpl implements IProOrderService {
|
|
|
|
|
//删除工单pro_order_workorder
|
|
|
|
|
proOrderWorkorderMapper.deleteProOrderWorkorderByOrderIds(ids);
|
|
|
|
|
}
|
|
|
|
|
logger.info("=======订单" + proOrder.getOrderCode() + "同步成功");
|
|
|
|
|
} else {
|
|
|
|
|
logger.info("=======订单"+proOrder.getOrderCode()+"同步成功");
|
|
|
|
|
}else{
|
|
|
|
|
failOrder = proOrder.getOrderCode();
|
|
|
|
|
logger.info("=======订单" + failOrder + "同步失败");
|
|
|
|
|
logger.info("=======订单"+failOrder+"同步忽略,订单已经派发");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return failOrder;
|
|
|
|
@ -568,11 +560,11 @@ public class ProOrderServiceImpl implements IProOrderService {
|
|
|
|
|
@Transactional
|
|
|
|
|
public AjaxResult importOrder(List<ProOrder> orderList) {
|
|
|
|
|
BaseProduct bpqo = null;
|
|
|
|
|
for (ProOrder order : orderList) {
|
|
|
|
|
if (StringUtils.isBlank(order.getOrderType())) {
|
|
|
|
|
for(ProOrder order:orderList){
|
|
|
|
|
if(StringUtils.isBlank(order.getOrderType())){
|
|
|
|
|
order.setOrderType("LJ01");
|
|
|
|
|
}
|
|
|
|
|
String factoryCode = ServletUtils.getRequest().getHeader("PoolName").replace("ds_", "");
|
|
|
|
|
String factoryCode = ServletUtils.getRequest().getHeader("PoolName").replace("ds_","");
|
|
|
|
|
order.setPlanFactoryCode(factoryCode);
|
|
|
|
|
order.setFactoryCode(factoryCode);
|
|
|
|
|
order.setCreateBy(SecurityUtils.getUsername());
|
|
|
|
@ -582,7 +574,7 @@ public class ProOrderServiceImpl implements IProOrderService {
|
|
|
|
|
bpqo = new BaseProduct();
|
|
|
|
|
bpqo.setProductCode(order.getProdCode());
|
|
|
|
|
List<BaseProduct> bp = baseProductMapper.selectBaseProductList(bpqo);
|
|
|
|
|
if (!CollectionUtils.isEmpty(bp)) {
|
|
|
|
|
if(!CollectionUtils.isEmpty(bp)){
|
|
|
|
|
order.setProdDesc(bp.get(0).getProductDescZh());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -592,8 +584,8 @@ public class ProOrderServiceImpl implements IProOrderService {
|
|
|
|
|
// 如果数据校验成功
|
|
|
|
|
if (checkResult.isSuccess()) {
|
|
|
|
|
String info = syncImportFunc(orderList);
|
|
|
|
|
return success("信息导入完成。其中导入失败订单:" + info);
|
|
|
|
|
} else {
|
|
|
|
|
return success("信息导入完成。其中导入失败订单:"+info);
|
|
|
|
|
}else{
|
|
|
|
|
return checkResult;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -627,7 +619,6 @@ public class ProOrderServiceImpl implements IProOrderService {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取班次信息list
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
@ -638,7 +629,6 @@ public class ProOrderServiceImpl implements IProOrderService {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 通过订单物料code查询工艺list
|
|
|
|
|
*
|
|
|
|
|
* @param prodCode
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
@ -650,41 +640,40 @@ public class ProOrderServiceImpl implements IProOrderService {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 通过工艺编码获取设备信息list
|
|
|
|
|
*
|
|
|
|
|
* @param routeCode
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
@DS("#header.poolName")
|
|
|
|
|
public List<CascaderDTO> getProEquipment(String routeCode) {
|
|
|
|
|
List<CascaderDTO> level = proOrderMapper.getRouteProcess(routeCode);
|
|
|
|
|
List<CascaderDTO> level2 = proOrderMapper.getRouteProcessEquips(level);
|
|
|
|
|
Map<String, CascaderDTO> equipMap = new HashMap<>();//设备字典
|
|
|
|
|
if (!CollectionUtils.isEmpty(level2)) {
|
|
|
|
|
List<CascaderDTO> level= proOrderMapper.getRouteProcess(routeCode);
|
|
|
|
|
List<CascaderDTO> level2= proOrderMapper.getRouteProcessEquips(level);
|
|
|
|
|
Map<String,CascaderDTO> equipMap = new HashMap<>();//设备字典
|
|
|
|
|
if(!CollectionUtils.isEmpty(level2)){
|
|
|
|
|
List<String> oldCodes = level2.stream()
|
|
|
|
|
.filter(value -> StringUtils.isNotEmpty(value.getValue()))
|
|
|
|
|
.map(value -> value.getValue()).collect(Collectors.toList());
|
|
|
|
|
String equipCods = oldCodes.stream().reduce((sum, num) -> sum + "," + num).get();
|
|
|
|
|
equipMap = proOrderMapper.getEquipInfoByCodes(equipCods.replace(",", "','"));
|
|
|
|
|
String equipCods = oldCodes.stream().reduce((sum,num) -> sum+","+num).get();
|
|
|
|
|
equipMap = proOrderMapper.getEquipInfoByCodes(equipCods.replace(",","','"));
|
|
|
|
|
}
|
|
|
|
|
if (equipMap.isEmpty()) {
|
|
|
|
|
if(equipMap.isEmpty()){
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
List<CascaderDTO> children = null;
|
|
|
|
|
for (CascaderDTO level1 : level) {
|
|
|
|
|
for(CascaderDTO level1:level){
|
|
|
|
|
children = new ArrayList<>();//最终结果
|
|
|
|
|
List<CascaderDTO> childrens = level2.stream()
|
|
|
|
|
.filter(dto -> dto.getLabel().equals(level1.getValue()))
|
|
|
|
|
.filter(dto ->dto.getLabel().equals(level1.getValue()))
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
for (CascaderDTO child : childrens) {
|
|
|
|
|
for(CascaderDTO child:childrens){
|
|
|
|
|
String[] equipstr = child.getValue().split(",");
|
|
|
|
|
for (String equipcode : equipstr) {
|
|
|
|
|
if (equipMap.get(equipcode) != null) {
|
|
|
|
|
for(String equipcode:equipstr){
|
|
|
|
|
if(equipMap.get(equipcode) != null){
|
|
|
|
|
children.add(equipMap.get(equipcode));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!CollectionUtils.isEmpty(children)) {
|
|
|
|
|
if(!CollectionUtils.isEmpty(children)){
|
|
|
|
|
level1.setChildren(children);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -694,7 +683,6 @@ public class ProOrderServiceImpl implements IProOrderService {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 通过母订单Code查询级联订单信息并封装
|
|
|
|
|
*
|
|
|
|
|
* @param orderCode
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
@ -717,7 +705,7 @@ public class ProOrderServiceImpl implements IProOrderService {
|
|
|
|
|
proOrderList.add(childProOrderList.get(0));
|
|
|
|
|
tempCode.setLength(0);
|
|
|
|
|
tempCode.append(childProOrderList.get(0).getOrderCode());
|
|
|
|
|
} else {
|
|
|
|
|
}else {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -726,13 +714,13 @@ public class ProOrderServiceImpl implements IProOrderService {
|
|
|
|
|
ProOrder proOrderVO = new ProOrder();
|
|
|
|
|
|
|
|
|
|
// 处理列表
|
|
|
|
|
for (int i = proOrderList.size() - 1; i > 0; i--) {
|
|
|
|
|
for (int i = proOrderList.size()-1; i > 0; i--) {
|
|
|
|
|
List<ProOrder> setList = new ArrayList<>();
|
|
|
|
|
setList.add(proOrderList.get(i));
|
|
|
|
|
proOrderList.get(i - 1).setChildren(setList);
|
|
|
|
|
proOrderList.get(i-1).setChildren(setList);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(proOrderList.get(0), proOrderVO);
|
|
|
|
|
BeanUtils.copyProperties(proOrderList.get(0),proOrderVO);
|
|
|
|
|
return success(proOrderVO);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -750,11 +738,11 @@ public class ProOrderServiceImpl implements IProOrderService {
|
|
|
|
|
// sapqo.setCreateTime(calendar.getTime());
|
|
|
|
|
//
|
|
|
|
|
SapShopOrderQuery sapqo = new SapShopOrderQuery();
|
|
|
|
|
sapqo.setWerk(poolName.replace("ds_", ""));
|
|
|
|
|
sapqo.setWerk(poolName.replace("ds_",""));
|
|
|
|
|
SapProOrder maxCreateTime = proOrderMapper.getMaxCreatetime();
|
|
|
|
|
if (maxCreateTime == null) {
|
|
|
|
|
if(maxCreateTime == null ){
|
|
|
|
|
sapqo.setErdat(DateFormatUtils.format(new Date(), "yyyyMMdd"));//S_ERDAT(创建日期) 例如:20230923
|
|
|
|
|
} else {
|
|
|
|
|
}else{
|
|
|
|
|
sapqo.setErdat(maxCreateTime.getCreateTimeStr());//S_ERDAT(创建日期) 例如:20230923
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -769,9 +757,9 @@ public class ProOrderServiceImpl implements IProOrderService {
|
|
|
|
|
|
|
|
|
|
R<List<SapProOrder>> rSapProOrder = remoteSapService.shopOrderSync(sapqo);
|
|
|
|
|
List<SapProOrder> newOrders = rSapProOrder.getData();
|
|
|
|
|
if (CollectionUtils.isEmpty(newOrders)) {
|
|
|
|
|
System.out.println("无" + sapqo.getErdat() + "之后的最新订单");
|
|
|
|
|
} else {
|
|
|
|
|
if(CollectionUtils.isEmpty(newOrders)){
|
|
|
|
|
System.out.println("无"+sapqo.getErdat()+"之后的最新订单");
|
|
|
|
|
}else {
|
|
|
|
|
syncSAPFunc(newOrders, "Job");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -943,7 +931,7 @@ public class ProOrderServiceImpl implements IProOrderService {
|
|
|
|
|
if (proOrder.getQuantity().longValue() == proOrder.getQuantitySplit().longValue()) {
|
|
|
|
|
// 已拆分
|
|
|
|
|
proOrder.setStatus("o2");
|
|
|
|
|
} else {
|
|
|
|
|
}else {
|
|
|
|
|
// 拆分中
|
|
|
|
|
proOrder.setStatus("o1");
|
|
|
|
|
}
|
|
|
|
@ -1094,11 +1082,10 @@ public class ProOrderServiceImpl implements IProOrderService {
|
|
|
|
|
}
|
|
|
|
|
return success();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void main(String args[]) {
|
|
|
|
|
public static void main(String args[]){
|
|
|
|
|
String arrayStr = "[[\"GX01\",\"LG1\"],[\"GX01\",\"LG2\"],[\"GX02\",\"S1\"],[\"GX02\",\"S2\"],[\"GX03\",\"HF01\"],[\"GX04\",\"SPJ01\"]]";
|
|
|
|
|
JSONArray jsonArray = JSONArray.parseArray(arrayStr);
|
|
|
|
|
for (int c = 0; c < jsonArray.size(); c++) {
|
|
|
|
|
for(int c=0;c<jsonArray.size();c++){
|
|
|
|
|
System.out.println(jsonArray.getJSONArray(c).getString(1));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|