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 53a8f1fd..e40fb9ef 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 @@ -9,6 +9,7 @@ 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.domain.vo.MesSaleOrderTransferVo; import com.hw.mes.api.factory.RemoteMesFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.*; @@ -114,4 +115,26 @@ public interface RemoteMesService { @PostMapping("/productplan/complete5thFloorInstall") public R complete5thFloorInstall(@RequestBody MesPdaProductPlanVo mesPdaProductPlanVo, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + /** + * 根据条码内容来更新条码信息 + * + * @param mesBaseBarcodeInfos 条码信息列表 + * @param source 请求来源 + * @return 结果 + */ + @PostMapping("/barcode/transferBaseBarcodeInfos") + public R transferBaseBarcodeInfos(@RequestBody List mesBaseBarcodeInfos, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + + /** + * 转换销售订单的转出或转入数量,并转换条码信息 + * + * @param mesSaleOrderTransferVo 销售订单转换VO对象 + * @param source 请求来源 + * @return 结果 + */ + @PostMapping("/saleOrder/transferSaleOrders") + public R transferSaleOrders(@RequestBody MesSaleOrderTransferVo mesSaleOrderTransferVo, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + } diff --git a/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/vo/MesSaleOrderTransferVo.java b/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/vo/MesSaleOrderTransferVo.java new file mode 100644 index 00000000..4a880ea7 --- /dev/null +++ b/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/vo/MesSaleOrderTransferVo.java @@ -0,0 +1,37 @@ +package com.hw.mes.api.domain.vo; + +import com.hw.mes.api.domain.MesBaseBarcodeInfo; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.List; + +/** + * @Description: 销售订单转库存VO对象 + * @ClassName: MesSaleOrderTransferVo + * @Author : xins + * @Date :2024-09-04 14:21 + * @Version :1.0 + */ +@Data +public class MesSaleOrderTransferVo { + + //转换的条码信息 + @NotNull(message = "条码信息不能为空") + private List mesBaseBarcodeInfos; + + //转换数量 + @NotNull(message = "转换不能为空") + private BigDecimal transferAmount; + + //老的销售订单ID + @NotNull(message = "老销售订单Id必须输入") + private Long oldSaleOrderId; + + //新的销售订单ID + @NotNull(message = "新销售订单Id必须输入") + private Long newSaleOrderId; + + +} 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 a7541082..ee46a103 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 @@ -8,6 +8,7 @@ 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.domain.vo.MesSaleOrderTransferVo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.cloud.openfeign.FallbackFactory; @@ -72,6 +73,16 @@ public class RemoteMesFallbackFactory implements FallbackFactory complete5thFloorInstall(MesPdaProductPlanVo mesPdaProductPlanVo, String source) { return R.fail("完成五楼组装工序失败:" + throwable.getMessage()); } + + @Override + public R transferBaseBarcodeInfos(List mesBaseBarcodeInfos, String source) { + return R.fail("转换条码信息失败:" + throwable.getMessage()); + } + + @Override + public R transferSaleOrders(MesSaleOrderTransferVo mesSaleOrderTransferVo, String source) { + return R.fail("销售订单信息转换失败:" + throwable.getMessage()); + } }; } } diff --git a/hw-common/hw-common-core/src/main/java/com/hw/common/core/constant/WmsConstants.java b/hw-common/hw-common-core/src/main/java/com/hw/common/core/constant/WmsConstants.java index 4090ee9b..a1b6dafa 100644 --- a/hw-common/hw-common-core/src/main/java/com/hw/common/core/constant/WmsConstants.java +++ b/hw-common/hw-common-core/src/main/java/com/hw/common/core/constant/WmsConstants.java @@ -143,13 +143,32 @@ public class WmsConstants { /** - * 库位状态 + * 库位状态(1:正常,2:自动锁定,3:人工锁定,4:移库锁定,5:合库锁定,6出库锁定,8因外侧异常导致内侧无法使用,9异常) */ public static final String WMS_BASE_LOCATION_STATUS_NORMAL = "1";//正常 public static final String WMS_BASE_LOCATION_STATUS_AUTO_LOCK = "2";//自动锁定 public static final String WMS_BASE_LOCATION_STATUS_MANUAL_LOCK = "3";//人工锁定 public static final String WMS_BASE_LOCATION_STATUS_MOVE_LOCK = "4";//移库锁定 public static final String WMS_BASE_LOCATION_STATUS_MERGE_LOCK = "5";//合库锁定 + public static final String WMS_BASE_LOCATION_STATUS_OUT_STOCK = "6";//出库锁定 + public static final String WMS_BASE_LOCATION_STATUS_DEEP_ABNORMAL = "8";//深库位异常 + public static final String WMS_BASE_LOCATION_STATUS_ABNORMAL = "9";//异常 + + + public static final Map LOCATION_STATUS_PROMPT_MAP = new HashMap<>(); + + static { + LOCATION_STATUS_PROMPT_MAP.put(WMS_BASE_LOCATION_STATUS_NORMAL, "正常"); + LOCATION_STATUS_PROMPT_MAP.put(WMS_BASE_LOCATION_STATUS_AUTO_LOCK, "自动锁定"); + LOCATION_STATUS_PROMPT_MAP.put(WMS_BASE_LOCATION_STATUS_MANUAL_LOCK, "人工锁定"); + LOCATION_STATUS_PROMPT_MAP.put(WMS_BASE_LOCATION_STATUS_MOVE_LOCK, "移库锁定"); + LOCATION_STATUS_PROMPT_MAP.put(WMS_BASE_LOCATION_STATUS_MERGE_LOCK, "合库锁定"); + LOCATION_STATUS_PROMPT_MAP.put(WMS_BASE_LOCATION_STATUS_OUT_STOCK, "出库锁定"); + LOCATION_STATUS_PROMPT_MAP.put(WMS_BASE_LOCATION_STATUS_DEEP_ABNORMAL, "深库位异常"); + LOCATION_STATUS_PROMPT_MAP.put(WMS_BASE_LOCATION_STATUS_ABNORMAL, "异常"); + // 初始化其他映射... + } + /** * 入库过度库位标识 @@ -213,12 +232,6 @@ public class WmsConstants { public static final String WMS_WAREHOUSE_RETURN_REQUIREMENT_APPLY_AUDIT = "1";//申请审核退库 - - public static final String WMS_RAW_STOCK_COMPLETE_FLAY_YES = "1";//完整 - public static final String WMS_RAW_STOCK_COMPLETE_FLAY_NO = "0";//拆分后的 - - - /*移库记录(明细)执行状态*/ public static final String WMS_MOVE_EXECUTE_STATUS_TOEXECUTE = "0";//待执行 public static final String WMS_MOVE_EXECUTE_STATUS_EXECUTING = "1";//执行中 diff --git a/hw-common/hw-common-log/src/main/java/com/hw/common/log/enums/BusinessType.java b/hw-common/hw-common-log/src/main/java/com/hw/common/log/enums/BusinessType.java index 70bd8f3d..7e9c8fcc 100644 --- a/hw-common/hw-common-log/src/main/java/com/hw/common/log/enums/BusinessType.java +++ b/hw-common/hw-common-log/src/main/java/com/hw/common/log/enums/BusinessType.java @@ -158,4 +158,9 @@ public enum BusinessType * 撤回 */ RECALL, + + /** + * 暂停 + */ + PAUSE, } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesBaseBarcodeInfoController.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesBaseBarcodeInfoController.java index 9724e00c..6e209cdf 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesBaseBarcodeInfoController.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesBaseBarcodeInfoController.java @@ -4,6 +4,7 @@ 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.common.security.utils.SecurityUtils; import com.hw.mes.api.domain.MesBaseBarcodeInfo; @@ -347,4 +348,16 @@ public class MesBaseBarcodeInfoController extends BaseController return getDataTable(list); } + + /** + * 条码信息转销售订单 + */ + @InnerAuth + @Log(title = "条码信息", businessType = BusinessType.TRANSFER) + @PostMapping(value="/transferBaseBarcodeInfos") + public R transferBaseBarcodeInfos(@RequestBody List mesBaseBarcodeInfos) + { + return R.ok(mesBaseBarcodeInfoService.transferBaseBarcodeInfos(mesBaseBarcodeInfos)); + } + } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesProductOrderController.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesProductOrderController.java index 3dc69e49..a72de747 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesProductOrderController.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesProductOrderController.java @@ -196,4 +196,24 @@ public class MesProductOrderController extends BaseController { } + /** + * 工单暂停 + */ + @Log(title = "生产工单", businessType = BusinessType.PAUSE) + @RequiresPermissions("mes:productOrder:pause") + @PostMapping("/productOrderPause") + public AjaxResult productOrderPause(@RequestBody MesProductOrder mesProductOrder) { + return toAjax(mesProductOrderService.productOrderPause(mesProductOrder)); + } + + /** + * 工单继续 + */ + @Log(title = "生产工单", businessType = BusinessType.PAUSE) + @RequiresPermissions("mes:productOrder:continue") + @PostMapping("/productOrderContinue") + public AjaxResult productOrderContinue(@RequestBody MesProductOrder mesProductOrder) { + return toAjax(mesProductOrderService.productOrderContinue(mesProductOrder)); + } + } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesPurchaseOrderController.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesPurchaseOrderController.java index deec4198..f853cc94 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesPurchaseOrderController.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesPurchaseOrderController.java @@ -151,7 +151,7 @@ public class MesPurchaseOrderController extends BaseController * @param mesPurchaseOrder * @return */ - @RequiresPermissions("mes:purchaseOrder:bind") + @RequiresPermissions("mes:saleOrder:bind") @GetMapping("/unbindPurchaseOrderList") public TableDataInfo unbindPurchaseOrderList(MesPurchaseOrder mesPurchaseOrder) { @@ -165,7 +165,7 @@ public class MesPurchaseOrderController extends BaseController * @param mesPurchaseOrder * @return */ - @RequiresPermissions("mes:purchaseOrder:bind") + @RequiresPermissions("mes:saleOrder:bind") @GetMapping("/saleBindPurchaseOrderList") public TableDataInfo saleBindPurchaseOrderList(MesPurchaseOrder mesPurchaseOrder) { @@ -179,7 +179,7 @@ public class MesPurchaseOrderController extends BaseController * @param mesSaleOrder * @return */ - @RequiresPermissions("mes:purchaseOrder:bind") + @RequiresPermissions("mes:saleOrder:bind") @Log(title = "采购订单信息", businessType = BusinessType.ALLOCATE) @PutMapping("/saveSalesBindPurchase") public AjaxResult saveSalesBindPurchase(@RequestBody MesSaleOrder mesSaleOrder) { @@ -193,7 +193,7 @@ public class MesPurchaseOrderController extends BaseController * @param purchaseOrderIds * @return */ - @RequiresPermissions("mes:purchaseOrder:bind") + @RequiresPermissions("mes:saleOrder:bind") @Log(title = "采购订单信息", businessType = BusinessType.UNALLOCATE) @PostMapping("/removeSalesBindPurchase") public AjaxResult removeSalesBindPurchase(Long saleOrderId, Long[] purchaseOrderIds) { @@ -204,7 +204,7 @@ public class MesPurchaseOrderController extends BaseController /** * 删除采购订单信息 */ - @RequiresPermissions("mes:purchaseOrder:bind") + @RequiresPermissions("mes:saleOrder:bind") @Log(title = "采购订单板顶信息", businessType = BusinessType.DELETE) @GetMapping("/deleteOrderBind/{orderBindIds}") public AjaxResult deleteOrderBind(@PathVariable Long[] orderBindIds) diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesSaleOrderController.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesSaleOrderController.java index 4b3cc0f7..9df737db 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesSaleOrderController.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesSaleOrderController.java @@ -1,8 +1,11 @@ package com.hw.mes.controller; import java.util.List; -import java.io.IOException; import javax.servlet.http.HttpServletResponse; + +import com.hw.common.core.domain.R; +import com.hw.common.security.annotation.InnerAuth; +import com.hw.mes.api.domain.vo.MesSaleOrderTransferVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -102,4 +105,18 @@ public class MesSaleOrderController extends BaseController { return toAjax(mesSaleOrderService.deleteMesSaleOrderBySaleOrderIds(saleOrderIds)); } + + + + /** + * 库存转销售订单 + */ + @InnerAuth + @Log(title = "销售订单信息", businessType = BusinessType.TRANSFER) + @PostMapping(value="/transferSaleOrders") + public R transferSaleOrders(@RequestBody MesSaleOrderTransferVo mesSaleOrderTransferVo) + { + return R.ok(mesSaleOrderService.transferSaleOrders(mesSaleOrderTransferVo)); + } + } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesSaleOrder.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesSaleOrder.java index d1aec517..efd91de6 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesSaleOrder.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesSaleOrder.java @@ -108,6 +108,17 @@ public class MesSaleOrder extends BaseEntity { @Excel(name = "已发布数量", readConverterExp = "或=叫已派工数量") private BigDecimal releaseQty; + /** + * 转入数量,从别的销售订单或安全库存转入的 + */ + private BigDecimal transferInAmount; + + /** + * 转出数量,转给别的销售订单或安全库存的 + */ + private BigDecimal transferOutAmount; + + /** * 是否已下达计划(1-是,0-否) */ @@ -301,6 +312,22 @@ public class MesSaleOrder extends BaseEntity { return releaseQty; } + public BigDecimal getTransferInAmount() { + return transferInAmount; + } + + public void setTransferInAmount(BigDecimal transferInAmount) { + this.transferInAmount = transferInAmount; + } + + public BigDecimal getTransferOutAmount() { + return transferOutAmount; + } + + public void setTransferOutAmount(BigDecimal transferOutAmount) { + this.transferOutAmount = transferOutAmount; + } + public void setIsRelease(String isRelease) { this.isRelease = isRelease; } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesBaseBarcodeInfoService.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesBaseBarcodeInfoService.java index 6527ad57..2ed63270 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesBaseBarcodeInfoService.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesBaseBarcodeInfoService.java @@ -185,4 +185,12 @@ public interface IMesBaseBarcodeInfoService * @return */ public int check4thFloorProduceOutstock(String materialBarcode); + + /** + * 条码信息转销售订单 + * + * @param mesBaseBarcodeInfos 条码信息列表 + * @return 结果 + */ + public boolean transferBaseBarcodeInfos(List mesBaseBarcodeInfos); } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesProductOrderService.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesProductOrderService.java index ba7dc040..616a627f 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesProductOrderService.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesProductOrderService.java @@ -1,7 +1,11 @@ package com.hw.mes.service; +import java.util.Date; import java.util.List; +import com.hw.common.core.constant.MesConstants; +import com.hw.common.core.exception.ServiceException; +import com.hw.common.security.utils.SecurityUtils; import com.hw.mes.domain.MesMaterialBom; import com.hw.mes.domain.MesProductOrder; @@ -91,6 +95,22 @@ public interface IMesProductOrderService */ public int productOrderPublish(MesProductOrder mesProductOrder); + /** + * 工单暂停 + * + * @param mesProductOrder 生产工单 + * @return + */ + public int productOrderPause(MesProductOrder mesProductOrder); + + /** + * 工单继续 + * + * @param mesProductOrder 生产工单 + * @return + */ + public int productOrderContinue(MesProductOrder mesProductOrder); + /** * 校验BOM是否被生产工单选择 * @param materialBomId diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesSaleOrderService.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesSaleOrderService.java index b7338ef1..57287866 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesSaleOrderService.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesSaleOrderService.java @@ -1,6 +1,8 @@ package com.hw.mes.service; import java.util.List; + +import com.hw.mes.api.domain.vo.MesSaleOrderTransferVo; import com.hw.mes.domain.MesSaleOrder; /** @@ -66,4 +68,11 @@ public interface IMesSaleOrderService * @return 销售订单信息 */ public List selectMesSaleOrderJoinMaterialList(MesSaleOrder mesSaleOrder); + + /** + * 库存转换销售订单时,更新销售订单转入或转出数量 + * @param mesSaleOrderTransferVo + * @return + */ + public boolean transferSaleOrders(MesSaleOrderTransferVo mesSaleOrderTransferVo); } 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 c0fac5b4..f5cda1d5 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 @@ -1090,4 +1090,28 @@ public class MesBaseBarcodeInfoServiceImpl implements IMesBaseBarcodeInfoService return 1; } + + /** + * 条码信息转销售订单 + * + * @param mesBaseBarcodeInfos 条码信息列表 + * @return 结果 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public boolean transferBaseBarcodeInfos(List mesBaseBarcodeInfos) { + int updateSize = 0; + for (MesBaseBarcodeInfo mesBaseBarcodeInfo : mesBaseBarcodeInfos) { + MesBaseBarcodeInfo dbMesBaseBarcodeInfo = mesBaseBarcodeInfoMapper.selectMesBaseBarcodeInfoByBarcodeInfo(mesBaseBarcodeInfo.getBarcodeInfo()); + if (dbMesBaseBarcodeInfo == null) { + return false; + } + mesBaseBarcodeInfo.setBarcodeId(dbMesBaseBarcodeInfo.getBarcodeId()); + mesBaseBarcodeInfo.setUpdateBy(SecurityUtils.getUsername()); + mesBaseBarcodeInfo.setUpdateTime(DateUtils.getNowDate()); + updateSize += mesBaseBarcodeInfoMapper.updateMesBaseBarcodeInfo(mesBaseBarcodeInfo); + } + + return updateSize > 0; + } } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesProductOrderServiceImpl.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesProductOrderServiceImpl.java index db2773d5..d2a15a8d 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesProductOrderServiceImpl.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesProductOrderServiceImpl.java @@ -311,6 +311,59 @@ public class MesProductOrderServiceImpl implements IMesProductOrderService { return this.updateMesProductOrder(productOrder); } + /** + * 工单暂停 + * + * @param mesProductOrder 生产工单 + * @return + */ + @Override + public int productOrderPause(MesProductOrder mesProductOrder) { + MesProductOrder dbProductOrder = mesProductOrderMapper.selectMesProductOrderByProductOrderId(mesProductOrder.getProductOrderId()); + String productOrderStatus = dbProductOrder.getOrderStatus(); + // 工单状态:0-待发布;1-已发布;2-已完成;3-已开始;4-暂停;8-已撤回;9-已删除 + //已发布和已开始的可以改为暂停 + if(!productOrderStatus.equals(MesConstants.PUBLISHED) && + !productOrderStatus.equals(MesConstants.BEGIN)){ + String orderStatusPrompt = MesConstants.ORDER_STATUS_PROMPT_MAP.get(productOrderStatus); + throw new ServiceException(String.format("此生产任务已经%s,不能暂停!", orderStatusPrompt)); + } + + MesProductOrder productOrder = new MesProductOrder(); + productOrder.setProductOrderId(mesProductOrder.getProductOrderId()); + productOrder.setOrderStatus(MesConstants.PAUSE); + productOrder.setUpdateTime(new Date()); + productOrder.setUpdateBy(SecurityUtils.getUsername()); + return mesProductOrderMapper.updateMesProductOrder(productOrder); + } + + /** + * 工单继续 + * + * @param mesProductOrder 生产工单 + * @return + */ + @Override + public int productOrderContinue(MesProductOrder mesProductOrder) { + MesProductOrder dbProductOrder = mesProductOrderMapper.selectMesProductOrderByProductOrderId(mesProductOrder.getProductOrderId()); + String productOrderStatus = dbProductOrder.getOrderStatus(); + // 工单状态:0-待发布;1-已发布;2-已完成;3-已开始;4-暂停;8-已撤回;9-已删除 + //已暂停的可以改为已开始 + if(!productOrderStatus.equals(MesConstants.PAUSE)){ + String orderStatusPrompt = MesConstants.ORDER_STATUS_PROMPT_MAP.get(productOrderStatus); + throw new ServiceException(String.format("此生产任务已经%s,不能继续开始!", orderStatusPrompt)); + } + + MesProductOrder productOrder = new MesProductOrder(); + productOrder.setProductOrderId(mesProductOrder.getProductOrderId()); + productOrder.setOrderStatus(MesConstants.BEGIN); + productOrder.setUpdateTime(new Date()); + productOrder.setUpdateBy(SecurityUtils.getUsername()); + return mesProductOrderMapper.updateMesProductOrder(productOrder); + } + + + /** * 校验BOM是否被生产工单选择 * diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesSaleOrderServiceImpl.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesSaleOrderServiceImpl.java index 27610903..c2e08f79 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesSaleOrderServiceImpl.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesSaleOrderServiceImpl.java @@ -1,13 +1,21 @@ package com.hw.mes.service.impl; +import java.math.BigDecimal; +import java.util.Date; import java.util.List; + import com.hw.common.core.utils.DateUtils; import com.hw.common.core.utils.StringUtils; +import com.hw.common.security.utils.SecurityUtils; +import com.hw.mes.api.domain.MesBaseBarcodeInfo; +import com.hw.mes.api.domain.vo.MesSaleOrderTransferVo; +import com.hw.mes.mapper.MesBaseBarcodeInfoMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.hw.mes.mapper.MesSaleOrderMapper; import com.hw.mes.domain.MesSaleOrder; import com.hw.mes.service.IMesSaleOrderService; +import org.springframework.transaction.annotation.Transactional; /** * 销售订单信息Service业务层处理 @@ -16,11 +24,13 @@ import com.hw.mes.service.IMesSaleOrderService; * @date 2024-02-19 */ @Service -public class MesSaleOrderServiceImpl implements IMesSaleOrderService -{ +public class MesSaleOrderServiceImpl implements IMesSaleOrderService { @Autowired private MesSaleOrderMapper mesSaleOrderMapper; + @Autowired + private MesBaseBarcodeInfoMapper mesBaseBarcodeInfoMapper; + /** * 查询销售订单信息 * @@ -28,8 +38,7 @@ public class MesSaleOrderServiceImpl implements IMesSaleOrderService * @return 销售订单信息 */ @Override - public MesSaleOrder selectMesSaleOrderBySaleOrderId(Long saleOrderId) - { + public MesSaleOrder selectMesSaleOrderBySaleOrderId(Long saleOrderId) { return mesSaleOrderMapper.selectMesSaleOrderBySaleOrderId(saleOrderId); } @@ -40,8 +49,7 @@ public class MesSaleOrderServiceImpl implements IMesSaleOrderService * @return 销售订单信息 */ @Override - public List selectMesSaleOrderList(MesSaleOrder mesSaleOrder) - { + public List selectMesSaleOrderList(MesSaleOrder mesSaleOrder) { return mesSaleOrderMapper.selectMesSaleOrderList(mesSaleOrder); } @@ -52,8 +60,7 @@ public class MesSaleOrderServiceImpl implements IMesSaleOrderService * @return 结果 */ @Override - public int insertMesSaleOrder(MesSaleOrder mesSaleOrder) - { + public int insertMesSaleOrder(MesSaleOrder mesSaleOrder) { mesSaleOrder.setCreateTime(DateUtils.getNowDate()); return mesSaleOrderMapper.insertMesSaleOrder(mesSaleOrder); } @@ -65,8 +72,7 @@ public class MesSaleOrderServiceImpl implements IMesSaleOrderService * @return 结果 */ @Override - public int updateMesSaleOrder(MesSaleOrder mesSaleOrder) - { + public int updateMesSaleOrder(MesSaleOrder mesSaleOrder) { mesSaleOrder.setUpdateTime(DateUtils.getNowDate()); return mesSaleOrderMapper.updateMesSaleOrder(mesSaleOrder); } @@ -78,8 +84,7 @@ public class MesSaleOrderServiceImpl implements IMesSaleOrderService * @return 结果 */ @Override - public int deleteMesSaleOrderBySaleOrderIds(Long[] saleOrderIds) - { + public int deleteMesSaleOrderBySaleOrderIds(Long[] saleOrderIds) { return mesSaleOrderMapper.deleteMesSaleOrderBySaleOrderIds(saleOrderIds); } @@ -90,13 +95,11 @@ public class MesSaleOrderServiceImpl implements IMesSaleOrderService * @return 结果 */ @Override - public int deleteMesSaleOrderBySaleOrderId(Long saleOrderId) - { + public int deleteMesSaleOrderBySaleOrderId(Long saleOrderId) { return mesSaleOrderMapper.deleteMesSaleOrderBySaleOrderId(saleOrderId); } - /** * 查询销售订单信息列表,Join mes_base_material_info(将销售订单中的material_id转换成mes_base_material_info中的material_id) * @@ -104,10 +107,57 @@ public class MesSaleOrderServiceImpl implements IMesSaleOrderService * @return 销售订单信息 */ @Override - public List selectMesSaleOrderJoinMaterialList(MesSaleOrder mesSaleOrder) - { + public List selectMesSaleOrderJoinMaterialList(MesSaleOrder mesSaleOrder) { mesSaleOrder.setMaterialSpec(StringUtils.isNotEmpty(mesSaleOrder.getMaterialSpec()) ? mesSaleOrder.getMaterialSpec().replaceAll("\\s+", "") : ""); return mesSaleOrderMapper.selectMesSaleOrderJoinMaterialList(mesSaleOrder); } + + + /** + * 库存转换销售订单时,更新销售订单转入或转出数量 + * + * @param mesSaleOrderTransferVo + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public boolean transferSaleOrders(MesSaleOrderTransferVo mesSaleOrderTransferVo) { + Long oldSaleOrderId = mesSaleOrderTransferVo.getOldSaleOrderId(); + Long newSaleOrderId = mesSaleOrderTransferVo.getNewSaleOrderId(); + BigDecimal transferAmount = mesSaleOrderTransferVo.getTransferAmount(); + Date currentDate = new Date(); + String userName = SecurityUtils.getUsername(); + if (oldSaleOrderId != null && !oldSaleOrderId.equals(0L)) { + MesSaleOrder oldSaleOrder = mesSaleOrderMapper.selectMesSaleOrderBySaleOrderId(oldSaleOrderId); + oldSaleOrder.setTransferOutAmount(transferAmount); + oldSaleOrder.setUpdateBy(userName); + oldSaleOrder.setUpdateTime(currentDate); + mesSaleOrderMapper.updateMesSaleOrder(oldSaleOrder); + } + + if (newSaleOrderId != null && !newSaleOrderId.equals(0L)) { + MesSaleOrder newSaleOrder = mesSaleOrderMapper.selectMesSaleOrderBySaleOrderId(newSaleOrderId); + newSaleOrder.setTransferInAmount(transferAmount); + newSaleOrder.setUpdateBy(userName); + newSaleOrder.setUpdateTime(currentDate); + mesSaleOrderMapper.updateMesSaleOrder(newSaleOrder); + } + + List mesBaseBarcodeInfos = mesSaleOrderTransferVo.getMesBaseBarcodeInfos(); + int updateSize = 0; + for (MesBaseBarcodeInfo mesBaseBarcodeInfo : mesBaseBarcodeInfos) { + MesBaseBarcodeInfo dbMesBaseBarcodeInfo = mesBaseBarcodeInfoMapper.selectMesBaseBarcodeInfoByBarcodeInfo(mesBaseBarcodeInfo.getBarcodeInfo()); + if (dbMesBaseBarcodeInfo == null) { + return false; + } + mesBaseBarcodeInfo.setBarcodeId(dbMesBaseBarcodeInfo.getBarcodeId()); + mesBaseBarcodeInfo.setUpdateBy(SecurityUtils.getUsername()); + mesBaseBarcodeInfo.setUpdateTime(DateUtils.getNowDate()); + updateSize += mesBaseBarcodeInfoMapper.updateMesBaseBarcodeInfo(mesBaseBarcodeInfo); + } + + return updateSize > 0; + } + } diff --git a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesBaseBarcodeInfoMapper.xml b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesBaseBarcodeInfoMapper.xml index 97cf702c..c9017b70 100644 --- a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesBaseBarcodeInfoMapper.xml +++ b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesBaseBarcodeInfoMapper.xml @@ -266,6 +266,7 @@ plan_detail_code = #{planDetailCode}, sale_order_id = #{saleOrderId}, saleorder_code = #{saleorderCode}, + safe_flag = #{safeFlag}, project_no = #{projectNo}, transferred_plan_detail_code = #{transferredPlanDetailCode}, serial_number = #{serialNumber}, diff --git a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesProductOrderMapper.xml b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesProductOrderMapper.xml index 436da3bc..fabb166b 100644 --- a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesProductOrderMapper.xml +++ b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesProductOrderMapper.xml @@ -45,6 +45,7 @@ + @@ -87,6 +88,7 @@ mpo.update_by, mpo.update_time, mpo.pre_order_id, + mpo.pre_order_code, mbr.production_time from mes_product_order mpo left join (select a.route_id, @@ -179,6 +181,7 @@ update_time, plan_delivery_date, pre_order_id, + pre_order_code, #{orderCode}, @@ -211,6 +214,7 @@ #{updateTime}, #{planDeliveryDate}, #{preOrderId}, + #{preOrderCode}, @@ -247,6 +251,7 @@ update_time = #{updateTime}, plan_delivery_date = #{planDeliveryDate}, pre_order_id = #{preOrderId}, + pre_order_code = #{preOrderCode}, where product_order_id = #{productOrderId} @@ -286,4 +291,93 @@ where mpo.pre_order_id = #{productOrderId} + + + + + + + + diff --git a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesSaleOrderMapper.xml b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesSaleOrderMapper.xml index 1204be35..056f1c1b 100644 --- a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesSaleOrderMapper.xml +++ b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesSaleOrderMapper.xml @@ -20,6 +20,8 @@ + + @@ -187,6 +189,8 @@ order_amount = #{orderAmount}, complete_amount = #{completeAmount}, release_qty = #{releaseQty}, + transfer_in_amount = #{transferInAmount}, + transfer_out_amount = #{transferOutAmount}, is_release = #{isRelease}, approve_date = #{approveDate}, erp_modify_date = #{erpModifyDate}, @@ -235,6 +239,8 @@ mso.order_amount, mso.complete_amount, mso.release_qty, + mso.transfer_in_amount, + mso.transfer_out_amount, mso.is_release, mso.plan_delivery_date, mso.approve_date, diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/controller/WmsStockTotalController.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/controller/WmsStockTotalController.java index 6d7a36c1..3a2b3582 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/controller/WmsStockTotalController.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/controller/WmsStockTotalController.java @@ -6,6 +6,8 @@ import javax.servlet.http.HttpServletResponse; import com.alibaba.fastjson2.JSONObject; import com.hw.common.core.constant.WmsConstants; import com.hw.wms.domain.WmsBaseWarehouse; +import com.hw.wms.domain.vo.WmsStockTotalTransferVo; +import com.hw.wms.domain.vo.WmsStockTransferVo; import com.hw.wms.service.IWmsBaseWarehouseService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -130,4 +132,39 @@ public class WmsStockTotalController extends BaseController JSONObject returnObj = wmsStockTotalService.selectWmsStockTotalJoinRealListBySaleOrder(wmsStockTotal); return success(returnObj); } + + + + /** + * 原材料库存转销售订单(或将有销售订单的转安全库存) + */ + @RequiresPermissions("wms:stocktotal:transfer") + @Log(title = "原材料库存", businessType = BusinessType.TRANSFER) + @PostMapping("/transferRaw") + public AjaxResult transferRaw(@RequestBody WmsStockTransferVo wmsStockTransferVo) + { + return toAjax(wmsStockTotalService.transferRaw(wmsStockTransferVo)); + } + + /** + * 原材料总库存转销售订单(或将有销售订单的转安全库存) + */ + @RequiresPermissions("wms:stocktotal:transfer") + @Log(title = "原材料库存", businessType = BusinessType.TRANSFER) + @PostMapping("/transferRawStockTotal") + public AjaxResult transferRawStockTotal(@RequestBody WmsStockTotalTransferVo wmsStockTotalTransferVo) + { + return toAjax(wmsStockTotalService.transferRawStockTotal(wmsStockTotalTransferVo)); + } + + /** + * 成品总库存转销售订单(或将有销售订单的转安全库存) + */ + @RequiresPermissions("wms:stocktotal:transferProduct") + @Log(title = "原材料库存", businessType = BusinessType.TRANSFER) + @PostMapping("/transferProductStockTotal") + public AjaxResult transferProductStockTotal(@RequestBody WmsStockTotalTransferVo wmsStockTotalTransferVo) + { + return toAjax(wmsStockTotalService.transferProductStockTotal(wmsStockTotalTransferVo)); + } } diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/WmsStockTotal.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/WmsStockTotal.java index 3d8e21d9..7001328f 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/WmsStockTotal.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/WmsStockTotal.java @@ -110,6 +110,8 @@ public class WmsStockTotal extends BaseEntity { private String materialSpec; + private String batchFlag; + private String materialCodeNameSpec; private BigDecimal outstockAmount;//已申请数量 @@ -266,6 +268,14 @@ public class WmsStockTotal extends BaseEntity { this.materialSpec = materialSpec; } + public String getBatchFlag() { + return batchFlag; + } + + public void setBatchFlag(String batchFlag) { + this.batchFlag = batchFlag; + } + public String getMaterialCodeNameSpec() { return materialCodeNameSpec; } diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/vo/WmsStockTotalTransferVo.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/vo/WmsStockTotalTransferVo.java new file mode 100644 index 00000000..a562093c --- /dev/null +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/vo/WmsStockTotalTransferVo.java @@ -0,0 +1,42 @@ +package com.hw.wms.domain.vo; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; + +/** + * @Description: 总库存转库存VO对象 + * @ClassName: WmsStockTotalTransferVo + * @Author : xins + * @Date :2024-9-3 14:05 + * @Version :1.0 + */ +@Data +public class WmsStockTotalTransferVo { + + //安全库存标识 + @NotBlank(message = "安全库存标识必须输入") + private String safeFlag; + + //销售订单ID + @NotNull(message = "销售订单ID必须输入") + private Long saleOrderId; + + //销售订单号 + @NotBlank(message = "销售订单号必须输入") + private String saleorderCode; + + //总库存ID + @NotNull(message = "总库存ID必须输入") + private Long stockTotalId; + + //转库存数量 + @NotNull(message = "转库存数量必须输入") + private BigDecimal transferAmount; + + //序号 + @NotNull(message = "序号必须输入") + private int index; +} diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/vo/WmsStockTransferVo.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/vo/WmsStockTransferVo.java new file mode 100644 index 00000000..62e042f5 --- /dev/null +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/vo/WmsStockTransferVo.java @@ -0,0 +1,34 @@ +package com.hw.wms.domain.vo; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 库位库存转库存VO对象 + * @ClassName: WmsStockTransferVo + * @Author : xins + * @Date :2024-9-2 15:58 + * @Version :1.0 + */ +@Data +public class WmsStockTransferVo { + + //安全库存标识 + @NotBlank(message = "安全库存标识必须输入") + private String safeFlag; + + //销售订单ID + @NotNull(message = "销售订单ID必须输入") + private Long saleOrderId; + + //销售订单号 + @NotBlank(message = "销售订单号必须输入") + private String saleorderCode; + + //序号(中间加-)库存ID + @NotBlank(message = "序号-库存ID必须输入") + private String[] indexStockIds; + +} diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsProductStockMapper.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsProductStockMapper.java index 51002042..8fad0d33 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsProductStockMapper.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsProductStockMapper.java @@ -123,4 +123,13 @@ public interface WmsProductStockMapper */ public List selectOnlyWmsProductStockInList(WmsProductStock wmsProductStock); + /** + * 查询待转订单的成品库存信息列表 + * + * @param wmsProductStock 成品库存 + * @return 成品库存集合 + */ + public List selectWmsProductStocks4Transfer(WmsProductStock wmsProductStock); + + } diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsRawStockMapper.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsRawStockMapper.java index e66e26ef..160e385d 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsRawStockMapper.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsRawStockMapper.java @@ -109,4 +109,13 @@ public interface WmsRawStockMapper { */ public List selectWmsRawStockJoinList(WmsRawStock wmsRawStock); + /** + * 查询原材料库存列表,提供给转库使用 + * + * @param wmsRawStock 原材料库存 + * @return 原材料库存集合 + */ + public List selectWmsRawStocks4Transfer(WmsRawStock wmsRawStock); + + } diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/IWmsStockTotalService.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/IWmsStockTotalService.java index 6757c2d5..5a37076e 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/IWmsStockTotalService.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/IWmsStockTotalService.java @@ -6,6 +6,9 @@ import java.util.Map; import com.alibaba.fastjson2.JSONObject; import com.hw.wms.domain.WmsStockTotal; +import com.hw.wms.domain.vo.WmsStockTotalTransferVo; +import com.hw.wms.domain.vo.WmsStockTransferVo; +import org.springframework.transaction.annotation.Transactional; /** * 原材料库存Service接口 @@ -96,4 +99,24 @@ public interface IWmsStockTotalService * @return 成品库存 */ public List selectWmsStockTotalList4ProductApply(WmsStockTotal wmsStockTotal); + + /** + * 原材料库存转销售订单或安全库存 + * @param wmsStockTransferVo + */ + public int transferRaw(WmsStockTransferVo wmsStockTransferVo); + + /** + * 原材料总库存转销售订单或安全库存 + * + * @param wmsStockTotalTransferVo + */ + public int transferRawStockTotal(WmsStockTotalTransferVo wmsStockTotalTransferVo); + + /** + * 原材料总库存转销售订单或安全库存 + * + * @param wmsStockTotalTransferVo + */ + public int transferProductStockTotal(WmsStockTotalTransferVo wmsStockTotalTransferVo); } diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsRawInstockServiceImpl.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsRawInstockServiceImpl.java index fdfb795b..dd048b4b 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsRawInstockServiceImpl.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsRawInstockServiceImpl.java @@ -195,9 +195,9 @@ public class WmsRawInstockServiceImpl implements IWmsRawInstockService { wmsRawInstock.setApplyBy(userName); wmsRawInstock.setApplyDate(currentDate); - if (!baseBarcodeInfo.getBarcodeType().equals(MesConstants.MES_BARCODE_TYPE_RAW_REGULAR)) { +// if (!baseBarcodeInfo.getBarcodeType().equals(MesConstants.MES_BARCODE_TYPE_RAW_REGULAR)) { wmsRawInstock.setMaterialBarcode(wmsRawInstockVo.getMaterialBarcode()); - } +// } wmsRawInstock.setMaterialBatchCode(baseBarcodeInfo.getBatchCode()); wmsRawInstock.setMaterialId(baseBarcodeInfo.getMaterialId()); wmsRawInstock.setInstockAmount(wmsRawInstockVo.getInstockAmount()); diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsRawStockServiceImpl.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsRawStockServiceImpl.java index 61fc4805..6d28102b 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsRawStockServiceImpl.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsRawStockServiceImpl.java @@ -60,7 +60,7 @@ public class WmsRawStockServiceImpl implements IWmsRawStockService { wmsRawStock.setSafeFlag(null); } List wmsRawStocks = wmsRawStockMapper.selectWmsRawStockJoinList(wmsRawStock); - ; + return wmsRawStocks; } diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsStockTotalServiceImpl.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsStockTotalServiceImpl.java index b544f5ee..f7cf51e3 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsStockTotalServiceImpl.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsStockTotalServiceImpl.java @@ -1,20 +1,33 @@ package com.hw.wms.service.impl; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; import com.alibaba.fastjson2.JSONObject; +import com.hw.common.core.constant.SecurityConstants; import com.hw.common.core.constant.WmsConstants; +import com.hw.common.core.domain.R; import com.hw.common.core.exception.ServiceException; +import com.hw.common.core.utils.StringUtils; +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.MesSaleOrderTransferVo; +import com.hw.wms.domain.WmsBaseLocation; import com.hw.wms.domain.WmsProductStock; +import com.hw.wms.domain.WmsRawStock; +import com.hw.wms.domain.vo.WmsStockTotalTransferVo; +import com.hw.wms.domain.vo.WmsStockTransferVo; +import com.hw.wms.mapper.WmsBaseLocationMapper; +import com.hw.wms.mapper.WmsProductStockMapper; +import com.hw.wms.mapper.WmsRawStockMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.hw.wms.mapper.WmsStockTotalMapper; import com.hw.wms.domain.WmsStockTotal; import com.hw.wms.service.IWmsStockTotalService; +import org.springframework.transaction.annotation.Transactional; /** * 原材料库存Service业务层处理 @@ -23,11 +36,25 @@ import com.hw.wms.service.IWmsStockTotalService; * @date 2024-03-14 */ @Service -public class WmsStockTotalServiceImpl implements IWmsStockTotalService -{ +public class WmsStockTotalServiceImpl implements IWmsStockTotalService { @Autowired private WmsStockTotalMapper wmsStockTotalMapper; + @Autowired + private WmsRawStockMapper wmsRawStockMapper; + + @Autowired + private WmsProductStockMapper wmsProductStockMapper; + + @Autowired + private WmsBaseLocationMapper wmsBaseLocationMapper; + + @Autowired + private RemoteMesService remoteMesService; + + public static final int TRANSFER_TYPE_RAW_STOCK = 1; + public static final int TRANSFER_TYPE_STOCK_TOTAL = 2; + /** * 查询原材料库存 * @@ -35,8 +62,7 @@ public class WmsStockTotalServiceImpl implements IWmsStockTotalService * @return 原材料库存 */ @Override - public WmsStockTotal selectWmsStockTotalByStockTotalId(Long stockTotalId) - { + public WmsStockTotal selectWmsStockTotalByStockTotalId(Long stockTotalId) { return wmsStockTotalMapper.selectWmsStockTotalByStockTotalId(stockTotalId); } @@ -47,8 +73,7 @@ public class WmsStockTotalServiceImpl implements IWmsStockTotalService * @return 原材料库存 */ @Override - public List selectWmsStockTotalList(WmsStockTotal wmsStockTotal) - { + public List selectWmsStockTotalList(WmsStockTotal wmsStockTotal) { return wmsStockTotalMapper.selectWmsStockTotalList(wmsStockTotal); } @@ -59,8 +84,9 @@ public class WmsStockTotalServiceImpl implements IWmsStockTotalService * @return 原材料库存 */ @Override - public List selectWmsStockTotalJoinList(WmsStockTotal wmsStockTotal) - { + public List selectWmsStockTotalJoinList(WmsStockTotal wmsStockTotal) { + wmsStockTotal.setMaterialSpec(StringUtils.isNotEmpty(wmsStockTotal.getMaterialSpec()) + ? wmsStockTotal.getMaterialSpec().replaceAll("\\s+", "") : ""); return wmsStockTotalMapper.selectWmsStockTotalJoinList(wmsStockTotal); } @@ -72,8 +98,7 @@ public class WmsStockTotalServiceImpl implements IWmsStockTotalService * @return 结果 */ @Override - public int insertWmsStockTotal(WmsStockTotal wmsStockTotal) - { + public int insertWmsStockTotal(WmsStockTotal wmsStockTotal) { return wmsStockTotalMapper.insertWmsStockTotal(wmsStockTotal); } @@ -84,8 +109,7 @@ public class WmsStockTotalServiceImpl implements IWmsStockTotalService * @return 结果 */ @Override - public int updateWmsStockTotal(WmsStockTotal wmsStockTotal) - { + public int updateWmsStockTotal(WmsStockTotal wmsStockTotal) { return wmsStockTotalMapper.updateWmsStockTotal(wmsStockTotal); } @@ -96,8 +120,7 @@ public class WmsStockTotalServiceImpl implements IWmsStockTotalService * @return 结果 */ @Override - public int deleteWmsStockTotalByStockTotalIds(Long[] stockTotalIds) - { + public int deleteWmsStockTotalByStockTotalIds(Long[] stockTotalIds) { return wmsStockTotalMapper.deleteWmsStockTotalByStockTotalIds(stockTotalIds); } @@ -108,17 +131,11 @@ public class WmsStockTotalServiceImpl implements IWmsStockTotalService * @return 结果 */ @Override - public int deleteWmsStockTotalByStockTotalId(Long stockTotalId) - { + public int deleteWmsStockTotalByStockTotalId(Long stockTotalId) { return wmsStockTotalMapper.deleteWmsStockTotalByStockTotalId(stockTotalId); } - - - - - /** * 查询总库存列表(根据销售订单查询库存,以及根据plancode和plandetailcode申请的数量,包含安全库存),Join material * @@ -126,8 +143,7 @@ public class WmsStockTotalServiceImpl implements IWmsStockTotalService * @return 总库存 */ @Override - public List selectWmsStockTotalJoinListBySaleOrder(WmsStockTotal wmsStockTotal) - { + public List selectWmsStockTotalJoinListBySaleOrder(WmsStockTotal wmsStockTotal) { return wmsStockTotalMapper.selectWmsStockTotalJoinListBySaleOrder(wmsStockTotal); } @@ -138,41 +154,39 @@ public class WmsStockTotalServiceImpl implements IWmsStockTotalService * @return 总库存 */ @Override - public JSONObject selectWmsStockTotalJoinRealListBySaleOrder(WmsStockTotal wmsStockTotal) - { - List wmsStockTotals = wmsStockTotalMapper.selectWmsStockTotalJoinRealListBySaleOrder(wmsStockTotal); + public JSONObject selectWmsStockTotalJoinRealListBySaleOrder(WmsStockTotal wmsStockTotal) { + List wmsStockTotals = wmsStockTotalMapper.selectWmsStockTotalJoinRealListBySaleOrder(wmsStockTotal); // 使用流处理合并所有列表并计数(计算每个物料总库存数量) - Map totalAmountMap = wmsStockTotals.stream().filter(w->w.getTotalAmount()!=null) + Map totalAmountMap = wmsStockTotals.stream().filter(w -> w.getTotalAmount() != null) .collect(Collectors.groupingBy( WmsStockTotal::getMaterialId, // 根据id分组 Collectors.reducing(BigDecimal.ZERO, // 初始化求和值为0 WmsStockTotal::getTotalAmount, BigDecimal::add))); // 使用流处理合并所有列表并计数(计算每个物料总占用数量) - Map occupyAmountMap = wmsStockTotals.stream().filter(w->w.getOccupyAmount()!=null) + Map occupyAmountMap = wmsStockTotals.stream().filter(w -> w.getOccupyAmount() != null) .collect(Collectors.groupingBy( WmsStockTotal::getMaterialId, // 根据id分组 Collectors.reducing(BigDecimal.ZERO, // 初始化求和值为0 WmsStockTotal::getOccupyAmount, BigDecimal::add))); // 使用流处理合并所有列表并计数(计算每个物料总使用数量) - Map realOutstockAmountMap = wmsStockTotals.stream().filter(w->w.getOutstockAmount()!=null) + Map realOutstockAmountMap = wmsStockTotals.stream().filter(w -> w.getOutstockAmount() != null) .collect(Collectors.groupingBy( WmsStockTotal::getMaterialId, // 根据id分组 Collectors.reducing(BigDecimal.ZERO, // 初始化求和值为0 WmsStockTotal::getOutstockAmount, BigDecimal::add))); JSONObject returnObj = new JSONObject(); - returnObj.put("totalAmountMap",totalAmountMap); - returnObj.put("occupyAmountMap",occupyAmountMap); - returnObj.put("outstockAmountMap",realOutstockAmountMap); + returnObj.put("totalAmountMap", totalAmountMap); + returnObj.put("occupyAmountMap", occupyAmountMap); + returnObj.put("outstockAmountMap", realOutstockAmountMap); return returnObj; } - /** * 根据销售订单查询成品库存列表Join material,warehouse,saleorder,totalAmount>0 * @@ -192,4 +206,246 @@ public class WmsStockTotalServiceImpl implements IWmsStockTotalService } + /** + * 原材料库位库存转销售订单或安全库存 + * + * @param wmsStockTransferVo + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int transferRaw(WmsStockTransferVo wmsStockTransferVo) { + String[] indexStockIds = wmsStockTransferVo.getIndexStockIds(); + String safeFlag = wmsStockTransferVo.getSafeFlag(); + Long saleOrderId = wmsStockTransferVo.getSaleOrderId(); + String saleorderCode = wmsStockTransferVo.getSaleorderCode(); + List mesBaseBarcodeInfos = new ArrayList<>(); + for (String indexStockId : indexStockIds) { + String[] indexStockIdArr = indexStockId.split("-"); + int index = Integer.parseInt(indexStockIdArr[0]) + 1; + Long rawStockId = Long.valueOf(indexStockIdArr[1]); + WmsRawStock wmsRawStock = wmsRawStockMapper.selectWmsRawStockByRawStockId(rawStockId); + if (!WmsConstants.WMS_RAW_STOCK_COMPLETE_FLAG_YES.equals(wmsRawStock.getCompleteFlag())) { + throw new ServiceException(String.format("序号%s,库存为拆分的物料,不能转", index)); + } + MesBaseBarcodeInfo mesBaseBarcodeInfo = this.transferRawStock(wmsRawStock, saleOrderId, saleorderCode, safeFlag, index, TRANSFER_TYPE_RAW_STOCK); + mesBaseBarcodeInfos.add(mesBaseBarcodeInfo); + } + + R transferBaseBarcodeInfosResult = remoteMesService.transferBaseBarcodeInfos(mesBaseBarcodeInfos, SecurityConstants.INNER); + if (!transferBaseBarcodeInfosResult.getData()) { + throw new RuntimeException("更新条码失败"); + } + + return 1; + } + + public MesBaseBarcodeInfo transferRawStock(WmsRawStock wmsRawStock, Long saleOrderId, String saleorderCode, String safeFlag, int index, int transferType) { + if (transferType == TRANSFER_TYPE_RAW_STOCK) { + Long dbSaleOrderId = wmsRawStock.getSaleOrderId(); + String dbSafeFlag = wmsRawStock.getSafeFlag(); + if (dbSaleOrderId.equals(saleOrderId)) { + if (dbSafeFlag.equals(WmsConstants.WMS_SAFE_FLAG_YES)) { + throw new ServiceException(String.format("序号%s,库存已经是安全库存", index)); + } else { + throw new ServiceException(String.format("序号%s,库存销售订单跟转库存的销售订单相同", index)); + } + } + } + + BigDecimal stockOccupyAmount = wmsRawStock.getOccupyAmount() == null ? BigDecimal.ZERO : wmsRawStock.getOccupyAmount(); + BigDecimal stockFrozenAmount = wmsRawStock.getFrozenAmount() == null ? BigDecimal.ZERO : wmsRawStock.getFrozenAmount(); + if (stockOccupyAmount.compareTo(BigDecimal.ZERO) > 0 || stockFrozenAmount.compareTo(BigDecimal.ZERO) > 0) { + throw new ServiceException(String.format("序号%s,库存有占用数量,不能转库存", index)); + } + WmsStockTotal wmsStockTotal = this.getWmsStockTotalByUI(wmsRawStock); + BigDecimal stockTotalOccupyAmount = wmsStockTotal.getOccupyAmount() == null ? BigDecimal.ZERO : wmsStockTotal.getOccupyAmount(); + BigDecimal stockTotalFrozenAmount = wmsStockTotal.getFrozenAmount() == null ? BigDecimal.ZERO : wmsStockTotal.getFrozenAmount(); + if (stockTotalOccupyAmount.compareTo(BigDecimal.ZERO) > 0 || stockTotalFrozenAmount.compareTo(BigDecimal.ZERO) > 0) { + throw new ServiceException(String.format("序号%s,库存有占用数量,不能转库存", index)); + } + + if (transferType == TRANSFER_TYPE_RAW_STOCK) { + WmsBaseLocation baseLocation = wmsBaseLocationMapper.selectWmsBaseLocationByLocationCode(wmsRawStock.getLocationCode()); + if (!baseLocation.getLocationStatus().equals(WmsConstants.WMS_BASE_LOCATION_STATUS_NORMAL)) { + String statusPrompt = WmsConstants.LOCATION_STATUS_PROMPT_MAP.get(baseLocation.getLocationStatus()); + throw new ServiceException(String.format("序号%s,库位状态为%s", index, statusPrompt)); + } + } + MesBaseBarcodeInfo mesBaseBarcodeInfo = new MesBaseBarcodeInfo(); + mesBaseBarcodeInfo.setSaleOrderId(saleOrderId); + mesBaseBarcodeInfo.setSaleorderCode(saleorderCode); + mesBaseBarcodeInfo.setSafeFlag(safeFlag); + mesBaseBarcodeInfo.setBarcodeInfo(wmsRawStock.getInstockBatch()); + + wmsRawStock.setSafeFlag(safeFlag); + wmsRawStock.setSaleOrderId(saleOrderId); + wmsRawStock.setSaleorderCode(saleorderCode); + wmsRawStock.setUpdateDate(new Date()); + wmsRawStock.setUpdateBy(SecurityUtils.getUsername()); + wmsRawStockMapper.updateWmsRawStock(wmsRawStock); + + return mesBaseBarcodeInfo; + } + + + private WmsStockTotal getWmsStockTotalByUI(WmsRawStock wmsRawStock) { + WmsStockTotal queryStockTotal = new WmsStockTotal(); + queryStockTotal.setWarehouseId(wmsRawStock.getWarehouseId()); + queryStockTotal.setMaterialId(wmsRawStock.getMaterialId()); + queryStockTotal.setSaleOrderId(wmsRawStock.getSaleOrderId()); + List wmsStockTotals = wmsStockTotalMapper.selectOnlyWmsStockTotalList(queryStockTotal); + + return wmsStockTotals != null && !wmsStockTotals.isEmpty() ? wmsStockTotals.get(0) : null; + } + + + /** + * 原材料总库存转销售订单或安全库存 + * + * @param wmsStockTotalTransferVo + */ + @Transactional(rollbackFor = Exception.class) + @Override + public int transferRawStockTotal(WmsStockTotalTransferVo wmsStockTotalTransferVo) { + BigDecimal transferAmount = wmsStockTotalTransferVo.getTransferAmount(); + String safeFlag = wmsStockTotalTransferVo.getSafeFlag(); + Long saleOrderId = wmsStockTotalTransferVo.getSaleOrderId(); + String saleorderCode = wmsStockTotalTransferVo.getSaleorderCode(); + WmsStockTotal wmsStockTotal = wmsStockTotalMapper.selectWmsStockTotalByStockTotalId(wmsStockTotalTransferVo.getStockTotalId()); + if (!wmsStockTotal.getStockType().equals(WmsConstants.RWA_STOCK_STOCK_TYPE_RAW)) { + throw new ServiceException("物料类型不对"); + } + + BigDecimal totalAmount = wmsStockTotal.getTotalAmount(); + BigDecimal occupyAmount = wmsStockTotal.getOccupyAmount() == null ? BigDecimal.ZERO : wmsStockTotal.getOccupyAmount(); + BigDecimal frozenAmount = wmsStockTotal.getFrozenAmount() == null ? BigDecimal.ZERO : wmsStockTotal.getFrozenAmount(); + BigDecimal availableAmount = totalAmount.subtract(occupyAmount).subtract(frozenAmount); + if (transferAmount.compareTo(availableAmount) > 0) { + throw new ServiceException("转库存数量不能大于可用数量" + availableAmount); + } + + if (wmsStockTotal.getSaleOrderId().equals(saleOrderId)) { + if (wmsStockTotal.getSafeFlag().equals(WmsConstants.WMS_SAFE_FLAG_YES)) { + throw new ServiceException(String.format("序号%s,库存已经是安全库存", wmsStockTotalTransferVo.getIndex())); + } else { + throw new ServiceException(String.format("序号%s,库存销售订单跟转库存的销售订单相同", wmsStockTotalTransferVo.getIndex())); + } + } + + + Long warehouseId = wmsStockTotal.getWarehouseId(); + Long materialId = wmsStockTotal.getMaterialId(); + + WmsRawStock queryRawStock = new WmsRawStock(); + queryRawStock.setMaterialId(materialId); + queryRawStock.setWarehouseId(warehouseId); + queryRawStock.setSaleOrderId(wmsStockTotal.getSaleOrderId()); + Map params = new HashMap<>(); + params.put("limit", transferAmount); + queryRawStock.setParams(params); + //先找浅库位,再找浅库位对应的深库位 + List wmsRawStocks = wmsRawStockMapper.selectWmsRawStocks4Transfer(queryRawStock); + if (wmsRawStocks == null || wmsRawStocks.isEmpty()) { + throw new ServiceException("没有可转库存明细"); + } + if (wmsRawStocks.size() < transferAmount.intValue()) { + throw new ServiceException("可转库存明细数量为%s", wmsRawStocks.size()); + } + + List mesBaseBarcodeInfos = new ArrayList<>(); + for (WmsRawStock wmsRawStock : wmsRawStocks) { + MesBaseBarcodeInfo mesBaseBarcodeInfo = this.transferRawStock(wmsRawStock, saleOrderId, saleorderCode, safeFlag, wmsStockTotalTransferVo.getIndex(), TRANSFER_TYPE_STOCK_TOTAL); + mesBaseBarcodeInfos.add(mesBaseBarcodeInfo); + } + + R transferBaseBarcodeInfosResult = remoteMesService.transferBaseBarcodeInfos(mesBaseBarcodeInfos, SecurityConstants.INNER); + if (!transferBaseBarcodeInfosResult.getData()) { + throw new RuntimeException("更新条码失败"); + } + + return 1; + } + + + /** + * 原材料总库存转销售订单或安全库存 + * + * @param wmsStockTotalTransferVo + */ + @Transactional(rollbackFor = Exception.class) + @Override + public int transferProductStockTotal(WmsStockTotalTransferVo wmsStockTotalTransferVo) { + BigDecimal transferAmount = wmsStockTotalTransferVo.getTransferAmount(); + String safeFlag = wmsStockTotalTransferVo.getSafeFlag(); + Long saleOrderId = wmsStockTotalTransferVo.getSaleOrderId(); + String saleorderCode = wmsStockTotalTransferVo.getSaleorderCode(); + WmsStockTotal wmsStockTotal = wmsStockTotalMapper.selectWmsStockTotalByStockTotalId(wmsStockTotalTransferVo.getStockTotalId()); + + BigDecimal totalAmount = wmsStockTotal.getTotalAmount(); + BigDecimal occupyAmount = wmsStockTotal.getOccupyAmount() == null ? BigDecimal.ZERO : wmsStockTotal.getOccupyAmount(); + BigDecimal frozenAmount = wmsStockTotal.getFrozenAmount() == null ? BigDecimal.ZERO : wmsStockTotal.getFrozenAmount(); + BigDecimal availableAmount = totalAmount.subtract(occupyAmount).subtract(frozenAmount); + if (transferAmount.compareTo(availableAmount) > 0) { + throw new ServiceException("转库存数量不能大于可用数量" + availableAmount); + } + + if (wmsStockTotal.getSaleOrderId().equals(saleOrderId)) { + if (wmsStockTotal.getSafeFlag().equals(WmsConstants.WMS_SAFE_FLAG_YES)) { + throw new ServiceException(String.format("序号%s,库存已经是安全库存", wmsStockTotalTransferVo.getIndex())); + } else { + throw new ServiceException(String.format("序号%s,库存销售订单跟转库存的销售订单相同", wmsStockTotalTransferVo.getIndex())); + } + } + + Long warehouseId = wmsStockTotal.getWarehouseId(); + Long materialId = wmsStockTotal.getMaterialId(); + + WmsProductStock queryProductStock = new WmsProductStock(); + queryProductStock.setProductId(materialId); + queryProductStock.setWarehouseId(warehouseId); + queryProductStock.setSaleOrderId(wmsStockTotal.getSaleOrderId()); + Map params = new HashMap<>(); + params.put("limit", transferAmount); + queryProductStock.setParams(params); + //先找浅库位,再找浅库位对应的深库位 + List wmsProductStocks = wmsProductStockMapper.selectWmsProductStocks4Transfer(queryProductStock); + if (wmsProductStocks == null || wmsProductStocks.isEmpty()) { + throw new ServiceException("没有可转库存明细"); + } + if (wmsProductStocks.size() < transferAmount.intValue()) { + throw new ServiceException("可转库存明细数量为%s", wmsProductStocks.size()); + } + + List mesBaseBarcodeInfos = new ArrayList<>(); + for (WmsProductStock wmsProductStock : wmsProductStocks) { + MesBaseBarcodeInfo mesBaseBarcodeInfo = new MesBaseBarcodeInfo(); + mesBaseBarcodeInfo.setSaleOrderId(saleOrderId); + mesBaseBarcodeInfo.setSaleorderCode(saleorderCode); + mesBaseBarcodeInfo.setSafeFlag(safeFlag); + mesBaseBarcodeInfo.setBarcodeInfo(wmsProductStock.getProductBatch()); + mesBaseBarcodeInfos.add(mesBaseBarcodeInfo); + + wmsProductStock.setSafeFlag(safeFlag); + wmsProductStock.setSaleOrderId(saleOrderId); + wmsProductStock.setSaleorderCode(saleorderCode); + wmsProductStock.setUpdateDate(new Date()); + wmsProductStock.setUpdateBy(SecurityUtils.getUsername()); + wmsProductStockMapper.updateWmsProductStock(wmsProductStock); + } + + MesSaleOrderTransferVo mesSaleOrderTransferVo = new MesSaleOrderTransferVo(); + mesSaleOrderTransferVo.setTransferAmount(transferAmount); + mesSaleOrderTransferVo.setOldSaleOrderId(wmsStockTotal.getSaleOrderId()); + mesSaleOrderTransferVo.setNewSaleOrderId(saleOrderId); + mesSaleOrderTransferVo.setMesBaseBarcodeInfos(mesBaseBarcodeInfos); + + R transferBaseBarcodeInfosResult = remoteMesService.transferSaleOrders(mesSaleOrderTransferVo, SecurityConstants.INNER); + if (!transferBaseBarcodeInfosResult.getData()) { + throw new RuntimeException("销售订单信息转换失败"); + } + + return 1; + } + + } diff --git a/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsProductStockMapper.xml b/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsProductStockMapper.xml index ce390b54..172a6fd9 100644 --- a/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsProductStockMapper.xml +++ b/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsProductStockMapper.xml @@ -327,6 +327,21 @@ + + + + - + 暂停 @@ -567,7 +567,7 @@ import { addProductOrder, updateProductOrder, getMaterialUsages, getStockTotalWithRawOutstocks, - getOrderCode, productOrderLockInventory, productOrderPublish, productOrderRecall + getOrderCode, productOrderLockInventory, productOrderPublish, productOrderPause,productOrderContinue,productOrderRecall } from "@/api/mes/productOrder"; import addSaleOrder from '@//views/mes/productOrder/addSaleOrder.vue'; import {getMaterialVisionList} from "@//api/mes/materialBom"; @@ -771,9 +771,10 @@ export default { }; }, activated() { - if (this.$route.query.queryParams != null) { + if (this.$route.query.queryParams != null && this.$route.query.queryParams.pageSize) { this.queryParams = {...this.$route.query.queryParams} } + this.getList(); }, created() { @@ -1188,11 +1189,31 @@ export default { /** 暂停 */ handlePause(row) { - + this.form.productOrderId = row.productOrderId; + this.$modal.confirm('是否确认暂停生产任务编号为"' + row.orderCode + '"的数据项?').then(function () { + return true; + }).then(() => { + productOrderPause(this.form).then(response => { + this.getList(); + this.$modal.msgSuccess("暂停成功"); + }); + }).catch(() => { + this.getList(); + }); }, handleContinue(row) { - + this.form.productOrderId = row.productOrderId; + this.$modal.confirm('是否确认继续开始生产任务编号为"' + row.orderCode + '"的数据项?').then(function () { + return true; + }).then(() => { + productOrderContinue(this.form).then(response => { + this.getList(); + this.$modal.msgSuccess("继续开始成功"); + }); + }).catch(() => { + this.getList(); + }); }, // handlePublish(row) { diff --git a/hw-ui/src/views/mes/productOrder/productionScheduling.vue b/hw-ui/src/views/mes/productOrder/productionScheduling.vue index 6f1292ba..275d828f 100644 --- a/hw-ui/src/views/mes/productOrder/productionScheduling.vue +++ b/hw-ui/src/views/mes/productOrder/productionScheduling.vue @@ -1,10 +1,10 @@ - + - + @@ -177,11 +194,11 @@ - + - - + + @@ -279,9 +296,9 @@ - + @@ -794,9 +811,9 @@ export default { loading: true, // 显示搜索条件 showSearch: true, - // 生产工单;生产工单表格数据 + // 生产任务;生产任务表格数据 productOrderList: [], - // 生产工单;生产工单树选项 + // 生产任务;生产任务树选项 productOrderOptions: [], // 弹出层标题 title: '', @@ -843,7 +860,7 @@ export default { // 表单校验 rules: { orderCode: [ - { required: true, message: '工单编号不能为空', trigger: 'blur' } + { required: true, message: '任务编号不能为空', trigger: 'blur' } ], saleOrderFlag: [ { required: true, message: '销售订单标识不能为空', trigger: 'blur' } @@ -854,7 +871,7 @@ export default { }, columns: [ { key: 0, label: `主键标识`, visible: false }, - { key: 1, label: `工单编号`, visible: true }, + { key: 1, label: `任务编号`, visible: true }, { key: 2, label: `销售订单ID`, visible: false }, { key: 3, label: `销售订单标识`, visible: false }, { key: 4, label: `销售订单编号`, visible: false }, @@ -875,17 +892,17 @@ export default { { key: 19, label: `计划结束时间`, visible: false }, { key: 20, label: `开始时间`, visible: false }, { key: 21, label: `完成时间`, visible: false }, - { key: 22, label: `工单状态`, visible: false }, + { key: 22, label: `任务状态`, visible: false }, { key: 23, label: `库存锁定标识`, visible: false }, { key: 24, label: `备注`, visible: false }, { key: 25, label: `创建人`, visible: false }, { key: 26, label: `创建时间`, visible: false }, { key: 27, label: `更新人`, visible: false }, { key: 28, label: `更新时间`, visible: false }, - { key: 29, label: `前置生产工单ID`, visible: false }, + { key: 29, label: `前置生产任务ID`, visible: false }, { key: 30, label: `工期(天)`, visible: true }, { key: 31, label: `计划编号`, visible: true }, - { key: 32, label: `前置生产工单编号`, visible: true }, + { key: 32, label: `前置生产任务编号`, visible: true }, { key: 33, label: `计划开始结束时间`, visible: true } ] } @@ -907,7 +924,7 @@ export default { } }, methods: { - /** 查询生产工单;生产工单列表 */ + /** 查询生产任务;生产任务列表 */ getList() { this.loading = true allListProductOrder(this.queryParams).then(response => { @@ -916,7 +933,7 @@ export default { this.loading = false }); }, - /** 转换生产工单;生产工单数据结构 */ + /** 转换生产任务;生产任务数据结构 */ normalizer(node) { if (node.children && !node.children.length) { delete node.children @@ -927,7 +944,7 @@ export default { children: node.children } }, - /** 查询生产工单;生产工单下拉树结构 */ + /** 查询生产任务;生产任务下拉树结构 */ getTreeselect() { // allListProductOrder().then(response => { let response = a @@ -1006,7 +1023,7 @@ export default { this.form.preOrderId = 0 } this.open = true - this.title = '添加生产工单' + this.title = '添加生产任务' }, /** 保存按钮操作 */ handleSave() { @@ -1017,7 +1034,7 @@ export default { this.getList(); }); }else{ - this.$modal.msgError('生产派工单计划时间范围超出生产工单计划时间范围!') + this.$modal.msgError('生产派工计划时间范围超出生产任务计划时间范围!') } }, extractFields(data) { @@ -1080,7 +1097,7 @@ export default { getProductOrder(row.productOrderId).then(response => { this.form = response.data this.open = true - this.title = '修改生产工单' + this.title = '修改生产任务' }) }, /** 提交按钮 */ @@ -1105,7 +1122,7 @@ export default { }, /** 删除按钮操作 */ handleDelete(row) { - this.$modal.confirm('是否确认删除生产工单;生产工单编号为"' + row.productOrderId + '"的数据项?').then(function() { + this.$modal.confirm('是否确认删除生产任务;生产任务编号为"' + row.productOrderId + '"的数据项?').then(function() { return delProductOrder(row.productOrderId) }).then(() => { this.getList() diff --git a/hw-ui/src/views/wms/info/stocktotal/index.vue b/hw-ui/src/views/wms/info/stocktotal/index.vue index 325d30aa..c25eb2f2 100644 --- a/hw-ui/src/views/wms/info/stocktotal/index.vue +++ b/hw-ui/src/views/wms/info/stocktotal/index.vue @@ -101,15 +101,21 @@ + + + + @@ -127,6 +133,29 @@ + + + + 库位库存明细信息 - + + + 转库存 + + + + + + + + @@ -159,10 +206,10 @@ - + @@ -173,7 +220,7 @@ @@ -187,24 +234,79 @@ + + + + + + + + {{ dict.label }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +