diff --git a/doc/设计文档/数据库设计/mes-pro.sql b/doc/设计文档/数据库设计/mes-pro.sql index 4775fec..2940f32 100644 --- a/doc/设计文档/数据库设计/mes-pro.sql +++ b/doc/设计文档/数据库设计/mes-pro.sql @@ -516,7 +516,7 @@ create table pro_andon_record ( workstation_name varchar(125) comment '工作站名称', user_id bigint(20) not null comment '用户ID', user_name varchar(64) comment '用户名', - nick_name bigint(125) comment '名称', + nick_name varchar(125) comment '名称', workorder_id bigint(20) comment '生产工单ID', workorder_code varchar(64) comment '生产工单编号', workorder_name varchar(255) comment '生产工单名称', 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 59ebf94..ea149d8 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 @@ -238,6 +238,11 @@ public class ProFeedbackController extends BaseController return AjaxResult.error("当前生产工单的状态为已完成,不能继续报工,请刷新生产任务列表!"); } + //仍旧有待检数量时不能执行 + if(StringUtils.isNotNull(feedback.getQuantityUncheck()) && feedback.getQuantityUncheck().compareTo(BigDecimal.ZERO) >0){ + return AjaxResult.error("当前报工单未完成检验(待检数量大于0),无法执行报工!"); + } + //更新生产任务的生产数量 BigDecimal quantityProduced,quantityQuanlify,quantityUnquanlify; quantityQuanlify = task.getQuantityQuanlify()==null? new BigDecimal(0):task.getQuantityQuanlify(); diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/controller/ProTaskController.java b/ktg-mes/src/main/java/com/ktg/mes/pro/controller/ProTaskController.java index f15456c..b49270d 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/pro/controller/ProTaskController.java +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/controller/ProTaskController.java @@ -10,6 +10,7 @@ import com.ktg.common.constant.UserConstants; import com.ktg.common.utils.StringUtils; import com.ktg.mes.pro.domain.*; import com.ktg.mes.pro.service.IProProcessService; +import com.ktg.mes.pro.service.IProRouteService; import com.ktg.mes.pro.service.IProWorkorderService; import com.ktg.system.strategy.AutoCodeUtil; import org.springframework.security.access.prepost.PreAuthorize; @@ -49,6 +50,9 @@ public class ProTaskController extends BaseController @Autowired private IProProcessService proProcessService; + @Autowired + private IProRouteService proRouteService; + @Autowired private AutoCodeUtil autoCodeUtil; @@ -192,11 +196,26 @@ public class ProTaskController extends BaseController proTask.setClientCode(order.getClientCode()); proTask.setClientName(order.getClientName()); + //工艺信息 + if(StringUtils.isNotNull(proTask.getRouteId())){ + ProRoute route = proRouteService.selectProRouteByRouteId(proTask.getRouteId()); + if(StringUtils.isNotNull(route)){ + proTask.setRouteCode(route.getRouteCode()); + }else { + return AjaxResult.error("当前生产任务对应的工艺路线信息无效!"+proTask.getRouteId()); + } + } + //工序信息 ProProcess process = proProcessService.selectProProcessByProcessId(proTask.getProcessId()); - proTask.setProcessId(process.getProcessId()); - proTask.setProcessCode(process.getProcessCode()); - proTask.setProcessName(process.getProcessName()); + if(StringUtils.isNotNull(process)){ + proTask.setProcessId(process.getProcessId()); + proTask.setProcessCode(process.getProcessCode()); + proTask.setProcessName(process.getProcessName()); + }else{ + return AjaxResult.error("当前生产任务对应的工序信息无效!"+proTask.getProcessId()); + } + //自动生成任务编号和名称 proTask.setTaskCode(autoCodeUtil.genSerialCode(UserConstants.TASK_CODE,null)); @@ -219,6 +238,47 @@ public class ProTaskController extends BaseController return AjaxResult.error("排产数量必须大于0!"); } + if(!StringUtils.isNotNull(proTask.getWorkstationId())){ + return AjaxResult.error("请选择工作站!"); + } + + if(proTask.getDuration()<=0){ + return AjaxResult.error("生产时长必须大于0!"); + } + + //生产工单 + ProWorkorder order = proWorkorderService.selectProWorkorderByWorkorderId(proTask.getWorkorderId()); + proTask.setWorkorderCode(order.getWorkorderCode()); + proTask.setWorkorderName(order.getWorkorderName()); + proTask.setItemId(order.getProductId()); + proTask.setItemCode(order.getProductCode()); + proTask.setItemName(order.getProductName()); + proTask.setSpecification(order.getProductSpc()); + proTask.setUnitOfMeasure(order.getUnitOfMeasure()); + proTask.setClientId(order.getClientId()); + proTask.setClientCode(order.getClientCode()); + proTask.setClientName(order.getClientName()); + + //工艺信息 + if(StringUtils.isNotNull(proTask.getRouteId())){ + ProRoute route = proRouteService.selectProRouteByRouteId(proTask.getRouteId()); + if(StringUtils.isNotNull(route)){ + proTask.setRouteCode(route.getRouteCode()); + }else { + return AjaxResult.error("当前生产任务对应的工艺路线信息无效!"+proTask.getRouteId()); + } + } + + //工序信息 + ProProcess process = proProcessService.selectProProcessByProcessId(proTask.getProcessId()); + if(StringUtils.isNotNull(process)){ + proTask.setProcessId(process.getProcessId()); + proTask.setProcessCode(process.getProcessCode()); + proTask.setProcessName(process.getProcessName()); + }else{ + return AjaxResult.error("当前生产任务对应的工序信息无效!"+proTask.getProcessId()); + } + return toAjax(proTaskService.updateProTask(proTask)); } diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/controller/WmRtIssueLineController.java b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/WmRtIssueLineController.java index 59ca5ec..d869df5 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/wm/controller/WmRtIssueLineController.java +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/WmRtIssueLineController.java @@ -94,6 +94,10 @@ public class WmRtIssueLineController extends BaseController @PostMapping public AjaxResult add(@RequestBody WmRtIssueLine wmRtIssueLine) { + if(!StringUtils.isNotNull(wmRtIssueLine.getMaterialStockId())){ + return AjaxResult.error("请从库存现有量中选择退料的物资!"); + } + if(StringUtils.isNotNull(wmRtIssueLine.getWarehouseId())){ WmWarehouse warehouse = wmWarehouseService.selectWmWarehouseByWarehouseId(wmRtIssueLine.getWarehouseId()); wmRtIssueLine.setWarehouseCode(warehouse.getWarehouseCode()); diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/controller/WmSnController.java b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/WmSnController.java index 146aa94..6a755a1 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/wm/controller/WmSnController.java +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/WmSnController.java @@ -9,6 +9,7 @@ import com.ktg.common.constant.UserConstants; import com.ktg.system.strategy.AutoCodeUtil; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; @@ -94,6 +95,7 @@ public class WmSnController extends BaseController */ @PreAuthorize("@ss.hasPermi('mes:wm:sn:add')") @Log(title = "SN码", businessType = BusinessType.INSERT) + @Transactional @PostMapping public AjaxResult add(@RequestBody WmSn wmSn) { diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/mapper/WmMaterialStockMapper.java b/ktg-mes/src/main/java/com/ktg/mes/wm/mapper/WmMaterialStockMapper.java index b49ed0c..02c27e2 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/wm/mapper/WmMaterialStockMapper.java +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/mapper/WmMaterialStockMapper.java @@ -31,6 +31,14 @@ public interface WmMaterialStockMapper */ public List selectWmMaterialStockList(WmMaterialStock wmMaterialStock); + /** + * 模糊查询库存记录列表 + * + * @param wmMaterialStock 库存记录 + * @return 库存记录集合 + */ + public List queryWmMaterialStockList(WmMaterialStock wmMaterialStock); + /** * 新增库存记录 * diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/service/IWmMaterialStockService.java b/ktg-mes/src/main/java/com/ktg/mes/wm/service/IWmMaterialStockService.java index 40e0415..c905520 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/wm/service/IWmMaterialStockService.java +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/service/IWmMaterialStockService.java @@ -30,6 +30,16 @@ public interface IWmMaterialStockService */ public List selectWmMaterialStockList(WmMaterialStock wmMaterialStock); + + /** + * 模糊查询库存记录列表 + * + * @param wmMaterialStock 库存记录 + * @return 库存记录集合 + */ + public List queryWmMaterialStockList(WmMaterialStock wmMaterialStock); + + /** * 新增库存记录 * diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/WmMaterialStockServiceImpl.java b/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/WmMaterialStockServiceImpl.java index 60d1036..cc695e0 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/WmMaterialStockServiceImpl.java +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/WmMaterialStockServiceImpl.java @@ -46,6 +46,11 @@ public class WmMaterialStockServiceImpl implements IWmMaterialStockService return wmMaterialStockMapper.selectWmMaterialStockList(wmMaterialStock); } + @Override + public List queryWmMaterialStockList(WmMaterialStock wmMaterialStock) { + return wmMaterialStockMapper.queryWmMaterialStockList(wmMaterialStock); + } + /** * 新增库存记录 * diff --git a/ktg-mes/src/main/resources/mapper/pro/ProFeedbackMapper.xml b/ktg-mes/src/main/resources/mapper/pro/ProFeedbackMapper.xml index a895684..3abd340 100644 --- a/ktg-mes/src/main/resources/mapper/pro/ProFeedbackMapper.xml +++ b/ktg-mes/src/main/resources/mapper/pro/ProFeedbackMapper.xml @@ -51,7 +51,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select f.record_id,f.feedback_type, f.workstation_id, f.workstation_code, f.workstation_name,f.process_id, f.process_code, f.process_name,p.is_check, f.workorder_id, f.workorder_code, f.workorder_name, f.task_id, f.task_code,f.item_id,f.item_code,f.item_name,f.specification,f.unit_of_measure, f.quantity, f.quantity_feedback, f.quantity_qualified, f.quantity_unquanlified,f.quantity_uncheck, f.user_name, f.nick_name, f.feedback_channel, f.feedback_time,f.record_user,f.record_nick,f.status, f.remark, f.attr1, f.attr2, f.attr3, f.attr4, f.create_by, f.create_time, f.update_by, f.update_time + select f.record_id,f.feedback_type, f.workstation_id, f.workstation_code, f.workstation_name,f.route_id,f.route_code, f.process_id, f.process_code, f.process_name,p.is_check, f.workorder_id, f.workorder_code, f.workorder_name, f.task_id, f.task_code,f.item_id,f.item_code,f.item_name,f.specification,f.unit_of_measure, f.quantity, f.quantity_feedback, f.quantity_qualified, f.quantity_unquanlified,f.quantity_uncheck, f.user_name, f.nick_name, f.feedback_channel, f.feedback_time,f.record_user,f.record_nick,f.status, f.remark, f.attr1, f.attr2, f.attr3, f.attr4, f.create_by, f.create_time, f.update_by, f.update_time from pro_feedback f left join pro_route_process p on f.process_id = p.process_id and f.route_id = p.route_id @@ -96,7 +96,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" @@ -107,6 +107,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" workstation_id, workstation_code, workstation_name, + route_id, + route_code, process_id, process_code, process_name, @@ -148,6 +150,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{workstationId}, #{workstationCode}, #{workstationName}, + #{routeId}, + #{routeCode}, #{processId}, #{processCode}, #{processName}, @@ -193,6 +197,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" workstation_id = #{workstationId}, workstation_code = #{workstationCode}, workstation_name = #{workstationName}, + route_id = #{routeId}, + route_code = #{routeCode}, process_id = #{processId}, process_code = #{processCode}, process_name = #{processName}, diff --git a/ktg-mes/src/main/resources/mapper/pro/ProTaskMapper.xml b/ktg-mes/src/main/resources/mapper/pro/ProTaskMapper.xml index fbc43f8..e712b70 100644 --- a/ktg-mes/src/main/resources/mapper/pro/ProTaskMapper.xml +++ b/ktg-mes/src/main/resources/mapper/pro/ProTaskMapper.xml @@ -14,6 +14,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + diff --git a/ktg-mes/src/main/resources/mapper/wm/WmMaterialStockMapper.xml b/ktg-mes/src/main/resources/mapper/wm/WmMaterialStockMapper.xml index 522b772..769cbee 100644 --- a/ktg-mes/src/main/resources/mapper/wm/WmMaterialStockMapper.xml +++ b/ktg-mes/src/main/resources/mapper/wm/WmMaterialStockMapper.xml @@ -71,7 +71,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and quantity_onhand = #{quantityOnhand} and recpt_date = #{recptDate} and workorder_id = #{workorderId} - and workorder_code = #{workorderCode} + and workorder_code = #{workorderCode} and expire_date = #{expireDate} and attr1 = #{attr1} and attr2 = #{attr2} @@ -81,6 +81,43 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" order by recpt_date asc + +