diff --git a/doc/设计文档/数据库设计/mes-pro.sql b/doc/设计文档/数据库设计/mes-pro.sql index a201855..5487745 100644 --- a/doc/设计文档/数据库设计/mes-pro.sql +++ b/doc/设计文档/数据库设计/mes-pro.sql @@ -154,7 +154,7 @@ create table pro_route_process ( default_pre_time int(11) default 0 comment '准备时间', default_suf_time int(11) default 0 comment '等待时间', color_code char(7) default '#00AEF3' comment '甘特图显示颜色', - update_flag varchar(64) default 'N' comment '更新工单', + key_flag varchar(64) default 'N' comment '关键工序', remark varchar(500) default '' comment '备注', attr1 varchar(64) default null comment '预留字段1', attr2 varchar(255) default null comment '预留字段2', diff --git a/doc/设计文档/数据库设计/数据库设计.xlsx b/doc/设计文档/数据库设计/数据库设计.xlsx index e6af2b5..deb8e9a 100644 Binary files a/doc/设计文档/数据库设计/数据库设计.xlsx and b/doc/设计文档/数据库设计/数据库设计.xlsx differ diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/controller/ProFeedbackController.java b/ktg-mes/src/main/java/com/ktg/mes/pro/controller/ProFeedbackController.java index 610a7f8..a3b4a96 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/pro/controller/ProFeedbackController.java +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/controller/ProFeedbackController.java @@ -4,11 +4,19 @@ import java.math.BigDecimal; import java.util.List; import javax.servlet.http.HttpServletResponse; -import com.ktg.mes.pro.domain.ProFeedback; -import com.ktg.mes.pro.domain.ProTask; +import com.ktg.common.constant.UserConstants; +import com.ktg.common.utils.StringUtils; +import com.ktg.mes.pro.domain.*; +import com.ktg.mes.pro.service.IProRouteProcessService; import com.ktg.mes.pro.service.IProTaskService; import com.ktg.mes.pro.service.IProWorkorderService; +import com.ktg.mes.wm.domain.WmItemConsume; +import com.ktg.mes.wm.domain.WmProductProduce; +import com.ktg.mes.wm.domain.tx.ItemConsumeTxBean; +import com.ktg.mes.wm.domain.tx.ProductProductTxBean; import com.ktg.mes.wm.service.IStorageCoreService; +import com.ktg.mes.wm.service.IWmItemConsumeService; +import com.ktg.mes.wm.service.IWmProductProduceService; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; @@ -44,9 +52,18 @@ public class ProFeedbackController extends BaseController @Autowired private IProTaskService proTaskService; + @Autowired + private IProRouteProcessService proRouteProcessService; + @Autowired private IProWorkorderService proWorkorderService; + @Autowired + private IWmItemConsumeService wmItemConsumeService; + + @Autowired + private IWmProductProduceService wmProductProduceService; + @Autowired private IStorageCoreService storageCoreService; @@ -133,7 +150,7 @@ public class ProFeedbackController extends BaseController public AjaxResult execute(@PathVariable("recordId") Long recordId){ ProFeedback feedback= proFeedbackService.selectProFeedbackByRecordId(recordId); - + ProWorkorder workorder = proWorkorderService.selectProWorkorderByWorkorderId(feedback.getWorkorderId()); //更新生产任务的生产数量 ProTask task = proTaskService.selectProTaskByTaskId(feedback.getTaskId()); BigDecimal quantityProduced,quantityQuanlify,quantityUnquanlify; @@ -145,10 +162,49 @@ public class ProFeedbackController extends BaseController task.setQuantityUnquanlify(quantityUnquanlify.add(feedback.getQuantityUnquanlified())); proTaskService.updateProTask(task); - //如果是最后一道工序,则更新当前工单的已生产数量 + //如果是关键工序,则更新当前工单的已生产数量,进行产品产出动作 + if(proRouteProcessService.checkKeyProcess(feedback)){ + //更新生产工单的生产数量 + workorder.setQuantityProduced(workorder.getQuantityProduced().add(feedback.getQuantityFeedback())); + proWorkorderService.updateProWorkorder(workorder); + //生成产品产出记录单 + WmProductProduce productRecord = wmProductProduceService.generateProductProduce(feedback); + //执行产品产出入线边库 + executeProductProduce(productRecord); + } + + //根据当前工序的物料BOM配置,进行物料消耗 + //先生成消耗单 + WmItemConsume itemConsume = wmItemConsumeService.generateItemConsume(feedback); + if(StringUtils.isNotNull(itemConsume)){ + //再执行库存消耗动作 + executeItemConsume(itemConsume); + } return AjaxResult.success(); } + /** + * 执行产品产出入线边库动作 + * @param record + */ + private void executeProductProduce(WmProductProduce record){ + List beans = wmProductProduceService.getTxBeans(record.getRecordId()); + storageCoreService.processProductProduce(beans); + record.setStatus(UserConstants.ORDER_STATUS_FINISHED); + wmProductProduceService.updateWmProductProduce(record); + } + + /** + * 执行物料消耗库存动作 + * @param record + */ + private void executeItemConsume(WmItemConsume record){ + List beans = wmItemConsumeService.getTxBeans(record.getRecordId()); + storageCoreService.processItemConsume(beans); + record.setStatus(UserConstants.ORDER_STATUS_FINISHED); + wmItemConsumeService.updateWmItemConsume(record); + } + } diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/mapper/ProRouteMapper.java b/ktg-mes/src/main/java/com/ktg/mes/pro/mapper/ProRouteMapper.java index c371e7c..b31b218 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/pro/mapper/ProRouteMapper.java +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/mapper/ProRouteMapper.java @@ -27,6 +27,13 @@ public interface ProRouteMapper */ public List selectProRouteList(ProRoute proRoute); + /** + * 根据物料查找生效的工艺路线 + * @param itemId + * @return + */ + public ProRoute getRouteByProductId(Long itemId); + public ProRoute checkRouteCodeUnique(ProRoute proRoute); /** diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProRouteProductBomService.java b/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProRouteProductBomService.java index 4cc39cc..20e307a 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProRouteProductBomService.java +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProRouteProductBomService.java @@ -1,7 +1,10 @@ package com.ktg.mes.pro.service; import java.util.List; + +import com.ktg.mes.pro.domain.ProFeedback; import com.ktg.mes.pro.domain.ProRouteProductBom; +import com.ktg.mes.wm.domain.WmItemConsume; /** * 产品制程物料BOMService接口 @@ -80,4 +83,6 @@ public interface IProRouteProductBomService * @return */ public int deleteByRouteIdAndProductId(ProRouteProductBom proRouteProductBom); + + } diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProRouteService.java b/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProRouteService.java index 3ae80d6..0bb23e5 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProRouteService.java +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProRouteService.java @@ -27,6 +27,13 @@ public interface IProRouteService */ public List selectProRouteList(ProRoute proRoute); + /** + * 根据物料查找生效的工艺路线 + * @param itemId + * @return + */ + public ProRoute getRouteByProductId(Long itemId); + public String checkRouteCodeUnique(ProRoute proRoute); /** diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProRouteProductBomServiceImpl.java b/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProRouteProductBomServiceImpl.java index a2033e7..9cf655b 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProRouteProductBomServiceImpl.java +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProRouteProductBomServiceImpl.java @@ -5,6 +5,8 @@ import java.util.List; import com.ktg.common.constant.UserConstants; import com.ktg.common.utils.DateUtils; import com.ktg.common.utils.StringUtils; +import com.ktg.mes.pro.domain.ProFeedback; +import com.ktg.mes.wm.domain.WmItemConsume; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ktg.mes.pro.mapper.ProRouteProductBomMapper; diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProRouteServiceImpl.java b/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProRouteServiceImpl.java index 1e125e8..14e195c 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProRouteServiceImpl.java +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProRouteServiceImpl.java @@ -47,6 +47,12 @@ public class ProRouteServiceImpl implements IProRouteService return proRouteMapper.selectProRouteList(proRoute); } + @Override + public ProRoute getRouteByProductId(Long itemId) { + return proRouteMapper.getRouteByProductId(itemId); + } + + @Override public String checkRouteCodeUnique(ProRoute proRoute) { ProRoute route = proRouteMapper.checkRouteCodeUnique(proRoute); diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/domain/tx/ItemConsumeTxBean.java b/ktg-mes/src/main/java/com/ktg/mes/wm/domain/tx/ItemConsumeTxBean.java index 211622f..ba16080 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/wm/domain/tx/ItemConsumeTxBean.java +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/domain/tx/ItemConsumeTxBean.java @@ -66,6 +66,18 @@ public class ItemConsumeTxBean extends BaseEntity { /** 单据行ID */ private Long sourceDocLineId; + + /** 事务数量 */ + private BigDecimal transactionQuantity; + + /** 生产工单ID **/ + private Long workorderId; + + + /** 生产工单编号 **/ + private String workorderCode; + + public Long getMaterialStockId() { return materialStockId; } @@ -250,12 +262,6 @@ public class ItemConsumeTxBean extends BaseEntity { this.workorderCode = workorderCode; } - /** 事务数量 */ - private BigDecimal transactionQuantity; - - /** 生产工单ID **/ - private Long workorderId; - @Override public String toString() { return "ItemConsumeTxBean{" + @@ -285,9 +291,6 @@ public class ItemConsumeTxBean extends BaseEntity { '}'; } - /** 生产工单编号 **/ - private String workorderCode; - } diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/mapper/WmItemConsumeMapper.java b/ktg-mes/src/main/java/com/ktg/mes/wm/mapper/WmItemConsumeMapper.java index c9649c8..c8c8f40 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/wm/mapper/WmItemConsumeMapper.java +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/mapper/WmItemConsumeMapper.java @@ -2,6 +2,7 @@ package com.ktg.mes.wm.mapper; import java.util.List; import com.ktg.mes.wm.domain.WmItemConsume; +import com.ktg.mes.wm.domain.tx.ItemConsumeTxBean; /** * 物料消耗记录Mapper接口 @@ -58,4 +59,6 @@ public interface WmItemConsumeMapper * @return 结果 */ public int deleteWmItemConsumeByRecordIds(Long[] recordIds); + + public List getTxBeans(Long recordId); } diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/mapper/WmProductProduceMapper.java b/ktg-mes/src/main/java/com/ktg/mes/wm/mapper/WmProductProduceMapper.java index 9cdb579..695a121 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/wm/mapper/WmProductProduceMapper.java +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/mapper/WmProductProduceMapper.java @@ -2,6 +2,7 @@ package com.ktg.mes.wm.mapper; import java.util.List; import com.ktg.mes.wm.domain.WmProductProduce; +import com.ktg.mes.wm.domain.tx.ProductProductTxBean; /** * 产品产出记录Mapper接口 @@ -58,4 +59,6 @@ public interface WmProductProduceMapper * @return 结果 */ public int deleteWmProductProduceByRecordIds(Long[] recordIds); + + public List getTxBeans(Long recordId); } diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/service/IStorageCoreService.java b/ktg-mes/src/main/java/com/ktg/mes/wm/service/IStorageCoreService.java index 82fc293..e181d86 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/wm/service/IStorageCoreService.java +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/service/IStorageCoreService.java @@ -33,6 +33,18 @@ public interface IStorageCoreService { */ public void processRtIssue(List lines); + /** + * 处理生产消耗 + * @param lines + */ + public void processItemConsume(List lines); + + /** + * 处理产品产出 + * @param lines + */ + public void processProductProduce(List lines); + /** * 处理产品入库 * @param lines diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/service/IWmItemConsumeService.java b/ktg-mes/src/main/java/com/ktg/mes/wm/service/IWmItemConsumeService.java index b939daf..cc7b7ab 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/wm/service/IWmItemConsumeService.java +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/service/IWmItemConsumeService.java @@ -1,7 +1,10 @@ package com.ktg.mes.wm.service; import java.util.List; + +import com.ktg.mes.pro.domain.ProFeedback; import com.ktg.mes.wm.domain.WmItemConsume; +import com.ktg.mes.wm.domain.tx.ItemConsumeTxBean; /** * 物料消耗记录Service接口 @@ -58,4 +61,13 @@ public interface IWmItemConsumeService * @return 结果 */ public int deleteWmItemConsumeByRecordId(Long recordId); + + /** + * 根据生产报工单生成物料消耗记录 + * @param feedback + * @return + */ + public WmItemConsume generateItemConsume(ProFeedback feedback); + + public List getTxBeans(Long recordId); } diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/service/IWmProductProduceService.java b/ktg-mes/src/main/java/com/ktg/mes/wm/service/IWmProductProduceService.java index ddac418..154a769 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/wm/service/IWmProductProduceService.java +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/service/IWmProductProduceService.java @@ -1,7 +1,10 @@ package com.ktg.mes.wm.service; import java.util.List; + +import com.ktg.mes.pro.domain.ProFeedback; import com.ktg.mes.wm.domain.WmProductProduce; +import com.ktg.mes.wm.domain.tx.ProductProductTxBean; import com.ktg.mes.wm.domain.tx.ProductRecptTxBean; /** @@ -60,6 +63,12 @@ public interface IWmProductProduceService */ public int deleteWmProductProduceByRecordId(Long recordId); + /** + * 根据报工记录生成对应的产品产出记录 + * @param feedback + */ + public WmProductProduce generateProductProduce(ProFeedback feedback); + public List getTxBeans(Long recordId); } diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/WmItemConsumeServiceImpl.java b/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/WmItemConsumeServiceImpl.java index 3524a55..244465d 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/WmItemConsumeServiceImpl.java +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/WmItemConsumeServiceImpl.java @@ -1,7 +1,18 @@ package com.ktg.mes.wm.service.impl; +import java.util.Date; import java.util.List; + +import cn.hutool.core.collection.CollectionUtil; +import com.ktg.common.constant.UserConstants; import com.ktg.common.utils.DateUtils; +import com.ktg.mes.md.domain.MdWorkstation; +import com.ktg.mes.md.mapper.MdWorkstationMapper; +import com.ktg.mes.pro.domain.*; +import com.ktg.mes.pro.mapper.*; +import com.ktg.mes.wm.domain.WmItemConsumeLine; +import com.ktg.mes.wm.domain.tx.ItemConsumeTxBean; +import com.ktg.mes.wm.mapper.WmItemConsumeLineMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ktg.mes.wm.mapper.WmItemConsumeMapper; @@ -20,6 +31,27 @@ public class WmItemConsumeServiceImpl implements IWmItemConsumeService @Autowired private WmItemConsumeMapper wmItemConsumeMapper; + @Autowired + private WmItemConsumeLineMapper wmItemConsumeLineMapper; + + @Autowired + private ProWorkorderMapper proWorkorderMapper; + + @Autowired + private ProTaskMapper proTaskMapper; + + @Autowired + private MdWorkstationMapper mdWorkstationMapper; + + @Autowired + private ProProcessMapper proProcessMapper; + + @Autowired + private ProRouteMapper proRouteMapper; + + @Autowired + private ProRouteProductBomMapper proRouteProductBomMapper; + /** * 查询物料消耗记录 * @@ -93,4 +125,67 @@ public class WmItemConsumeServiceImpl implements IWmItemConsumeService { return wmItemConsumeMapper.deleteWmItemConsumeByRecordId(recordId); } + + + @Override + public WmItemConsume generateItemConsume(ProFeedback feedback) { + ProWorkorder workorder = proWorkorderMapper.selectProWorkorderByWorkorderId(feedback.getWorkorderId()); + MdWorkstation workstation = mdWorkstationMapper.selectMdWorkstationByWorkstationId(feedback.getWorkstationId()); + ProProcess process = proProcessMapper.selectProProcessByProcessId(workstation.getProcessId()); + ProTask task = proTaskMapper.selectProTaskByTaskId(feedback.getTaskId()); + ProRoute route = proRouteMapper.getRouteByProductId(feedback.getItemId()); + + //生成消耗单头信息 + WmItemConsume itemConsume = new WmItemConsume(); + itemConsume.setWorkorderId(feedback.getWorkorderId()); + itemConsume.setWorkorderCode(workorder.getWorkorderCode()); + itemConsume.setWorkorderName(workorder.getWorkorderName()); + + itemConsume.setWorkstationId(feedback.getWorkstationId()); + itemConsume.setWorkstationCode(workstation.getWorkstationCode()); + itemConsume.setWorkstationName(workstation.getWorkstationName()); + + itemConsume.setTaskId(feedback.getTaskId()); + itemConsume.setTaskCode(task.getTaskCode()); + itemConsume.setTaskName(task.getTaskName()); + + itemConsume.setProcessId(process.getProcessId()); + itemConsume.setProcessCode(process.getProcessCode()); + itemConsume.setProcessName(process.getProcessName()); + + itemConsume.setConsumeDate(new Date()); + itemConsume.setStatus(UserConstants.ORDER_STATUS_PREPARE); + wmItemConsumeMapper.insertWmItemConsume(itemConsume); + + //生成行信息 + //先获取当前生产的产品在此道工序中配置的物料BOM + ProRouteProductBom param = new ProRouteProductBom(); + param.setProductId(feedback.getItemId()); + param.setRouteId(route.getRouteId()); + List boms = proRouteProductBomMapper.selectProRouteProductBomList(param); + if(CollectionUtil.isNotEmpty(boms)){ + for (ProRouteProductBom bom: boms + ) { + WmItemConsumeLine line = new WmItemConsumeLine(); + line.setRecordId(itemConsume.getRecordId()); + line.setItemId(bom.getItemId()); + line.setItemCode(bom.getItemCode()); + line.setItemName(bom.getItemName()); + line.setSpecification(bom.getSpecification()); + line.setUnitOfMeasure(bom.getUnitOfMeasure()); + line.setQuantityConsume(bom.getQuantity().multiply(feedback.getQuantity())); + line.setBatchCode(workorder.getBatchCode()); + wmItemConsumeLineMapper.insertWmItemConsumeLine(line); + } + }else { + return null; //如果本道工序没有配置BOM物料,则直接返回空 + } + + return itemConsume; + } + + @Override + public List getTxBeans(Long recordId) { + return wmItemConsumeMapper.getTxBeans(recordId); + } } diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/WmProductProduceServiceImpl.java b/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/WmProductProduceServiceImpl.java index 02404ae..9975050 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/WmProductProduceServiceImpl.java +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/WmProductProduceServiceImpl.java @@ -1,7 +1,22 @@ package com.ktg.mes.wm.service.impl; +import java.util.Date; import java.util.List; + +import com.ktg.common.constant.UserConstants; import com.ktg.common.utils.DateUtils; +import com.ktg.mes.md.domain.MdWorkstation; +import com.ktg.mes.md.mapper.MdWorkstationMapper; +import com.ktg.mes.pro.domain.ProFeedback; +import com.ktg.mes.pro.domain.ProProcess; +import com.ktg.mes.pro.domain.ProTask; +import com.ktg.mes.pro.domain.ProWorkorder; +import com.ktg.mes.pro.mapper.ProProcessMapper; +import com.ktg.mes.pro.mapper.ProTaskMapper; +import com.ktg.mes.pro.mapper.ProWorkorderMapper; +import com.ktg.mes.wm.domain.WmProductProduceLine; +import com.ktg.mes.wm.domain.tx.ProductProductTxBean; +import com.ktg.mes.wm.mapper.WmProductProduceLineMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ktg.mes.wm.mapper.WmProductProduceMapper; @@ -20,6 +35,21 @@ public class WmProductProduceServiceImpl implements IWmProductProduceService @Autowired private WmProductProduceMapper wmProductProduceMapper; + @Autowired + private WmProductProduceLineMapper wmProductProduceLineMapper; + + @Autowired + private ProWorkorderMapper proWorkorderMapper; + + @Autowired + private ProTaskMapper proTaskMapper; + + @Autowired + private MdWorkstationMapper mdWorkstationMapper; + + @Autowired + private ProProcessMapper proProcessMapper; + /** * 查询产品产出记录 * @@ -93,4 +123,53 @@ public class WmProductProduceServiceImpl implements IWmProductProduceService { return wmProductProduceMapper.deleteWmProductProduceByRecordId(recordId); } + + @Override + public WmProductProduce generateProductProduce(ProFeedback feedback) { + ProWorkorder workorder = proWorkorderMapper.selectProWorkorderByWorkorderId(feedback.getWorkorderId()); + MdWorkstation workstation = mdWorkstationMapper.selectMdWorkstationByWorkstationId(feedback.getWorkstationId()); + ProProcess process = proProcessMapper.selectProProcessByProcessId(workstation.getProcessId()); + ProTask task = proTaskMapper.selectProTaskByTaskId(feedback.getTaskId()); + //生成单据头信息 + WmProductProduce productProduce = new WmProductProduce(); + productProduce.setWorkorderId(feedback.getWorkorderId()); + productProduce.setWorkorderCode(feedback.getWorkorderCode()); + productProduce.setWorkorderName(feedback.getWorkorderName()); + + productProduce.setTaskId(feedback.getTaskId()); + productProduce.setTaskCode(task.getTaskCode()); + productProduce.setTaskName(task.getTaskName()); + + productProduce.setWorkstationId(feedback.getWorkstationId()); + productProduce.setWorkstationCode(workstation.getWorkstationCode()); + productProduce.setWorkstationName(workstation.getWorkstationName()); + + productProduce.setProcessId(process.getProcessId()); + productProduce.setProcessCode(process.getProcessCode()); + productProduce.setProcessName(process.getProcessName()); + + productProduce.setProduceDate(new Date()); + productProduce.setStatus(UserConstants.ORDER_STATUS_PREPARE); + wmProductProduceMapper.insertWmProductProduce(productProduce); + + //生成单据行信息; 以后如果是在生产过程中产生多种副产品可以在这里添加更多的行信息进行支持 + WmProductProduceLine line = new WmProductProduceLine(); + line.setRecordId(productProduce.getRecordId()); + line.setItemId(feedback.getItemId()); + line.setItemCode(feedback.getItemCode()); + line.setItemName(feedback.getItemName()); + line.setSpecification(feedback.getSpecification()); + line.setUnitOfMeasure(feedback.getUnitOfMeasure()); + line.setQuantityProduce(feedback.getQuantity()); + line.setBatchCode(workorder.getBatchCode()); + wmProductProduceLineMapper.insertWmProductProduceLine(line); + return productProduce; + } + + @Override + public List getTxBeans(Long recordId) { + return wmProductProduceMapper.getTxBeans(recordId); + } + + } diff --git a/ktg-mes/src/main/resources/mapper/pro/ProRouteMapper.xml b/ktg-mes/src/main/resources/mapper/pro/ProRouteMapper.xml index 03ee793..77dc4ba 100644 --- a/ktg-mes/src/main/resources/mapper/pro/ProRouteMapper.xml +++ b/ktg-mes/src/main/resources/mapper/pro/ProRouteMapper.xml @@ -40,6 +40,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where route_id = #{routeId} + + - + + + insert into wm_item_consume diff --git a/ktg-mes/src/main/resources/mapper/wm/WmProductProduceMapper.xml b/ktg-mes/src/main/resources/mapper/wm/WmProductProduceMapper.xml index 63ac700..e66e2bb 100644 --- a/ktg-mes/src/main/resources/mapper/wm/WmProductProduceMapper.xml +++ b/ktg-mes/src/main/resources/mapper/wm/WmProductProduceMapper.xml @@ -31,6 +31,35 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select record_id, workorder_id, workorder_code, workorder_name, task_id, task_code, task_name, workstation_id, workstation_code, workstation_name, process_id, process_code, process_name, produce_date, status, remark, attr1, attr2, attr3, attr4, create_by, create_time, update_by, update_time from wm_product_produce @@ -59,7 +88,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where record_id = #{recordId} - + + + insert into wm_product_produce