From 67f59a344c432ffc81acacf3603911ee45d26545 Mon Sep 17 00:00:00 2001 From: xs Date: Sun, 4 Aug 2024 11:59:42 +0800 Subject: [PATCH] =?UTF-8?q?2.8.4=20PDA:=201=E3=80=81=E7=BB=84=E8=A3=85?= =?UTF-8?q?=E5=87=BA=E5=BA=93=EF=BC=8C=E5=BC=80=E5=A7=8B=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E8=AE=A1=E5=88=92=E6=98=8E=E7=BB=86=202=E3=80=81=E7=94=9F?= =?UTF-8?q?=E4=BA=A7=E5=85=A5=E5=BA=93=EF=BC=8C=E7=BB=93=E6=9D=9F=E7=94=9F?= =?UTF-8?q?=E4=BA=A7=E8=AE=A1=E5=88=92=E6=98=8E=E7=BB=86=EF=BC=8C=E5=B9=B6?= =?UTF-8?q?=E5=88=A4=E6=96=AD=E6=9B=B4=E6=96=B0=E5=B7=A5=E5=8D=95=E7=8A=B6?= =?UTF-8?q?=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/hw/mes/api/RemoteMesService.java | 24 +++ .../hw/mes/api/domain/MesBaseBarcodeInfo.java | 2 + .../hw/mes/api/domain/MesBaseProcessInfo.java | 23 ++ .../api/domain/vo/MesPdaProductPlanVo.java | 23 ++ .../api/factory/RemoteMesFallbackFactory.java | 11 + .../hw/common/core/constant/MesConstants.java | 10 +- .../MesBaseProcessInfoController.java | 2 + .../controller/MesProductPlanController.java | 104 ++++++--- .../hw/mes/domain/MesProductPlanDetail.java | 3 +- .../mapper/MesProductPlanDetailMapper.java | 8 + .../service/IMesProductPlanDetailService.java | 3 + .../impl/MesBaseBarcodeInfoServiceImpl.java | 4 + .../impl/MesProductPlanDetailServiceImpl.java | 199 +++++++++++++----- .../mapper/mes/MesBaseProcessInfoMapper.xml | 5 + .../mapper/mes/MesProductPlanDetailMapper.xml | 9 + .../mapper/mes/MesProductPlanMapper.xml | 1 + .../impl/WmsProductInstockServiceImpl.java | 20 +- .../impl/WmsRawOutstockServiceImpl.java | 18 +- 18 files changed, 373 insertions(+), 96 deletions(-) create mode 100644 hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/vo/MesPdaProductPlanVo.java diff --git a/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/RemoteMesService.java b/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/RemoteMesService.java index 0f858187..0e4c769c 100644 --- a/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/RemoteMesService.java +++ b/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/RemoteMesService.java @@ -8,6 +8,7 @@ import com.hw.mes.api.domain.MesBaseMaterialInfo; import com.hw.mes.api.domain.MesBaseProcessInfo; import com.hw.mes.api.domain.MesBaseStationInfo; import com.hw.mes.api.domain.vo.MesBaseMaterialInfoVo; +import com.hw.mes.api.domain.vo.MesPdaProductPlanVo; import com.hw.mes.api.factory.RemoteMesFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.*; @@ -69,4 +70,27 @@ public interface RemoteMesService { */ @GetMapping("/processInfo/getProcesses") public R> getProcesses(@RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + + + /** + * 开始5楼组装工序 + * + * @param mesPdaProductPlanVo + * @param source 请求来源 + * @return 结果 + */ + @PostMapping("/productplan/start5thFloorInstall") + public R start5thFloorInstall(@RequestBody MesPdaProductPlanVo mesPdaProductPlanVo, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + /** + * 开始5楼组装工序 + * + * @param mesPdaProductPlanVo + * @param source 请求来源 + * @return 结果 + */ + @PostMapping("/productplan/complete5thFloorInstall") + public R complete5thFloorInstall(@RequestBody MesPdaProductPlanVo mesPdaProductPlanVo, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + } diff --git a/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesBaseBarcodeInfo.java b/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesBaseBarcodeInfo.java index 29fb2a6f..37a22b55 100644 --- a/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesBaseBarcodeInfo.java +++ b/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesBaseBarcodeInfo.java @@ -14,6 +14,8 @@ import com.hw.common.core.web.domain.BaseEntity; * @author xins * @date 2024-01-15 */ + + public class MesBaseBarcodeInfo extends BaseEntity { private static final long serialVersionUID = 1L; diff --git a/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesBaseProcessInfo.java b/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesBaseProcessInfo.java index 898353cf..3d3d27cd 100644 --- a/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesBaseProcessInfo.java +++ b/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesBaseProcessInfo.java @@ -51,6 +51,11 @@ public class MesBaseProcessInfo extends BaseEntity { @Excel(name = "标准工时(分钟)工序所在楼层") private Integer processFloor; + private String finalProcessFlag; + + private String displayFlag; + + /** * 激活标识 */ @@ -59,6 +64,7 @@ public class MesBaseProcessInfo extends BaseEntity { private Long processOrder; + /** * 工序关联产线信息 */ @@ -123,6 +129,22 @@ public class MesBaseProcessInfo extends BaseEntity { this.processFloor = processFloor; } + public String getFinalProcessFlag() { + return finalProcessFlag; + } + + public void setFinalProcessFlag(String finalProcessFlag) { + this.finalProcessFlag = finalProcessFlag; + } + + public String getDisplayFlag() { + return displayFlag; + } + + public void setDisplayFlag(String displayFlag) { + this.displayFlag = displayFlag; + } + public void setActiveFlag(String activeFlag) { this.activeFlag = activeFlag; } @@ -147,6 +169,7 @@ public class MesBaseProcessInfo extends BaseEntity { this.processOrder = processOrder; } + @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) diff --git a/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/vo/MesPdaProductPlanVo.java b/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/vo/MesPdaProductPlanVo.java new file mode 100644 index 00000000..001589da --- /dev/null +++ b/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/vo/MesPdaProductPlanVo.java @@ -0,0 +1,23 @@ +package com.hw.mes.api.domain.vo; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Description: PDA生产派工VO + * @ClassName: MesPdaProductPlanVo + * @Author : xins + * @Date :2024-08-03 17:18 + * @Version :1.0 + */ + + + +@Data +public class MesPdaProductPlanVo { + + //物料条码 + @NotBlank(message="material barcode cannot be empty") + private String materialBarcode; +} diff --git a/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/factory/RemoteMesFallbackFactory.java b/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/factory/RemoteMesFallbackFactory.java index 5b9c3aa2..feb889f2 100644 --- a/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/factory/RemoteMesFallbackFactory.java +++ b/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/factory/RemoteMesFallbackFactory.java @@ -7,6 +7,7 @@ import com.hw.mes.api.domain.MesBaseMaterialInfo; import com.hw.mes.api.domain.MesBaseProcessInfo; import com.hw.mes.api.domain.MesBaseStationInfo; import com.hw.mes.api.domain.vo.MesBaseMaterialInfoVo; +import com.hw.mes.api.domain.vo.MesPdaProductPlanVo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.cloud.openfeign.FallbackFactory; @@ -51,6 +52,16 @@ public class RemoteMesFallbackFactory implements FallbackFactory> getProcesses(String source) { return R.fail("获取工序列表信息失败:" + throwable.getMessage()); } + + @Override + public R start5thFloorInstall(MesPdaProductPlanVo mesPdaProductPlanVo, String source) { + return R.fail("开始五楼组装工序失败:" + throwable.getMessage()); + } + + @Override + public R complete5thFloorInstall(MesPdaProductPlanVo mesPdaProductPlanVo, String source) { + return R.fail("完成五楼组装工序失败:" + throwable.getMessage()); + } }; } } diff --git a/hw-common/hw-common-core/src/main/java/com/hw/common/core/constant/MesConstants.java b/hw-common/hw-common-core/src/main/java/com/hw/common/core/constant/MesConstants.java index 25e47c34..33971a30 100644 --- a/hw-common/hw-common-core/src/main/java/com/hw/common/core/constant/MesConstants.java +++ b/hw-common/hw-common-core/src/main/java/com/hw/common/core/constant/MesConstants.java @@ -141,8 +141,8 @@ public class MesConstants { /** * 生产派工开始类型 */ - public static final String MES_START_TYPE_FIFTH_FLOOR_ASSEMBLE = "1";//五楼装配工位 - + public static final String MES_START_TYPE_FIFTH_FLOOR_ASSEMBLE = "1";//五楼装配工序 + public static final String MES_START_TYPE_FIFTH_FLOOR_INSTALL = "2";//五楼组装工序 /** * 采购订单销售订单绑定安全库存标识 @@ -193,4 +193,10 @@ public class MesConstants { */ public static final String MES_BASE_BARCODE_COMPLETE_FLAG_YES = "1"; public static final String MES_BASE_BARCODE_COMPLETE_FLAG_NO = "0"; + + + /** + * 电脑或工控机显示派工标识(1是,0否)*/ + public static final String MES_PROCESS_DISPLAY_FLAG_YES = "1";//是 + } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesBaseProcessInfoController.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesBaseProcessInfoController.java index 215b9663..5c014c02 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesBaseProcessInfoController.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesBaseProcessInfoController.java @@ -4,6 +4,7 @@ import java.util.List; import java.io.IOException; import javax.servlet.http.HttpServletResponse; +import com.hw.common.core.constant.MesConstants; import com.hw.common.security.annotation.InnerAuth; import com.hw.common.security.utils.SecurityUtils; import com.hw.mes.api.domain.MesBaseProcessInfo; @@ -149,6 +150,7 @@ public class MesBaseProcessInfoController extends BaseController @GetMapping("/getProcesses") public AjaxResult getProcesses(MesBaseProcessInfo mesBaseProcessInfo) { + mesBaseProcessInfo.setDisplayFlag(MesConstants.MES_PROCESS_DISPLAY_FLAG_YES); List list = mesBaseProcessInfoService.selectMesBaseProcessInfoList(mesBaseProcessInfo); return success(list); } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesProductPlanController.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesProductPlanController.java index cf848869..74940add 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesProductPlanController.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesProductPlanController.java @@ -4,12 +4,17 @@ import java.util.List; import javax.servlet.http.HttpServletResponse; import com.hw.common.core.constant.MesConstants; +import com.hw.common.core.domain.R; +import com.hw.common.security.annotation.InnerAuth; +import com.hw.mes.api.domain.vo.MesPdaProductPlanVo; import com.hw.mes.domain.MesBaseRouteProcess; import com.hw.mes.domain.MesProductOrder; +import com.hw.mes.domain.MesProductPlanDetail; import com.hw.mes.domain.vo.MesProductPlanDeleteVo; import com.hw.mes.domain.vo.MesProductPlanEditVo; import com.hw.mes.service.IMesBaseProcessInfoService; import com.hw.mes.service.IMesBaseRouteProcessService; +import com.hw.mes.service.IMesProductPlanDetailService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -31,17 +36,19 @@ import com.hw.common.core.web.page.TableDataInfo; /** * 生产派工Controller - * + * * @author xins * @date 2024-02-21 */ @RestController @RequestMapping("/productplan") -public class MesProductPlanController extends BaseController -{ +public class MesProductPlanController extends BaseController { @Autowired private IMesProductPlanService mesProductPlanService; + @Autowired + private IMesProductPlanDetailService mesProductPlanDetailService; + @Autowired private IMesBaseProcessInfoService mesBaseProcessInfoService; @@ -53,8 +60,7 @@ public class MesProductPlanController extends BaseController */ @RequiresPermissions("mes:productplan:list") @GetMapping("/list") - public TableDataInfo list(MesProductPlan mesProductPlan) - { + public TableDataInfo list(MesProductPlan mesProductPlan) { startPage(); List list = mesProductPlanService.selectMesProductPlanList(mesProductPlan); return getDataTable(list); @@ -62,12 +68,12 @@ public class MesProductPlanController extends BaseController /** * 查询生产派工List + * * @param mesProductPlan * @return */ @GetMapping("/selectProductPlans") - public AjaxResult selectProductPlans(MesProductPlan mesProductPlan) - { + public AjaxResult selectProductPlans(MesProductPlan mesProductPlan) { List list = mesProductPlanService.selectMesProductPlanJoinProcessList(mesProductPlan); return success(list); } @@ -78,8 +84,7 @@ public class MesProductPlanController extends BaseController @RequiresPermissions("mes:productplan:export") @Log(title = "生产派工", businessType = BusinessType.EXPORT) @PostMapping("/export") - public void export(HttpServletResponse response, MesProductPlan mesProductPlan) - { + public void export(HttpServletResponse response, MesProductPlan mesProductPlan) { List list = mesProductPlanService.selectMesProductPlanList(mesProductPlan); ExcelUtil util = new ExcelUtil(MesProductPlan.class); util.exportExcel(response, list, "生产派工数据"); @@ -90,8 +95,7 @@ public class MesProductPlanController extends BaseController */ @RequiresPermissions("mes:productplan:query") @GetMapping(value = "/{planId}") - public AjaxResult getInfo(@PathVariable("planId") Long planId) - { + public AjaxResult getInfo(@PathVariable("planId") Long planId) { return success(mesProductPlanService.selectMesProductPlanByPlanId(planId)); } @@ -101,8 +105,7 @@ public class MesProductPlanController extends BaseController @RequiresPermissions("mes:productplan:add") @Log(title = "生产派工", businessType = BusinessType.INSERT) @PostMapping - public AjaxResult add(@RequestBody MesProductPlan mesProductPlan) - { + public AjaxResult add(@RequestBody MesProductPlan mesProductPlan) { return toAjax(mesProductPlanService.insertMesProductPlan(mesProductPlan)); } @@ -112,8 +115,7 @@ public class MesProductPlanController extends BaseController @RequiresPermissions("mes:productplan:edit") @Log(title = "生产派工", businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult edit(@RequestBody MesProductPlan mesProductPlan) - { + public AjaxResult edit(@RequestBody MesProductPlan mesProductPlan) { return toAjax(mesProductPlanService.updateMesProductPlan(mesProductPlan)); } @@ -122,9 +124,8 @@ public class MesProductPlanController extends BaseController */ @RequiresPermissions("mes:productplan:remove") @Log(title = "生产派工", businessType = BusinessType.DELETE) - @DeleteMapping("/{planIds}") - public AjaxResult remove(@PathVariable Long[] planIds) - { + @DeleteMapping("/{planIds}") + public AjaxResult remove(@PathVariable Long[] planIds) { return toAjax(mesProductPlanService.deleteMesProductPlanByPlanIds(planIds)); } @@ -144,12 +145,11 @@ public class MesProductPlanController extends BaseController @RequiresPermissions("mes:productplan:add") @Log(title = "生产派工", businessType = BusinessType.INSERT) @PostMapping("/orderAddMesProductPlanList") - public AjaxResult orderAddMesProductPlanList(@RequestBody MesProductPlanEditVo productPlanEditVo) - { + public AjaxResult orderAddMesProductPlanList(@RequestBody MesProductPlanEditVo productPlanEditVo) { return toAjax(mesProductPlanService.orderAddMesProductPlanList(productPlanEditVo)); } - /* *//** + /* *//** * 获取生产派工图纸List列表(暂时不用) * @param planId * @return @@ -175,32 +175,31 @@ public class MesProductPlanController extends BaseController /** * 获取生产派工图纸List列表 + * * @param dispatchCode * @param processId * @return */ @GetMapping(value = "/drawingList/{dispatchCode}/{processId}") public AjaxResult getDispatchDrawingList(@PathVariable("dispatchCode") String dispatchCode, - @PathVariable("processId") Long processId) - { - return success(mesProductPlanService.getDispatchAttachList(dispatchCode,processId, MesConstants.MES_ATTACH_TYPE_DRAWING)); + @PathVariable("processId") Long processId) { + return success(mesProductPlanService.getDispatchAttachList(dispatchCode, processId, MesConstants.MES_ATTACH_TYPE_DRAWING)); } /** * 获取生产派工SOP附件List列表 + * * @param dispatchCode * @param processId * @return */ @GetMapping(value = "/SOPAttachList/{dispatchCode}/{processId}") public AjaxResult getDispatchSOPAttachList(@PathVariable("dispatchCode") String dispatchCode, - @PathVariable("processId") Long processId) - { - return success(mesProductPlanService.getDispatchAttachList(dispatchCode,processId,MesConstants.MES_ATTACH_TYPE_SOP)); + @PathVariable("processId") Long processId) { + return success(mesProductPlanService.getDispatchAttachList(dispatchCode, processId, MesConstants.MES_ATTACH_TYPE_SOP)); } - /** * 工单撤回 */ @@ -213,35 +212,72 @@ public class MesProductPlanController extends BaseController /** * 获取工序及关联生产人员信息 + * * @param mesBaseRouteProcess * @return */ @GetMapping(value = "/getBaseRouteProcesses") - public AjaxResult getBaseRouteProcesses(MesBaseRouteProcess mesBaseRouteProcess) - { + public AjaxResult getBaseRouteProcesses(MesBaseRouteProcess mesBaseRouteProcess) { return success(mesBaseRouteProcessService.selectMesBaseRouteProcessJoinList(mesBaseRouteProcess)); } /** * 获取工艺路线下所有工序及关联生产人员信息 + * * @param routeId 工艺路线ID * @return */ @GetMapping(value = "/getProcessUsers/{routeId}") - public AjaxResult getProcessUsers(@PathVariable("routeId") Long routeId) - { + public AjaxResult getProcessUsers(@PathVariable("routeId") Long routeId) { return success(mesBaseProcessInfoService.getProcessUsersByRouteId(routeId)); } /** * 根据派工单号删除生产计划 + * * @param mesProductPlanDeleteVo 生产计划删除VO对象 * @return */ @PostMapping(value = "/deleteProductPlansByDispatchCode") - public AjaxResult deleteProductPlansByDispatchCode(@RequestBody MesProductPlanDeleteVo mesProductPlanDeleteVo) - { + public AjaxResult deleteProductPlansByDispatchCode(@RequestBody MesProductPlanDeleteVo mesProductPlanDeleteVo) { return success(mesProductPlanService.deleteProductPlansByDispatchCode(mesProductPlanDeleteVo)); } + + + /** + * 五楼组装工序开始任务 + */ + @Log(title = "生产派工", businessType = BusinessType.START) + @PostMapping("/start5thFloorInstall") + @InnerAuth + public R start5thFloorInstall(@RequestBody MesPdaProductPlanVo mesPdaProductPlanVo) { + try { + MesProductPlanDetail mesProductPlanDetail = new MesProductPlanDetail(); + mesProductPlanDetail.setMaterialBarcode(mesPdaProductPlanVo.getMaterialBarcode()); + mesProductPlanDetailService.startNextMesProductPlanDetail(mesProductPlanDetail, MesConstants.MES_START_TYPE_FIFTH_FLOOR_INSTALL); + return R.ok("start successfully"); + } catch (Exception e) { + e.printStackTrace(); + return R.fail(e.getMessage()); + } + } + + /** + * 五楼组装工序结束任务 + */ + @Log(title = "生产派工", businessType = BusinessType.COMPLETE) + @PostMapping("/complete5thFloorInstall") + @InnerAuth + public R complete5thFloorInstall(@RequestBody MesPdaProductPlanVo mesPdaProductPlanVo) { + try { + MesProductPlanDetail mesProductPlanDetail = new MesProductPlanDetail(); + mesProductPlanDetail.setMaterialBarcode(mesPdaProductPlanVo.getMaterialBarcode()); + mesProductPlanDetailService.completeMesProductPlanDetail(mesProductPlanDetail); + return R.ok("complete successfully"); + } catch (Exception e) { + return R.fail(e.getMessage()); + } + } + } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesProductPlanDetail.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesProductPlanDetail.java index ebfeff8d..f5191ce8 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesProductPlanDetail.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesProductPlanDetail.java @@ -56,6 +56,8 @@ public class MesProductPlanDetail extends BaseEntity @Excel(name = "明细状态:1-未开始;2-已开始;3-已完成") private String planDetailStatus; + private String materialBarcode; + /** 是否标识:1-是;0-否 */ @Excel(name = "是否标识:1-是;0-否") private String isFlag; @@ -64,7 +66,6 @@ public class MesProductPlanDetail extends BaseEntity private String attachName; - private String materialBarcode; private String processType;//工序类型,1五楼拆分工序 diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesProductPlanDetailMapper.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesProductPlanDetailMapper.java index 499a9f9a..ce07f8d9 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesProductPlanDetailMapper.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesProductPlanDetailMapper.java @@ -85,5 +85,13 @@ public interface MesProductPlanDetailMapper */ public MesProductPlanDetail selectMesProductPlanDetailByPlanDetailCode(String planDetailCode); + /** + * 查询生产计划明细 + * + * @param materialBarcode 物料条码 + * @return 生产计划明细 + */ + public MesProductPlanDetail selectMesProductPlanDetailByMaterialBarcode(String materialBarcode); + } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesProductPlanDetailService.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesProductPlanDetailService.java index 4a5f8507..b64e07ec 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesProductPlanDetailService.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesProductPlanDetailService.java @@ -3,6 +3,7 @@ package com.hw.mes.service; import java.util.List; import com.hw.common.core.utils.DateUtils; +import com.hw.mes.api.domain.vo.MesPdaProductPlanVo; import com.hw.mes.domain.MesProductPlan; import com.hw.mes.domain.MesProductPlanDetail; import com.hw.mes.domain.vo.MesProductPlanDetailVo; @@ -113,4 +114,6 @@ public interface IMesProductPlanDetailService { * @return MesProductPlanDetail */ public MesProductPlanDetail startNextMesProductPlanDetail(MesProductPlanDetail mesProductPlanDetail,String startType); + + } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesBaseBarcodeInfoServiceImpl.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesBaseBarcodeInfoServiceImpl.java index a333a1ad..d4f12503 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesBaseBarcodeInfoServiceImpl.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesBaseBarcodeInfoServiceImpl.java @@ -505,6 +505,10 @@ public class MesBaseBarcodeInfoServiceImpl implements IMesBaseBarcodeInfoService mesBaseBarcodeInfo.setUpdateBy(SecurityUtils.getUsername()); mesBaseBarcodeInfo.setUpdateTime(DateUtils.getNowDate()); return mesBaseBarcodeInfoMapper.updateMesBaseBarcodeInfo(mesBaseBarcodeInfo); + } else { + if (!dbBaseBarcodeInfo.getPlanCode().equals(mesBaseBarcodeInfo.getPlanCode())) { + throw new ServiceException("此柜体条码已经在别的生产明细中使用过"); + } } return 1; } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesProductPlanDetailServiceImpl.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesProductPlanDetailServiceImpl.java index a38d0418..69ffb05a 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesProductPlanDetailServiceImpl.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesProductPlanDetailServiceImpl.java @@ -7,7 +7,6 @@ import com.hw.common.core.utils.StringUtils; import com.hw.common.core.utils.uuid.Seq; import com.hw.common.security.utils.SecurityUtils; import com.hw.mes.api.domain.MesBaseBarcodeInfo; -import com.hw.mes.config.MesConfig; import com.hw.mes.domain.*; import com.hw.mes.domain.vo.MesProductPlanDetailVo; import com.hw.mes.mapper.*; @@ -28,6 +27,8 @@ import java.util.stream.Collectors; * @author xins * @date 2024-02-21 */ + + @Service public class MesProductPlanDetailServiceImpl implements IMesProductPlanDetailService { @Autowired @@ -221,8 +222,17 @@ public class MesProductPlanDetailServiceImpl implements IMesProductPlanDetailSer @Transactional(rollbackFor = Exception.class) public int completeMesProductPlanDetail(MesProductPlanDetail mesProductPlanDetail) { Long planDetailId = mesProductPlanDetail.getPlanDetailId(); - MesProductPlanDetail dbProductPlanDetail = mesProductPlanDetailMapper. - selectMesProductPlanDetailByPlanDetailId(planDetailId); + MesProductPlanDetail dbProductPlanDetail = new MesProductPlanDetail(); + if (planDetailId != null) { + dbProductPlanDetail = mesProductPlanDetailMapper. + selectMesProductPlanDetailByPlanDetailId(planDetailId); + } else if (StringUtils.isNotEmpty(mesProductPlanDetail.getMaterialBarcode())) {//适用于5楼组装区域,PDA操作 + dbProductPlanDetail = mesProductPlanDetailMapper.selectMesProductPlanDetailByMaterialBarcode(mesProductPlanDetail.getMaterialBarcode()); + } + if (dbProductPlanDetail == null) { + throw new ServiceException("未找到生产明细"); + } + String planDetailStatus = dbProductPlanDetail.getPlanDetailStatus(); if (planDetailStatus.equals(MesConstants.MES_PRODUCT_PLAN_DETAIL_STATUS_TO_START)) { throw new ServiceException("此生产明细未开始"); @@ -232,6 +242,10 @@ public class MesProductPlanDetailServiceImpl implements IMesProductPlanDetailSer Long planId = dbProductPlanDetail.getPlanId(); MesProductPlan dbProductPlan = mesProductPlanMapper.selectMesProductPlanByPlanId(planId); + if(!dbProductPlan.getUserId().equals(SecurityUtils.getUserId())){ + throw new ServiceException("此派工信息没有派工到您"); + } + String planStatus = dbProductPlan.getPlanStatus(); if (planStatus.equals(MesConstants.MES_PRODUCT_PLAN_STATUS_TO_DISPATCH)) { throw new ServiceException("还未派工,不能结束"); @@ -376,7 +390,64 @@ public class MesProductPlanDetailServiceImpl implements IMesProductPlanDetailSer } } - MesProductPlan mesProductPlan = mesProductPlanMapper.selectMesProductPlanByPlanId(mesProductPlanDetail.getPlanId()); + + Date currentDate = new Date(); + String userName = SecurityUtils.getUsername(); + Long userId = SecurityUtils.getUserId(); + + String planDetailCode = Seq.getId(Seq.mesProductPlanDetailSeqType, Seq.mesProductPlanDetailCode); + + MesProductPlan mesProductPlan = new MesProductPlan(); + + if (startType.equals(MesConstants.MES_START_TYPE_FIFTH_FLOOR_INSTALL)) {//五楼组装工序 + //在拆分区拿柜体拆分时,需要打印配对码,然后跟柜体码绑定 + //在从4楼到5楼接驳位时,需要根据4楼的成品码重新打印原材料条码 + MesBaseBarcodeInfo mesBaseBarcodeInfo = mesBaseBarcodeInfoMapper.selectMesBaseBarcodeInfoByBarcodeInfo( + mesProductPlanDetail.getMaterialBarcode()); + if (mesBaseBarcodeInfo == null) { + throw new ServiceException("无派工任务"); + } + + String planCode = mesBaseBarcodeInfo.getPlanCode(); + if (StringUtils.isEmpty(planCode)) { + throw new ServiceException("无派工任务"); + } + + MesProductPlanDetail dbProductPlanDetail = mesProductPlanDetailMapper.selectMesProductPlanDetailByMaterialBarcode( + mesProductPlanDetail.getMaterialBarcode()); + if (dbProductPlanDetail != null) { + throw new ServiceException("已经开始,无须重复开始"); + } + + MesProductPlan barcodeProductPlan = mesProductPlanMapper.selectOnlyMesProductPlanByPlanCode(planCode); + if(barcodeProductPlan==null){ + throw new ServiceException("无派工信息"); + } + MesProductPlan queryProductPlan = new MesProductPlan(); + queryProductPlan.setDispatchCode(barcodeProductPlan.getDispatchCode()); + queryProductPlan.setFinalProcessFlag(MesConstants.MES_FINAL_PROCESS_FLAG_YES); + List mesProductPlans = mesProductPlanMapper.selectOnlyMesProductPlans(queryProductPlan); + if(mesProductPlans==null || mesProductPlans.isEmpty()){ + throw new ServiceException("没有派工信息"); + } + mesProductPlan = mesProductPlans.get(0); + + } else { + //五楼装配工序要扫码开始 + mesProductPlan = mesProductPlanMapper.selectMesProductPlanByPlanId(mesProductPlanDetail.getPlanId()); + if (startType.equals(MesConstants.MES_START_TYPE_FIFTH_FLOOR_ASSEMBLE)) { + this.start5thFloorAssemble(mesProductPlanDetail.getMaterialBarcode(), mesProductPlan.getDispatchCode(), planDetailCode, userName, currentDate); + } + } + + if (mesProductPlan == null) { + throw new ServiceException("无派工信息"); + } + + if(!mesProductPlan.getUserId().equals(SecurityUtils.getUserId())){ + throw new ServiceException("此派工信息没有派工到您"); + } + //判断生产计划的状态 String planStatus = mesProductPlan.getPlanStatus(); if (planStatus.equals(MesConstants.MES_PRODUCT_PLAN_STATUS_TO_DISPATCH)) { @@ -385,56 +456,6 @@ public class MesProductPlanDetailServiceImpl implements IMesProductPlanDetailSer throw new ServiceException("此生产派工已经结束"); } - Date currentDate = new Date(); - String userName = SecurityUtils.getUsername(); - Long userId = SecurityUtils.getUserId(); - - - String planDetailCode = Seq.getId(Seq.mesProductPlanDetailSeqType, Seq.mesProductPlanDetailCode); - //五楼装配工位要扫码开始 - if (startType.equals(MesConstants.MES_START_TYPE_FIFTH_FLOOR_ASSEMBLE)) { - String materialBarcode = mesProductPlanDetail.getMaterialBarcode(); - MesBaseBarcodeInfo mesBaseBarcodeInfo = mesBaseBarcodeInfoMapper.selectMesBaseBarcodeInfoByBarcodeInfo(materialBarcode); - if (mesBaseBarcodeInfo == null) { - throw new ServiceException("条码有误"); - } - - if (!mesBaseBarcodeInfo.getBarcodeType().equals(MesConstants.MES_BARCODE_TYPE_BIND)) { - throw new ServiceException("请扫描背板或门板条码开始"); - } - - if (StringUtils.isEmpty(mesBaseBarcodeInfo.getBindBarcode())) { - throw new ServiceException("此条码有误,未绑定任何柜体"); - } - - if (StringUtils.isNotEmpty(mesBaseBarcodeInfo.getTransferredPlanDetailCode())) { - throw new ServiceException("此条码已经扫描使用过,不能再次使用"); - } - - //校验此条码是否是同一派工单 - MesProductPlan barcodeProductPlan = mesProductPlanMapper.selectOnlyMesProductPlanByPlanCode(mesBaseBarcodeInfo.getPlanCode()); - if (barcodeProductPlan == null) { - throw new ServiceException("条码有误,没有相关派工"); - } - if (!barcodeProductPlan.getDispatchCode().equals(mesProductPlan.getDispatchCode())) { - throw new ServiceException("此条码的派工单号为:" + barcodeProductPlan.getDispatchCode() + ",与此派工单号不符"); - } - - -// MesMaterialAssignInfo queryMaterialAssignInfo = new MesMaterialAssignInfo(); -// queryMaterialAssignInfo.setMaterialBarcode(materialBarcode); -// List mesMaterialAssignInfoList = mesMaterialAssignInfoMapper.selectMesMaterialAssignInfoList(queryMaterialAssignInfo); -// if (mesMaterialAssignInfoList == null || mesMaterialAssignInfoList.isEmpty()) { -// throw new ServiceException("此物料条码还没下发到工位"); -// } - - mesBaseBarcodeInfo.setTransferredPlanDetailCode(planDetailCode); - mesBaseBarcodeInfo.setUpdateTime(currentDate); - mesBaseBarcodeInfo.setUpdateBy(userName); - mesBaseBarcodeInfoMapper.updateMesBaseBarcodeInfo(mesBaseBarcodeInfo); - - } - //判断生产任务状态,并根据状态更新生产任务 startProductOrder(mesProductPlan, currentDate, userName); @@ -448,6 +469,7 @@ public class MesProductPlanDetailServiceImpl implements IMesProductPlanDetailSer mesProductPlanMapper.updateMesProductPlan(mesProductPlan); } + mesProductPlanDetail.setPlanId(mesProductPlan.getPlanId()); mesProductPlanDetail.setPlanDetailStatus(MesConstants.MES_PRODUCT_PLAN_DETAIL_STATUS_STARTED); mesProductPlanDetail.setPlanDetailCode(planDetailCode); mesProductPlanDetail.setPlanCode(mesProductPlan.getPlanCode()); @@ -465,6 +487,74 @@ public class MesProductPlanDetailServiceImpl implements IMesProductPlanDetailSer } + public void start5thFloorAssemble(String materialBarcode, String dispatchCode, String planDetailCode, String userName, Date currentDate) { + MesBaseBarcodeInfo mesBaseBarcodeInfo = mesBaseBarcodeInfoMapper.selectMesBaseBarcodeInfoByBarcodeInfo(materialBarcode); + if (mesBaseBarcodeInfo == null) { + throw new ServiceException("条码有误"); + } + + if (!mesBaseBarcodeInfo.getBarcodeType().equals(MesConstants.MES_BARCODE_TYPE_BIND)) { + throw new ServiceException("请扫描背板或门板条码开始"); + } + + if (StringUtils.isEmpty(mesBaseBarcodeInfo.getBindBarcode())) { + throw new ServiceException("此条码有误,未绑定任何柜体"); + } + + if (StringUtils.isNotEmpty(mesBaseBarcodeInfo.getTransferredPlanDetailCode())) { + throw new ServiceException("此条码已经扫描使用过,不能再次使用"); + } + + //校验此条码是否是同一派工单 + MesProductPlan barcodeProductPlan = mesProductPlanMapper.selectOnlyMesProductPlanByPlanCode(mesBaseBarcodeInfo.getPlanCode()); + if (barcodeProductPlan == null) { + throw new ServiceException("条码有误,没有相关派工"); + } + if (!barcodeProductPlan.getDispatchCode().equals(dispatchCode)) { + throw new ServiceException("此条码的派工单号为:" + barcodeProductPlan.getDispatchCode() + ",与此派工单号不符"); + } + + +// MesMaterialAssignInfo queryMaterialAssignInfo = new MesMaterialAssignInfo(); +// queryMaterialAssignInfo.setMaterialBarcode(materialBarcode); +// List mesMaterialAssignInfoList = mesMaterialAssignInfoMapper.selectMesMaterialAssignInfoList(queryMaterialAssignInfo); +// if (mesMaterialAssignInfoList == null || mesMaterialAssignInfoList.isEmpty()) { +// throw new ServiceException("此物料条码还没下发到工位"); +// } + + mesBaseBarcodeInfo.setTransferredPlanDetailCode(planDetailCode); + mesBaseBarcodeInfo.setUpdateTime(currentDate); + mesBaseBarcodeInfo.setUpdateBy(userName); + mesBaseBarcodeInfoMapper.updateMesBaseBarcodeInfo(mesBaseBarcodeInfo); + } + + + /** + * 五楼组装区PDA根据组装出库开始工单明细 + * + * @param materialBarcode + */ + public void start5thFloorInstall(String materialBarcode) { + //在拆分区拿柜体拆分时,需要打印配对码,然后跟柜体码绑定 + //在从4楼到5楼接驳位时,需要根据4楼的成品码重新打印原材料条码 + MesBaseBarcodeInfo mesBaseBarcodeInfo = mesBaseBarcodeInfoMapper.selectMesBaseBarcodeInfoByBarcodeInfo(materialBarcode); + if (mesBaseBarcodeInfo == null) { + throw new ServiceException("无派工任务"); + } + + String planCode = mesBaseBarcodeInfo.getPlanCode(); + if (StringUtils.isEmpty(planCode)) { + throw new ServiceException("无派工任务"); + } + + MesProductPlanDetail mesProductPlanDetail = mesProductPlanDetailMapper.selectMesProductPlanDetailByMaterialBarcode(materialBarcode); + if (mesProductPlanDetail != null) { + throw new ServiceException("已经开始,无须重复开始"); + } + + } + + public void startProductOrder(MesProductPlan productPlan, Date currentDate, String userName) { MesProductOrder productOrder = mesProductOrderMapper.selectMesProductOrderByProductOrderId(productPlan.getProductOrderId()); if (productOrder == null) { @@ -488,4 +578,5 @@ public class MesProductPlanDetailServiceImpl implements IMesProductPlanDetailSer } + } diff --git a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesBaseProcessInfoMapper.xml b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesBaseProcessInfoMapper.xml index 8a80d595..4a504d42 100644 --- a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesBaseProcessInfoMapper.xml +++ b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesBaseProcessInfoMapper.xml @@ -10,6 +10,8 @@ + + @@ -71,8 +73,11 @@ and process_type = #{processType} and production_time = #{productionTime} + and display_flag = #{displayFlag} + and active_flag = #{activeFlag} and remark = #{remark} + diff --git a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesProductPlanDetailMapper.xml b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesProductPlanDetailMapper.xml index cfc331ad..1c36139f 100644 --- a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesProductPlanDetailMapper.xml +++ b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesProductPlanDetailMapper.xml @@ -15,6 +15,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -63,6 +64,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" attach_id, real_end_time, plan_detail_status, + material_barcode, is_flag, remark, create_by, @@ -80,6 +82,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{realEndTime}, #{attachId}, #{planDetailStatus}, + #{materialBarcode}, #{isFlag}, #{remark}, #{createBy}, @@ -156,4 +159,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where plan_detail_code = #{planDetailCode} + + + diff --git a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesProductPlanMapper.xml b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesProductPlanMapper.xml index a39a9b05..21076515 100644 --- a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesProductPlanMapper.xml +++ b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesProductPlanMapper.xml @@ -495,6 +495,7 @@ and a.dispatch_code = #{dispatchCode} and a.process_id = #{processId} + and a.final_process_flag = #{finalProcessFlag} diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsProductInstockServiceImpl.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsProductInstockServiceImpl.java index f3991d6d..08d549bb 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsProductInstockServiceImpl.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsProductInstockServiceImpl.java @@ -4,6 +4,7 @@ import java.math.BigDecimal; import java.util.Date; import java.util.List; +import com.hw.common.core.constant.Constants; import com.hw.common.core.constant.MesConstants; import com.hw.common.core.constant.SecurityConstants; import com.hw.common.core.constant.WmsConstants; @@ -13,6 +14,7 @@ import com.hw.common.core.utils.uuid.Seq; import com.hw.common.security.utils.SecurityUtils; import com.hw.mes.api.RemoteMesService; import com.hw.mes.api.domain.MesBaseBarcodeInfo; +import com.hw.mes.api.domain.vo.MesPdaProductPlanVo; import com.hw.wms.config.WmsConfig; import com.hw.wms.domain.*; import com.hw.wms.domain.vo.WmsProduceInstockVo; @@ -295,6 +297,7 @@ public class WmsProductInstockServiceImpl implements IWmsProductInstockService { * @return */ @Override + @Transactional(rollbackFor = Exception.class) public int fifthFloorProduceInstock(WmsProduceInstockVo wmsProduceInstockVo) { Long warehouseId = wmsConfig.getFifthSemiWarehouseId();//五楼半成品库 String productType = WmsConstants.PRODUCT_STOCK_STOCK_TYPE_SEMI; @@ -359,10 +362,12 @@ public class WmsProductInstockServiceImpl implements IWmsProductInstockService { throw new ServiceException("物料条码有误"); } - if (baseBarcodeInfo.getBarcodeType().equals(WmsConstants.RWA_STOCK_STOCK_TYPE_RAW)) { + //按原材料入库的柜体原料码进行入库 + if (!productType.equals(WmsConstants.PRODUCT_INSTOCK_STOCK_TYPE_SEMI) && + baseBarcodeInfo.getBarcodeType().equals(WmsConstants.RWA_STOCK_STOCK_TYPE_RAW)) { throw new ServiceException("此物料条码为原材料,非成品条码"); } - //按原材料入库的柜体原料码进行入库 + if (baseBarcodeInfo.getPrintFlag().equals(MesConstants.MES_BARCODE_PRINT_FLAG_NO)) { throw new ServiceException("此条码还未打印"); } @@ -403,7 +408,16 @@ public class WmsProductInstockServiceImpl implements IWmsProductInstockService { if (executeStatus.equals(WmsConstants.WMS_EXECUTE_STATUS_FINISH)) { updateProductStock(baseBarcodeInfo, "", warehouseId, warehouseFloor, userName, currentDate); } - return wmsProductInstockMapper.insertWmsProductInstock(wmsProductInstock); + wmsProductInstockMapper.insertWmsProductInstock(wmsProductInstock); + + + MesPdaProductPlanVo mesPdaProductPlanVo = new MesPdaProductPlanVo(); + mesPdaProductPlanVo.setMaterialBarcode(materialBarcode); + R tdReturnMsg = remoteMesService.complete5thFloorInstall(mesPdaProductPlanVo, SecurityConstants.INNER); + if (tdReturnMsg.getCode() != Constants.SUCCESS) {//抛出异常,回滚事务 + throw new RuntimeException(tdReturnMsg.getMsg()); + } + return 1; } diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsRawOutstockServiceImpl.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsRawOutstockServiceImpl.java index f671bbd8..6b6fc638 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsRawOutstockServiceImpl.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsRawOutstockServiceImpl.java @@ -1,6 +1,7 @@ package com.hw.wms.service.impl; import com.alibaba.fastjson2.JSONObject; +import com.hw.common.core.constant.Constants; import com.hw.common.core.constant.MesConstants; import com.hw.common.core.constant.SecurityConstants; import com.hw.common.core.constant.WmsConstants; @@ -14,6 +15,7 @@ import com.hw.mes.api.RemoteMesService; import com.hw.mes.api.domain.MesBaseBarcodeInfo; import com.hw.mes.api.domain.MesBaseMaterialInfo; import com.hw.mes.api.domain.vo.MesBaseMaterialInfoVo; +import com.hw.mes.api.domain.vo.MesPdaProductPlanVo; import com.hw.wms.config.WmsConfig; import com.hw.wms.domain.*; import com.hw.wms.domain.vo.*; @@ -957,6 +959,7 @@ public class WmsRawOutstockServiceImpl implements IWmsRawOutstockService { * @return */ @Override + @Transactional(rollbackFor = Exception.class) public int assembleOutstock(WmsAssembleOutstockVo wmsAssembleOutstockVo) { /**1、柜体出库,wcs轮询后执行完成要删除库存 * 2、拆分,生成条码绑定,贴码 @@ -973,8 +976,12 @@ public class WmsRawOutstockServiceImpl implements IWmsRawOutstockService { throw new ServiceException("物料条码有误"); } - /**todo:需要最终确认一下。在申请领柜体后,wcs会调度agv将对应库位的柜体运输到柜体拆分区,然后更新rawoutstock的materialbatch为其物料条码*/ - String bindBarcode = baseBarcodeInfo.getBindBarcode(); + if(!baseBarcodeInfo.getBarcodeType().equals(MesConstants.MES_BARCODE_TYPE_BIND)){ + throw new ServiceException("请扫描配对码后进行组装出库"); + } + + /**在申请领柜体后,wms插入wms_raw_outstock,wcs插入wms_raw_outstock_detail,更新wms_raw_outstock*/ + String bindBarcode = baseBarcodeInfo.getBindBarcode();//原柜体条码 if (StringUtils.isEmpty(bindBarcode)) { throw new ServiceException("此柜体还未绑定"); } @@ -1029,6 +1036,13 @@ public class WmsRawOutstockServiceImpl implements IWmsRawOutstockService { wmsRawOutstockMapper.insertWmsRawOutstock(wmsRawOutstock); + MesPdaProductPlanVo mesPdaProductPlanVo = new MesPdaProductPlanVo(); + mesPdaProductPlanVo.setMaterialBarcode(bindBarcode); + R tdReturnMsg = remoteMesService.start5thFloorInstall(mesPdaProductPlanVo, SecurityConstants.INNER); + if (tdReturnMsg.getCode() != Constants.SUCCESS) {//抛出异常,回滚事务 + throw new ServiceException(tdReturnMsg.getMsg()); + } + return 1; }