diff --git a/ktg-common/src/main/java/com/ktg/common/constant/UserConstants.java b/ktg-common/src/main/java/com/ktg/common/constant/UserConstants.java index 92b7778..907d539 100644 --- a/ktg-common/src/main/java/com/ktg/common/constant/UserConstants.java +++ b/ktg-common/src/main/java/com/ktg/common/constant/UserConstants.java @@ -152,5 +152,10 @@ public class UserConstants public static final String CAL_QUERY_BY_TEAM="TEAM"; public static final String CAL_QUERY_BY_USER="USER"; + /** + * 生产投料单据的类型 + */ + public static final String TASK_ISSUE_DOC_TYPE_ISSUE="ISSUE"; //领料单 + public static final String TASK_ISSUE_DOC_TYPE_TRANS="TRANS"; //流转单 } diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/controller/ProTaskIssueMobController.java b/ktg-mes/src/main/java/com/ktg/mes/pro/controller/ProTaskIssueMobController.java new file mode 100644 index 0000000..e45561f --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/controller/ProTaskIssueMobController.java @@ -0,0 +1,145 @@ +package com.ktg.mes.pro.controller; + +import cn.hutool.core.collection.CollUtil; +import com.ktg.common.annotation.Log; +import com.ktg.common.constant.UserConstants; +import com.ktg.common.core.controller.BaseController; +import com.ktg.common.core.domain.AjaxResult; +import com.ktg.common.enums.BusinessType; +import com.ktg.common.utils.StringUtils; +import com.ktg.mes.pro.domain.ProTaskIssue; +import com.ktg.mes.pro.service.IProTaskIssueService; +import com.ktg.mes.wm.domain.WmIssueHeader; +import com.ktg.mes.wm.domain.WmIssueLine; +import com.ktg.mes.wm.service.IWmIssueHeaderService; +import com.ktg.mes.wm.service.IWmIssueLineService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import java.math.BigDecimal; +import java.util.List; + +@RestController +@RequestMapping("/mobile/pro/taskissue") +public class ProTaskIssueMobController extends BaseController { + + @Autowired + private IProTaskIssueService proTaskIssueService; + + @Autowired + private IWmIssueHeaderService wmIssueHeaderService; + + @Autowired + private IWmIssueLineService wmIssueLineService; + + /** + * 查询当前工作站、当前任务的投料清单 + */ + @PreAuthorize("@ss.hasPermi('mes:pro:taskissue:list')") + @GetMapping("/getIssueList") + public AjaxResult getIssueList(ProTaskIssue proTaskIssue) { + List list = proTaskIssueService.selectProTaskIssueList(proTaskIssue); + return AjaxResult.success(list); + } + + /** + * 查询当前工作站、当前任务可用的的领料清单 + * 如果某个领料单是领出到当前工作站或者当前任务的,则可以查询到 + */ + @PreAuthorize("@ss.hasPermi('mes:pro:taskissue:list')") + @GetMapping("/getIssueList") + public AjaxResult getReserveIssueList(ProTaskIssue proTaskIssue){ + WmIssueHeader param = new WmIssueHeader(); + //领料单上指定了工作站 + if(StringUtils.isNotNull(proTaskIssue.getWorkstationId())){ + param.setWorkstationId(proTaskIssue.getWorkstationId()); + } + + //领料单上指定了生产工单 + if(StringUtils.isNotNull(proTaskIssue.getWorkorderId())){ + param.setWorkorderId(proTaskIssue.getWorkorderId()); + } + + //领料单上指定了生产任务 + if(StringUtils.isNotNull(proTaskIssue.getTaskId())){ + param.setTaskId(proTaskIssue.getTaskId()); + } + + List issueList = wmIssueHeaderService.selectWmIssueHeaderList(param); + + return AjaxResult.success(issueList); + } + + /** + * 通过新增或者扫码的方式添加某个流转单或者领料单到当前工作站、当前任务的投料清单中 + * 此接口只支持一次性添加一行物料。如果要添加整个领料单,则可在领料单上指定工作站和任务;或者使用addIssue接口 + */ + @PreAuthorize("@ss.hasPermi('mes:pro:taskissue:add')") + @Log(title = "生产任务投料", businessType = BusinessType.INSERT) + @PostMapping("/add") + public AjaxResult add(@RequestBody ProTaskIssue proTaskIssue) + { + //不能重复添加 + if(UserConstants.NOT_UNIQUE.equals(proTaskIssueService.checkUnique(proTaskIssue))){ + return AjaxResult.error("物料已添加过"); + } + return toAjax(proTaskIssueService.insertProTaskIssue(proTaskIssue)); + } + + + /** + * 通过新增或者扫码的方式添加某个流转单或者领料单到当前工作站、当前任务的投料清单中 + * 此接口专门用于一次性添加整个领料单的场景,传递的proTaskIssue参数需要source_doc_id为对应的领料单头ID + */ + @PreAuthorize("@ss.hasPermi('mes:pro:taskissue:add')") + @Log(title = "生产任务投料", businessType = BusinessType.INSERT) + @PostMapping("/addIssue") + public AjaxResult addIssue(@RequestBody ProTaskIssue proTaskIssue) + { + if(!UserConstants.TASK_ISSUE_DOC_TYPE_ISSUE.equals(proTaskIssue.getSourceDocType())){ + return AjaxResult.error("请选择或扫描生产领料单!");//这里只支持添加整个领料单 + } + Long issueId = proTaskIssue.getSourceDocId(); + + WmIssueLine param = new WmIssueLine(); + param.setIssueId(issueId); + List issueLines = wmIssueLineService.selectWmIssueLineList(param); + + if(CollUtil.isEmpty(issueLines)){ + return AjaxResult.error("领料单行为空"); + } + + for (WmIssueLine line: issueLines + ) { + ProTaskIssue taskIssue = new ProTaskIssue(); + taskIssue.setTaskId(proTaskIssue.getTaskId()); + taskIssue.setWorkstationId(proTaskIssue.getWorkstationId()); + taskIssue.setWorkorderId(proTaskIssue.getWorkorderId()); + taskIssue.setSourceDocType(UserConstants.TASK_ISSUE_DOC_TYPE_ISSUE); + taskIssue.setSourceDocId(issueId); + //taskIssue.setSourceDocCode(); //领料单编号先不设置,需要的时候关联查询即可 + taskIssue.setBatchCode(line.getBatchCode()); + taskIssue.setSourceLineId(line.getLineId()); + taskIssue.setItemId(line.getItemId()); + taskIssue.setItemCode(line.getItemCode()); + taskIssue.setItemName(line.getItemName()); + taskIssue.setSpecification(line.getSpecification()); + taskIssue.setUnitOfMeasure(line.getUnitOfMeasure()); + taskIssue.setQuantityIssued(line.getQuantityIssued()); + //taskIssue.setQuantityAvailable(); //可用数量,如果需要则要实时计算 + taskIssue.setQuantityUsed(new BigDecimal(0)); //新添加的都默认为0;添加后删除再次添加也是0;实际使用量应该根据流转单计算 + + //不能重复添加 + if(UserConstants.NOT_UNIQUE.equals(proTaskIssueService.checkUnique(taskIssue))){ + return AjaxResult.error("物料已添加过"); + } + proTaskIssueService.insertProTaskIssue(taskIssue); + } + + return AjaxResult.success(); + } + + + +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/mapper/ProTaskIssueMapper.java b/ktg-mes/src/main/java/com/ktg/mes/pro/mapper/ProTaskIssueMapper.java index d73f793..0b27c1c 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/pro/mapper/ProTaskIssueMapper.java +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/mapper/ProTaskIssueMapper.java @@ -27,6 +27,8 @@ public interface ProTaskIssueMapper */ public List selectProTaskIssueList(ProTaskIssue proTaskIssue); + public ProTaskIssue checkUnique(ProTaskIssue proTaskIssue); + /** * 新增生产任务投料 * diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProTaskIssueService.java b/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProTaskIssueService.java index be73887..3110284 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProTaskIssueService.java +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProTaskIssueService.java @@ -27,6 +27,8 @@ public interface IProTaskIssueService */ public List selectProTaskIssueList(ProTaskIssue proTaskIssue); + public String checkUnique(ProTaskIssue proTaskIssue); + /** * 新增生产任务投料 * diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProTaskIssueServiceImpl.java b/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProTaskIssueServiceImpl.java index efc2185..43ec8b4 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProTaskIssueServiceImpl.java +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProTaskIssueServiceImpl.java @@ -1,7 +1,11 @@ package com.ktg.mes.pro.service.impl; import java.util.List; + +import com.ktg.common.constant.UserConstants; import com.ktg.common.utils.DateUtils; +import com.ktg.common.utils.StringUtils; +import org.apache.catalina.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ktg.mes.pro.mapper.ProTaskIssueMapper; @@ -44,6 +48,15 @@ public class ProTaskIssueServiceImpl implements IProTaskIssueService return proTaskIssueMapper.selectProTaskIssueList(proTaskIssue); } + @Override + public String checkUnique(ProTaskIssue proTaskIssue) { + ProTaskIssue taskIssue = proTaskIssueMapper.checkUnique(proTaskIssue); + if(StringUtils.isNotNull(taskIssue)){ + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + /** * 新增生产任务投料 * diff --git a/ktg-mes/src/main/resources/mapper/pro/ProTaskIssueMapper.xml b/ktg-mes/src/main/resources/mapper/pro/ProTaskIssueMapper.xml index 2f8600e..bda65bc 100644 --- a/ktg-mes/src/main/resources/mapper/pro/ProTaskIssueMapper.xml +++ b/ktg-mes/src/main/resources/mapper/pro/ProTaskIssueMapper.xml @@ -63,7 +63,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where record_id = #{recordId} - + + + insert into pro_task_issue