白坯订单管理

highway
wws 1 year ago
parent 04de6bbefa
commit 8d24223198

@ -109,4 +109,11 @@ public interface ProWetMaterialPlanDetailMapper {
* @return
*/
ProWetMaterialPlan selectProWetMaterialPlanById(String wetMaterialPlanId);
/**
* code湿
* @param orderCode
* @return
*/
ProWetMaterialPlanDetail selectProWetMaterialPlanDetailByOrderCode(String orderCode);
}

@ -356,30 +356,51 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
@Override
@DS("#header.poolName")
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();
orderAndWork.put("order", proOrder);
orderAndWork.put("workOrder", proOrderWorkorder);
if (proOrderWorkorder.getProdType().equals("white")) {
// 获取子母订单
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) {
// 删除所有工单s下的批次信息
int i = proOrderWorkorderBatchMapper.deleteProOrderWorkorderBatchByWorkorderIds(workorderIds);
// 删除湿料计划
proWetMaterialPlanDetailMapper.deleteProWetMaterialPlanDetailByWorkId(proWorkOrder.getWorkorderId());
// 创建订单信息并将信息copy进去
ProOrder proOrder = new ProOrder();
BeanUtils.copyProperties(splitOrderDTO.getProduct(), proOrder);
// 设置换算基数,用于获得换算值
Long quantity = proOrder.getQuantity();
// 创建批次表通用对象
ProOrderWorkorderBatch workBatch = setCommonBatchAttribute();
boolean run = true;
// 获取单位换算值
Long conver = 1L;
int index = workOrderList.size();
while (run) {
// 获得对应工单
ProOrderWorkorder proOrderWorkorder = workOrderList.get(--index);
// 更新订单
// 白坯订单变更逻辑
if (splitOrderDTO.getProduct().getProdType().equals("white")) {
// 删除所有工单下的批次信息
int i = proOrderWorkorderBatchMapper.deleteProOrderWorkorderBatchByWorkorderIds(workorderIds);
// 删除湿料计划
proWetMaterialPlanDetailMapper.deleteProWetMaterialPlanDetailByWorkId(proWorkOrder.getWorkorderId());
// 创建订单信息将信息copy进去
ProOrder proOrder = new ProOrder();
BeanUtils.copyProperties(splitOrderDTO.getProduct(), proOrder);
// 创建批次表通用对象
ProOrderWorkorderBatch workBatch = setCommonBatchAttribute();
// 更新母订单信息
proOrder.setQuantitySplit(proOrder.getQuantitySplit() + splitOrderDTO.getSplitNum());
proOrder.setUpdateBy(SecurityContextHolder.getUserName());
proOrder.setUpdateTime(DateUtils.getNowDate());
proOrder.setQuantitySplit(proOrder.getQuantitySplit() + Long.valueOf(proOrder.getAtrr1()));
proOrder.setAtrr1("");
// 更新母订单至数据库
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.setUpdateTime(DateUtils.getNowDate());
// 拆分数量
proOrderWorkorder.setQuantitySplit(Long.valueOf(proOrder.getAtrr1()));
// 2.将工单信息更新至数据库
if (splitOrderDTO.getProdLineCode() != null) {
proOrderWorkorder.setProdLineCode(splitOrderDTO.getProdLineCode());
@ -528,16 +556,12 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
proOrderWorkorder.setRouteCode(splitOrderDTO.getRouteCode());
}
// 白坯工单返修-车数
if (proOrderWorkorder.getProdType().equals("white")) {
int everyNum = (int) Math.ceil(proOrder.getQuantity() / proOrder.getCarNum());
int carNum = (int) Math.ceil(splitOrderDTO.getSplitNum() / everyNum);
proOrderWorkorder.setCarNum(carNum);
if (splitOrderDTO.getCarNum() != null) {
proOrderWorkorder.setCarNum(splitOrderDTO.getCarNum());
}
proOrderWorkorderMapper.updateProOrderWorkorder(proOrderWorkorder);
// System.out.println("这里是workorderCode------------》"+proOrderWorkorder.getWorkorderCode());
// 生成对应批次表
workBatch.setWorkorderId(proOrderWorkorder.getWorkorderId());
// 生成批次表信息并更新至数据库
@ -547,7 +571,7 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
// 生成批次号
workBatch.setBatchCode(batch.getBatchCode());
// 生成批次数量
workBatch.setBatchQuantity(batch.getBatchQuantity() * conver);
workBatch.setBatchQuantity(batch.getBatchQuantity());
// 更新至数据库
proOrderWorkorderBatchMapper.insertProOrderWorkorderBatch(workBatch);
@ -556,19 +580,95 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
// 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("变更成功");
} else {
// 删除所有工单s下的批次信息
int i = proOrderWorkorderBatchMapper.deleteProOrderWorkorderBatchByWorkorderIds(workorderIds);
// 删除湿料计划
proWetMaterialPlanDetailMapper.deleteProWetMaterialPlanDetailByWorkId(proWorkOrder.getWorkorderId());
// 创建订单信息并将信息copy进去
ProOrder proOrder = new ProOrder();
BeanUtils.copyProperties(splitOrderDTO.getProduct(), proOrder);
// 设置换算基数,用于获得换算值
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")
public AjaxResult checkWorkOrder(String 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 success();

@ -116,6 +116,15 @@
where wet_material_plan_id = #{wetMaterialPlanId}
</select>
<select id="selectProWetMaterialPlanDetailByOrderCode"
resultType="com.op.plan.domain.ProWetMaterialPlanDetail">
select id, factory_code, plan_time, sync_flag, create_by, create_time, update_by, update_time,
order_type, prod_code, prod_desc, prod_source, quantity, unit, atrr1, atrr2, atrr3, status,
prod_type, plan_code, shift_id, shift_desc from pro_wet_material_plan
where workorder_id in (select workorder_id from pro_order_workorder where order_code = #{orderCode}
)
</select>
<insert id="insertProWetMaterialPlanDetail" parameterType="ProWetMaterialPlanDetail">
insert into pro_wet_material_plan_detail
<trim prefix="(" suffix=")" suffixOverrides=",">

Loading…
Cancel
Save