|
|
@ -356,30 +356,51 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
@DS("#header.poolName")
|
|
|
|
@DS("#header.poolName")
|
|
|
|
public AjaxResult getOrderAndWorkInfo(ProOrderWorkorder proOrderWorkorder) {
|
|
|
|
public AjaxResult getOrderAndWorkInfo(ProOrderWorkorder proOrderWorkorder) {
|
|
|
|
boolean run = true;
|
|
|
|
|
|
|
|
while (run) {
|
|
|
|
|
|
|
|
ProOrderWorkorder fatherWorkOrder = proOrderWorkorderMapper.selectWorkOrderByCode(proOrderWorkorder.getParentOrder());
|
|
|
|
|
|
|
|
// 如果存在父工单
|
|
|
|
|
|
|
|
if (fatherWorkOrder != null) {
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(fatherWorkOrder, proOrderWorkorder);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
run = false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// 通过母订单id查询母订单详情
|
|
|
|
|
|
|
|
ProOrder proOrder = proOrderMapper.selectProOrderById(proOrderWorkorder.getOrderId());
|
|
|
|
|
|
|
|
if (proOrder != null) {
|
|
|
|
|
|
|
|
// 递归查询子订单
|
|
|
|
|
|
|
|
recursiveQueryChildOrder(proOrder);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// 通过获取到的工单信息获取父工单
|
|
|
|
|
|
|
|
formatProOrderWorkorder(proOrderWorkorder);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Map orderAndWork = new HashMap();
|
|
|
|
if (proOrderWorkorder.getProdType().equals("white")) {
|
|
|
|
orderAndWork.put("order", proOrder);
|
|
|
|
// 获取子母订单
|
|
|
|
orderAndWork.put("workOrder", proOrderWorkorder);
|
|
|
|
ProOrder childOrder = proOrderMapper.selectProOrderByOrderCode(proOrderWorkorder.getOrderCode());
|
|
|
|
|
|
|
|
ProOrder proOrder = proOrderMapper.selectProOrderByOrderCode(childOrder.getParentOrder());
|
|
|
|
|
|
|
|
// 将子订单放入母订单
|
|
|
|
|
|
|
|
List<ProOrder> orderList = new ArrayList<>();
|
|
|
|
|
|
|
|
orderList.add(childOrder);
|
|
|
|
|
|
|
|
proOrder.setChildren(orderList);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 工单
|
|
|
|
|
|
|
|
ProOrderWorkorder workOrder = proOrderWorkorderMapper.selectProOrderWorkorderByWorkorderId(proOrderWorkorder.getWorkorderId());
|
|
|
|
|
|
|
|
formatProOrderWorkorder(workOrder);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return success(orderAndWork);
|
|
|
|
Map orderAndWork = new HashMap();
|
|
|
|
|
|
|
|
orderAndWork.put("order", proOrder);
|
|
|
|
|
|
|
|
orderAndWork.put("workOrder", workOrder);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return success(orderAndWork);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
boolean run = true;
|
|
|
|
|
|
|
|
while (run) {
|
|
|
|
|
|
|
|
ProOrderWorkorder fatherWorkOrder = proOrderWorkorderMapper.selectWorkOrderByCode(proOrderWorkorder.getParentOrder());
|
|
|
|
|
|
|
|
// 如果存在父工单
|
|
|
|
|
|
|
|
if (fatherWorkOrder != null) {
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(fatherWorkOrder, proOrderWorkorder);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
run = false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// 通过母订单id查询母订单详情
|
|
|
|
|
|
|
|
ProOrder proOrder = proOrderMapper.selectProOrderById(proOrderWorkorder.getOrderId());
|
|
|
|
|
|
|
|
if (proOrder != null) {
|
|
|
|
|
|
|
|
// 递归查询子订单
|
|
|
|
|
|
|
|
recursiveQueryChildOrder(proOrder);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// 通过获取到的工单信息获取父工单
|
|
|
|
|
|
|
|
formatProOrderWorkorder(proOrderWorkorder);
|
|
|
|
|
|
|
|
Map orderAndWork = new HashMap();
|
|
|
|
|
|
|
|
orderAndWork.put("order", proOrder);
|
|
|
|
|
|
|
|
orderAndWork.put("workOrder", proOrderWorkorder);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return success(orderAndWork);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -486,34 +507,41 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (checkout) {
|
|
|
|
if (checkout) {
|
|
|
|
// 删除所有工单s下的批次信息
|
|
|
|
|
|
|
|
int i = proOrderWorkorderBatchMapper.deleteProOrderWorkorderBatchByWorkorderIds(workorderIds);
|
|
|
|
// 白坯订单变更逻辑
|
|
|
|
// 删除湿料计划
|
|
|
|
if (splitOrderDTO.getProduct().getProdType().equals("white")) {
|
|
|
|
proWetMaterialPlanDetailMapper.deleteProWetMaterialPlanDetailByWorkId(proWorkOrder.getWorkorderId());
|
|
|
|
// 删除所有工单下的批次信息
|
|
|
|
// 创建订单信息,并将信息copy进去
|
|
|
|
int i = proOrderWorkorderBatchMapper.deleteProOrderWorkorderBatchByWorkorderIds(workorderIds);
|
|
|
|
ProOrder proOrder = new ProOrder();
|
|
|
|
// 删除湿料计划
|
|
|
|
BeanUtils.copyProperties(splitOrderDTO.getProduct(), proOrder);
|
|
|
|
proWetMaterialPlanDetailMapper.deleteProWetMaterialPlanDetailByWorkId(proWorkOrder.getWorkorderId());
|
|
|
|
// 设置换算基数,用于获得换算值
|
|
|
|
// 创建订单信息,将信息copy进去
|
|
|
|
Long quantity = proOrder.getQuantity();
|
|
|
|
ProOrder proOrder = new ProOrder();
|
|
|
|
// 创建批次表通用对象
|
|
|
|
BeanUtils.copyProperties(splitOrderDTO.getProduct(), proOrder);
|
|
|
|
ProOrderWorkorderBatch workBatch = setCommonBatchAttribute();
|
|
|
|
// 创建批次表通用对象
|
|
|
|
boolean run = true;
|
|
|
|
ProOrderWorkorderBatch workBatch = setCommonBatchAttribute();
|
|
|
|
// 获取单位换算值
|
|
|
|
// 更新母订单信息
|
|
|
|
Long conver = 1L;
|
|
|
|
proOrder.setQuantitySplit(proOrder.getQuantitySplit() + splitOrderDTO.getSplitNum());
|
|
|
|
int index = workOrderList.size();
|
|
|
|
|
|
|
|
while (run) {
|
|
|
|
|
|
|
|
// 获得对应工单
|
|
|
|
|
|
|
|
ProOrderWorkorder proOrderWorkorder = workOrderList.get(--index);
|
|
|
|
|
|
|
|
// 更新订单
|
|
|
|
|
|
|
|
proOrder.setUpdateBy(SecurityContextHolder.getUserName());
|
|
|
|
proOrder.setUpdateBy(SecurityContextHolder.getUserName());
|
|
|
|
proOrder.setUpdateTime(DateUtils.getNowDate());
|
|
|
|
proOrder.setUpdateTime(DateUtils.getNowDate());
|
|
|
|
proOrder.setQuantitySplit(proOrder.getQuantitySplit() + Long.valueOf(proOrder.getAtrr1()));
|
|
|
|
proOrder.setAtrr1("");
|
|
|
|
|
|
|
|
// 更新母订单至数据库
|
|
|
|
proOrderMapper.updateProOrder(proOrder);
|
|
|
|
proOrderMapper.updateProOrder(proOrder);
|
|
|
|
// 设置工单信息
|
|
|
|
// 更新子订单
|
|
|
|
|
|
|
|
ProOrder childOrder = new ProOrder();
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(proOrder.getChildren().get(0),childOrder);
|
|
|
|
|
|
|
|
childOrder.setAtrr1("");
|
|
|
|
|
|
|
|
childOrder.setQuantitySplit(childOrder.getQuantitySplit() + splitOrderDTO.getSplitNum());
|
|
|
|
|
|
|
|
childOrder.setQuantity(childOrder.getQuantitySplit());
|
|
|
|
|
|
|
|
childOrder.setUpdateBy(SecurityContextHolder.getUserName());
|
|
|
|
|
|
|
|
childOrder.setUpdateTime(DateUtils.getNowDate());
|
|
|
|
|
|
|
|
// 更新子订单至数据库
|
|
|
|
|
|
|
|
proOrderMapper.updateProOrder(childOrder);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 工单信息更新
|
|
|
|
|
|
|
|
ProOrderWorkorder proOrderWorkorder = workOrderList.get(0);
|
|
|
|
|
|
|
|
proOrderWorkorder.setQuantitySplit(splitOrderDTO.getSplitNum());
|
|
|
|
proOrderWorkorder.setUpdateBy(SecurityContextHolder.getUserName());
|
|
|
|
proOrderWorkorder.setUpdateBy(SecurityContextHolder.getUserName());
|
|
|
|
proOrderWorkorder.setUpdateTime(DateUtils.getNowDate());
|
|
|
|
proOrderWorkorder.setUpdateTime(DateUtils.getNowDate());
|
|
|
|
// 拆分数量
|
|
|
|
|
|
|
|
proOrderWorkorder.setQuantitySplit(Long.valueOf(proOrder.getAtrr1()));
|
|
|
|
|
|
|
|
// 2.将工单信息更新至数据库
|
|
|
|
// 2.将工单信息更新至数据库
|
|
|
|
if (splitOrderDTO.getProdLineCode() != null) {
|
|
|
|
if (splitOrderDTO.getProdLineCode() != null) {
|
|
|
|
proOrderWorkorder.setProdLineCode(splitOrderDTO.getProdLineCode());
|
|
|
|
proOrderWorkorder.setProdLineCode(splitOrderDTO.getProdLineCode());
|
|
|
@ -528,16 +556,12 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
|
|
|
|
proOrderWorkorder.setRouteCode(splitOrderDTO.getRouteCode());
|
|
|
|
proOrderWorkorder.setRouteCode(splitOrderDTO.getRouteCode());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// 白坯工单返修-车数
|
|
|
|
// 白坯工单返修-车数
|
|
|
|
if (proOrderWorkorder.getProdType().equals("white")) {
|
|
|
|
if (splitOrderDTO.getCarNum() != null) {
|
|
|
|
int everyNum = (int) Math.ceil(proOrder.getQuantity() / proOrder.getCarNum());
|
|
|
|
proOrderWorkorder.setCarNum(splitOrderDTO.getCarNum());
|
|
|
|
int carNum = (int) Math.ceil(splitOrderDTO.getSplitNum() / everyNum);
|
|
|
|
|
|
|
|
proOrderWorkorder.setCarNum(carNum);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
proOrderWorkorderMapper.updateProOrderWorkorder(proOrderWorkorder);
|
|
|
|
proOrderWorkorderMapper.updateProOrderWorkorder(proOrderWorkorder);
|
|
|
|
|
|
|
|
|
|
|
|
// System.out.println("这里是workorderCode------------》"+proOrderWorkorder.getWorkorderCode());
|
|
|
|
|
|
|
|
// 生成对应批次表
|
|
|
|
|
|
|
|
workBatch.setWorkorderId(proOrderWorkorder.getWorkorderId());
|
|
|
|
workBatch.setWorkorderId(proOrderWorkorder.getWorkorderId());
|
|
|
|
|
|
|
|
|
|
|
|
// 生成批次表信息并更新至数据库
|
|
|
|
// 生成批次表信息并更新至数据库
|
|
|
@ -547,7 +571,7 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
|
|
|
|
// 生成批次号
|
|
|
|
// 生成批次号
|
|
|
|
workBatch.setBatchCode(batch.getBatchCode());
|
|
|
|
workBatch.setBatchCode(batch.getBatchCode());
|
|
|
|
// 生成批次数量
|
|
|
|
// 生成批次数量
|
|
|
|
workBatch.setBatchQuantity(batch.getBatchQuantity() * conver);
|
|
|
|
workBatch.setBatchQuantity(batch.getBatchQuantity());
|
|
|
|
// 更新至数据库
|
|
|
|
// 更新至数据库
|
|
|
|
proOrderWorkorderBatchMapper.insertProOrderWorkorderBatch(workBatch);
|
|
|
|
proOrderWorkorderBatchMapper.insertProOrderWorkorderBatch(workBatch);
|
|
|
|
|
|
|
|
|
|
|
@ -556,19 +580,95 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
|
|
|
|
// System.out.println("这里是拆分数量----------->"+workBatch.getBatchQuantity());
|
|
|
|
// System.out.println("这里是拆分数量----------->"+workBatch.getBatchQuantity());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 如果存在子节点
|
|
|
|
return success("变更成功");
|
|
|
|
if (proOrder.getChildren().size() > 0) {
|
|
|
|
} else {
|
|
|
|
ProOrderDTO newProOrder = (ProOrderDTO) proOrder.getChildren().get(0);
|
|
|
|
// 删除所有工单s下的批次信息
|
|
|
|
// 更新换算值
|
|
|
|
int i = proOrderWorkorderBatchMapper.deleteProOrderWorkorderBatchByWorkorderIds(workorderIds);
|
|
|
|
conver = (newProOrder.getQuantity() / quantity);
|
|
|
|
// 删除湿料计划
|
|
|
|
// 将child信息重新赋值给proOrder
|
|
|
|
proWetMaterialPlanDetailMapper.deleteProWetMaterialPlanDetailByWorkId(proWorkOrder.getWorkorderId());
|
|
|
|
BeanUtils.copyProperties(newProOrder, proOrder);
|
|
|
|
// 创建订单信息,并将信息copy进去
|
|
|
|
} else {
|
|
|
|
ProOrder proOrder = new ProOrder();
|
|
|
|
// 结束循环
|
|
|
|
BeanUtils.copyProperties(splitOrderDTO.getProduct(), proOrder);
|
|
|
|
run = false;
|
|
|
|
// 设置换算基数,用于获得换算值
|
|
|
|
|
|
|
|
Long quantity = proOrder.getQuantity();
|
|
|
|
|
|
|
|
// 创建批次表通用对象
|
|
|
|
|
|
|
|
ProOrderWorkorderBatch workBatch = setCommonBatchAttribute();
|
|
|
|
|
|
|
|
boolean run = true;
|
|
|
|
|
|
|
|
// 获取单位换算值
|
|
|
|
|
|
|
|
Long conver = 1L;
|
|
|
|
|
|
|
|
int index = workOrderList.size();
|
|
|
|
|
|
|
|
while (run) {
|
|
|
|
|
|
|
|
// 获得对应工单
|
|
|
|
|
|
|
|
ProOrderWorkorder proOrderWorkorder = workOrderList.get(--index);
|
|
|
|
|
|
|
|
// 更新订单
|
|
|
|
|
|
|
|
proOrder.setUpdateBy(SecurityContextHolder.getUserName());
|
|
|
|
|
|
|
|
proOrder.setUpdateTime(DateUtils.getNowDate());
|
|
|
|
|
|
|
|
proOrder.setQuantitySplit(proOrder.getQuantitySplit() + Long.valueOf(proOrder.getAtrr1()));
|
|
|
|
|
|
|
|
proOrderMapper.updateProOrder(proOrder);
|
|
|
|
|
|
|
|
// 设置工单信息
|
|
|
|
|
|
|
|
proOrderWorkorder.setUpdateBy(SecurityContextHolder.getUserName());
|
|
|
|
|
|
|
|
proOrderWorkorder.setUpdateTime(DateUtils.getNowDate());
|
|
|
|
|
|
|
|
// 拆分数量
|
|
|
|
|
|
|
|
proOrderWorkorder.setQuantitySplit(Long.valueOf(proOrder.getAtrr1()));
|
|
|
|
|
|
|
|
// 2.将工单信息更新至数据库
|
|
|
|
|
|
|
|
if (splitOrderDTO.getProdLineCode() != null) {
|
|
|
|
|
|
|
|
proOrderWorkorder.setProdLineCode(splitOrderDTO.getProdLineCode());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (splitOrderDTO.getProductDate() != null) {
|
|
|
|
|
|
|
|
proOrderWorkorder.setProductDate(splitOrderDTO.getProductDate());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (splitOrderDTO.getShiftId() != null) {
|
|
|
|
|
|
|
|
proOrderWorkorder.setShiftId(splitOrderDTO.getShiftId());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (splitOrderDTO.getRouteCode() != null) {
|
|
|
|
|
|
|
|
proOrderWorkorder.setRouteCode(splitOrderDTO.getRouteCode());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// 白坯工单返修-车数
|
|
|
|
|
|
|
|
if (proOrderWorkorder.getProdType().equals("white")) {
|
|
|
|
|
|
|
|
if (splitOrderDTO.getCarNum() != null) {
|
|
|
|
|
|
|
|
proOrderWorkorder.setCarNum(splitOrderDTO.getCarNum());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
proOrderWorkorderMapper.updateProOrderWorkorder(proOrderWorkorder);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// System.out.println("这里是workorderCode------------》"+proOrderWorkorder.getWorkorderCode());
|
|
|
|
|
|
|
|
// 生成对应批次表
|
|
|
|
|
|
|
|
workBatch.setWorkorderId(proOrderWorkorder.getWorkorderId());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 生成批次表信息并更新至数据库
|
|
|
|
|
|
|
|
for (Batch batch : splitOrderDTO.getFormFields()) {
|
|
|
|
|
|
|
|
// 生成批次id
|
|
|
|
|
|
|
|
workBatch.setBatchId(IdUtils.fastSimpleUUID());
|
|
|
|
|
|
|
|
// 生成批次号
|
|
|
|
|
|
|
|
workBatch.setBatchCode(batch.getBatchCode());
|
|
|
|
|
|
|
|
// 生成批次数量
|
|
|
|
|
|
|
|
workBatch.setBatchQuantity(batch.getBatchQuantity() * conver);
|
|
|
|
|
|
|
|
// 更新至数据库
|
|
|
|
|
|
|
|
proOrderWorkorderBatchMapper.insertProOrderWorkorderBatch(workBatch);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 测试
|
|
|
|
|
|
|
|
// System.out.println("这里是workorderId----------->"+workBatch.getWorkorderId());
|
|
|
|
|
|
|
|
// System.out.println("这里是拆分数量----------->"+workBatch.getBatchQuantity());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 如果存在子节点
|
|
|
|
|
|
|
|
if (proOrder.getChildren().size() > 0) {
|
|
|
|
|
|
|
|
ProOrderDTO newProOrder = (ProOrderDTO) proOrder.getChildren().get(0);
|
|
|
|
|
|
|
|
// 更新换算值
|
|
|
|
|
|
|
|
conver = (newProOrder.getQuantity() / quantity);
|
|
|
|
|
|
|
|
// 将child信息重新赋值给proOrder
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(newProOrder, proOrder);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
// 结束循环
|
|
|
|
|
|
|
|
run = false;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return success("变更成功");
|
|
|
|
|
|
|
|
// throw new RuntimeException();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return success();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -585,7 +685,7 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
|
|
|
|
@DS("#header.poolName")
|
|
|
|
@DS("#header.poolName")
|
|
|
|
public AjaxResult checkWorkOrder(String id) {
|
|
|
|
public AjaxResult checkWorkOrder(String id) {
|
|
|
|
ProOrderWorkorder proOrderWorkorder = proOrderWorkorderMapper.selectProOrderWorkorderByWorkorderId(id);
|
|
|
|
ProOrderWorkorder proOrderWorkorder = proOrderWorkorderMapper.selectProOrderWorkorderByWorkorderId(id);
|
|
|
|
if (!(proOrderWorkorder.getStatus().equals("w0") ||proOrderWorkorder.getStatus().equals("w1"))) {
|
|
|
|
if (!(proOrderWorkorder.getStatus().equals("w0") || proOrderWorkorder.getStatus().equals("w1"))) {
|
|
|
|
return error("工单已生产,不可变更!");
|
|
|
|
return error("工单已生产,不可变更!");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return success();
|
|
|
|
return success();
|
|
|
|