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 31cfca70..6fda6467 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 @@ -179,4 +179,17 @@ public interface RemoteMesService { public R getBarcodeInfoByBindBarcode(@PathVariable("bindBarcode") String bindBarcode, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + /** + * 通过条码查询条码信息 + * + * @param dateStr 时间字符串(yyyy-MM-dd) + * @param source 请求来源 + * @return 结果 + */ + @GetMapping("/purchaseOrder/autoOutstockLastPurchaseOrders/{dateStr}") + public R autoOutstockLastPurchaseOrders(@PathVariable("dateStr") String dateStr, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + + } 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 b26cbcbb..3ee1be2f 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 @@ -100,6 +100,11 @@ public class RemoteMesFallbackFactory implements FallbackFactory getBarcodeInfoByBindBarcode(String bindBarcode, String source) { return R.fail("根据成品条码信息获取原材料条码失败:" + throwable.getMessage()); } + + @Override + public R autoOutstockLastPurchaseOrders(String dateStr, String source) { + return R.fail("自动出库之前采购订单的物料信息失败:" + throwable.getMessage()); + } }; } } diff --git a/hw-api/hw-api-wms/src/main/java/com/hw/wms/api/RemoteWmsService.java b/hw-api/hw-api-wms/src/main/java/com/hw/wms/api/RemoteWmsService.java index b3282953..b5658d69 100644 --- a/hw-api/hw-api-wms/src/main/java/com/hw/wms/api/RemoteWmsService.java +++ b/hw-api/hw-api-wms/src/main/java/com/hw/wms/api/RemoteWmsService.java @@ -5,6 +5,7 @@ import com.hw.common.core.constant.ServiceNameConstants; import com.hw.common.core.domain.R; import com.hw.common.core.web.domain.AjaxResult; import com.hw.wms.api.domain.WmsWarehouseMaterial; +import com.hw.wms.api.domain.vo.WmsAutoOutstockVo; import com.hw.wms.api.domain.vo.WmsProductStockVo; import com.hw.wms.api.domain.vo.WmsRawStockVo; import com.hw.wms.api.factory.RemoteWmsFallbackFactory; @@ -69,4 +70,9 @@ public interface RemoteWmsService { @PostMapping("/productoutstock/isProductOutstock") public R isProductOutstock(@Validated @RequestBody WmsProductStockVo queryProductStockVo, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + + @PostMapping("/rawstock/autoOutstock") + public R autoOutstock(@Validated @RequestBody WmsAutoOutstockVo wmsAutoOutstockVo, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + } diff --git a/hw-api/hw-api-wms/src/main/java/com/hw/wms/api/domain/vo/WmsAutoOutstockVo.java b/hw-api/hw-api-wms/src/main/java/com/hw/wms/api/domain/vo/WmsAutoOutstockVo.java new file mode 100644 index 00000000..0d48c1e3 --- /dev/null +++ b/hw-api/hw-api-wms/src/main/java/com/hw/wms/api/domain/vo/WmsAutoOutstockVo.java @@ -0,0 +1,16 @@ +package com.hw.wms.api.domain.vo; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; + +@Data +public class WmsAutoOutstockVo { + + @NotBlank(message="采购订单号不能为空") + private String poNo; + + @NotEmpty(message="物料ID不能为空") + private Long materialId; +} diff --git a/hw-api/hw-api-wms/src/main/java/com/hw/wms/api/factory/RemoteWmsFallbackFactory.java b/hw-api/hw-api-wms/src/main/java/com/hw/wms/api/factory/RemoteWmsFallbackFactory.java index 7c0f8464..2fb467ee 100644 --- a/hw-api/hw-api-wms/src/main/java/com/hw/wms/api/factory/RemoteWmsFallbackFactory.java +++ b/hw-api/hw-api-wms/src/main/java/com/hw/wms/api/factory/RemoteWmsFallbackFactory.java @@ -4,6 +4,7 @@ import com.hw.common.core.domain.R; import com.hw.common.core.web.domain.AjaxResult; import com.hw.wms.api.RemoteWmsService; import com.hw.wms.api.domain.WmsWarehouseMaterial; +import com.hw.wms.api.domain.vo.WmsAutoOutstockVo; import com.hw.wms.api.domain.vo.WmsProductStockVo; import com.hw.wms.api.domain.vo.WmsRawStockVo; import org.slf4j.Logger; @@ -65,6 +66,11 @@ public class RemoteWmsFallbackFactory implements FallbackFactory autoOutstock(WmsAutoOutstockVo wmsAutoOutstockVo, 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 908b063f..77bd981b 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 @@ -219,7 +219,7 @@ public class MesConstants { * 采购订单采购状态 */ public static final String MES_PURCHASE_ORDER_STATUS_TOPURCHASE = "1";//待采购 - + public static final String MES_PURCHASE_ORDER_STATUS_AUTO_OUTSTOCK_COMPLETE = "4";//自动出库完成 /** * 物料大类(1,原材料 3,成品) @@ -280,4 +280,10 @@ public class MesConstants { */ public static final String MES_PRODUCT_ORDER_CABINET_CHANNEL_PURCHASE = "1";//外部采购 public static final String MES_PRODUCT_ORDER_CABINET_CHANNEL_INTERNAL = "2";//内部生产 + + + /** + * 物料自动出库标识 + */ + public static final String MES_MATERIAL_AUTO_OUTSTOCK_FLAG_YES="1"; } 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 22a214e5..45eb2fdc 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 @@ -192,6 +192,8 @@ public class WmsConstants { public static final String WMS_RAW_OUTSTOCK_TASK_TYPE_PRODUCTION_INSTALL = "3";//组装出库 + public static final String WMS_RAW_OUTSTOCK_TASK_TYPE_AUTO_OUTSTOCK = "4";//自动出库 + public static final String WMS_RAW_OUTSTOCK_TASK_TYPE_OTHER = "9";//其他 public static final String WMS_RAW_OUTSTOCK_TASK_TYPE_MOVE = "2";//移库出库,暂时不用 diff --git a/hw-modules/hw-job/src/main/java/com/hw/job/task/RyTask.java b/hw-modules/hw-job/src/main/java/com/hw/job/task/RyTask.java index 87c5d762..4555f123 100644 --- a/hw-modules/hw-job/src/main/java/com/hw/job/task/RyTask.java +++ b/hw-modules/hw-job/src/main/java/com/hw/job/task/RyTask.java @@ -1,16 +1,20 @@ package com.hw.job.task; import com.hw.common.core.constant.SecurityConstants; +import com.hw.common.core.utils.DateUtils; import com.hw.dms.api.RemoteDmsService; import com.hw.ems.api.RemoteEmsService; import com.hw.jindie.api.RemoteJindieService; import com.hw.jindie.api.domain.vo.ErpSyncInfoVo; +import com.hw.mes.api.RemoteMesService; import com.hw.wms.api.RemoteWmsService; import io.swagger.models.auth.In; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.hw.common.core.utils.StringUtils; +import java.util.Date; + /** * 定时任务调度测试 * @@ -27,7 +31,8 @@ public class RyTask private RemoteJindieService remoteJindieService; @Autowired private RemoteWmsService remoteWmsService; - + @Autowired + private RemoteMesService remoteMesService; public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) { @@ -133,4 +138,11 @@ public class RyTask remoteDmsService.getDmsAlarmNotificationScheduledTask(SecurityConstants.INNER); } + + public void autoOutstock(String dateStr){ + if (StringUtils.isEmpty(dateStr)) { + dateStr = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, new Date()); + } + remoteMesService.autoOutstockLastPurchaseOrders(dateStr,SecurityConstants.INNER); + } } 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 09083822..acb76d45 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 @@ -3,7 +3,7 @@ package com.hw.mes.controller; import java.util.List; import javax.servlet.http.HttpServletResponse; -import com.hw.mes.api.domain.MesOrderBind; +import com.hw.common.core.domain.R; import com.hw.mes.domain.MesSaleOrder; import com.hw.mes.service.IMesOrderBindService; import com.hw.mes.service.IMesSaleOrderService; @@ -233,4 +233,18 @@ public class MesPurchaseOrderController extends BaseController return getDataTable(list); } + + + /** + * 自动出库不在特定日期raw_instock记录中的采购订单信息(group by) + */ + // @InnerAuth + @GetMapping(value="/autoOutstockLastPurchaseOrders/{dateStr}") + public R autoOutstockLastPurchaseOrders(@PathVariable("dateStr") String dateStr) + { + return R.ok(mesPurchaseOrderService.autoOutstockLastPurchaseOrders(dateStr)); + } + + + } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesPurchaseOrderMapper.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesPurchaseOrderMapper.java index 787bc8d6..a458f193 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesPurchaseOrderMapper.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesPurchaseOrderMapper.java @@ -133,4 +133,14 @@ public interface MesPurchaseOrderMapper */ public List selectPurchaseOrderJoinList(MesPurchaseOrder mesPurchaseOrder); + + + /** + * 查询原材料条码绑定的成品条码信息 + * @param applyDateStr + * @return + */ + public List selectNotRawInstockPurchaseOrderList(String applyDateStr); + + } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesPurchaseOrderService.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesPurchaseOrderService.java index 3267185b..a7036765 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesPurchaseOrderService.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesPurchaseOrderService.java @@ -143,4 +143,11 @@ public interface IMesPurchaseOrderService * @return 采购订单信息 */ public List selectPurchaseOrderJoinList(MesPurchaseOrder mesPurchaseOrder); + + /** + * 查询不在特定日期raw_instock记录中的采购订单信息(group by) + * @param dateStr + * @return List + */ + public int autoOutstockLastPurchaseOrders(String dateStr); } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesImportImpl.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesImportImpl.java index b131ca0e..be717f9f 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesImportImpl.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesImportImpl.java @@ -267,7 +267,7 @@ public class MesImportImpl implements IMesImportService { // IOUtils.closeQuietly(is); // } - return "BOM导入成功"; + return "导入成功"; } /** @@ -311,6 +311,7 @@ public class MesImportImpl implements IMesImportService { productBom = productBom.replaceAll("(.*?)", ""); + productBom = productBom.replaceAll("(.*?)", ""); MesBaseMaterialInfo productMaterial = mesBaseMaterialInfoMapper.selectMesBaseMaterialInfoByMaterialCode(productBom); if (productMaterial == null) { throw new ServiceException("Excel格式错误:物料编号:" + productBom + "的信息不存在!"); @@ -378,7 +379,18 @@ public class MesImportImpl implements IMesImportService { materialBom.setMaterialBomDesc(parentBomDesc); materialBom.setParentId(parentBomId); materialBom.setActiveFlag("1"); - materialBom.setStandardAmount(BigDecimal.valueOf(amountCell.getNumericCellValue())); + switch (amountCell.getCellType()) { + case STRING: + materialBom.setStandardAmount(BigDecimal.valueOf(Double.parseDouble(amountCell.getStringCellValue()))); + break; + case NUMERIC: + materialBom.setStandardAmount(BigDecimal.valueOf(amountCell.getNumericCellValue())); + break; + default: + throw new ServiceException("Excel数量列的格式错误:请设置成数值格式"); + } + + materialBom.setErpMaterialId(materialInfo.getErpId()); if (brandCell != null) { materialBom.setBrand(brandCell.getStringCellValue()); @@ -414,7 +426,7 @@ public class MesImportImpl implements IMesImportService { } finally { IOUtils.closeQuietly(is); } - return "BOM导入成功"; + return "导入成功"; } } 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 381c125f..e3420d2c 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 @@ -577,6 +577,7 @@ public class MesProductPlanDetailServiceImpl implements IMesProductPlanDetailSer if (barcodeProductPlan == null) { throw new ServiceException("无派工信息"); } + //根据派工单号dispatchcode和五楼组装工序processid获取生产计划 MesProductPlan queryProductPlan = new MesProductPlan(); queryProductPlan.setDispatchCode(barcodeProductPlan.getDispatchCode()); queryProductPlan.setProcessId(mesConfig.getPdaAssembleProcessId()); diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesPurchaseOrderServiceImpl.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesPurchaseOrderServiceImpl.java index ee17c4b3..63509a1a 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesPurchaseOrderServiceImpl.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesPurchaseOrderServiceImpl.java @@ -6,7 +6,10 @@ import java.util.Date; import java.util.List; import java.util.stream.Collectors; +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.domain.R; import com.hw.common.core.exception.ServiceException; import com.hw.common.core.utils.DateUtils; import com.hw.common.core.utils.StringUtils; @@ -15,12 +18,16 @@ import com.hw.mes.api.domain.MesBaseMaterialInfo; import com.hw.mes.api.domain.MesOrderBind; import com.hw.mes.domain.MesSaleOrder; import com.hw.mes.mapper.*; +import com.hw.wms.api.RemoteWmsService; +import com.hw.wms.api.domain.vo.WmsAutoOutstockVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.hw.mes.domain.MesPurchaseOrder; import com.hw.mes.service.IMesPurchaseOrderService; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; + /** * 采购订单信息Service业务层处理 * @@ -44,6 +51,9 @@ public class MesPurchaseOrderServiceImpl implements IMesPurchaseOrderService { @Autowired private MesOrderBindMapper mesOrderBindMapper; + @Resource + private RemoteWmsService remoteWmsService; + /** * 查询采购订单信息 * @@ -425,7 +435,6 @@ public class MesPurchaseOrderServiceImpl implements IMesPurchaseOrderService { } - /** * 查询采购订单信息,join order bind * @@ -440,4 +449,64 @@ public class MesPurchaseOrderServiceImpl implements IMesPurchaseOrderService { ? mesPurchaseOrder.getProductSpec().replaceAll("\\s+", "") : ""); return mesPurchaseOrderMapper.selectPurchaseOrderJoinList(mesPurchaseOrder); } + + + /** + * 查询不在特定日期raw_instock记录中的采购订单信息(group by) + * + * @param dateStr + * @return List + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int autoOutstockLastPurchaseOrders(String dateStr) { + if (StringUtils.isEmpty(dateStr)) { + dateStr = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, new Date()); + } + + List mesPurchaseOrderList = mesPurchaseOrderMapper.selectNotRawInstockPurchaseOrderList(dateStr); + List autoStockPurchaseOrderList = new ArrayList<>(); + if (mesPurchaseOrderList != null && !mesPurchaseOrderList.isEmpty()) { + //判断物料信息是否自动出库 + for (MesPurchaseOrder mesPurchaseOrder : mesPurchaseOrderList) { + MesBaseMaterialInfo mesBaseMaterialInfo = mesBaseMaterialInfoMapper.selectMesBaseMaterialInfoByErpId(mesPurchaseOrder.getMaterialId()); + if (StringUtils.isNotEmpty(mesBaseMaterialInfo.getAutoOutstockFlag()) && + mesBaseMaterialInfo.getAutoOutstockFlag().equals(MesConstants.MES_MATERIAL_AUTO_OUTSTOCK_FLAG_YES)) { + autoStockPurchaseOrderList.add(mesPurchaseOrder); + } + } + } + if (!autoStockPurchaseOrderList.isEmpty()) { + for(MesPurchaseOrder mpo : autoStockPurchaseOrderList){ + MesBaseMaterialInfo mesBaseMaterialInfo = mesBaseMaterialInfoMapper.selectMesBaseMaterialInfoByErpId(mpo.getMaterialId()); + + mpo.setOrderStatus(MesConstants.MES_PURCHASE_ORDER_STATUS_AUTO_OUTSTOCK_COMPLETE); + mpo.setUpdateBy("autoOutstock"); + mpo.setUpdateTime(new Date()); + mesPurchaseOrderMapper.updateMesPurchaseOrder(mpo); + + WmsAutoOutstockVo wmsAutoOutstockVo = new WmsAutoOutstockVo(); + wmsAutoOutstockVo.setMaterialId(mesBaseMaterialInfo.getMaterialId()); + wmsAutoOutstockVo.setPoNo(mpo.getPoNo()); + R autoOutstockReturnMsg = remoteWmsService.autoOutstock(wmsAutoOutstockVo, SecurityConstants.INNER); + if (autoOutstockReturnMsg.getCode() != Constants.SUCCESS) {//抛出异常,回滚事务 + throw new RuntimeException(autoOutstockReturnMsg.getMsg()); + } + } + } + + + /*select * from wms_raw_instock wri where date_format(apply_date,'%y%m%d') = date_format('2024-6-21','%y%m%d') + and exists (select 1 from mes_base_material_info mbmi where wri.material_id=mbmi.material_id and mbmi.auto_outstock_flag='1'); + + select * from mes_purchase_order mpo where not exists (select 1 from wms_raw_instock wri where + date_format(wri.apply_date,'%y%m%d') = date_format('2024-6-21','%y%m%d') and mpo.material_id = wri.material_id) + and mpo.order_status ='3' and mpo.auto_outstock_flag ='0' group_by mpo.po_no; + + --循环 + select * from wms_raw_stock wrs where wrs.material_id=? + and exists (select 1 from mes_base_barcode_info mbbi where wrs.instock_batch = mbbi.barcode_info and mbbi.po_no=? )*/ + return 1; + } + } diff --git a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesBaseMaterialInfoMapper.xml b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesBaseMaterialInfoMapper.xml index bf72bcf1..6ec9687a 100644 --- a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesBaseMaterialInfoMapper.xml +++ b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesBaseMaterialInfoMapper.xml @@ -358,7 +358,8 @@ bmi.use_org_id, bmi.prodline_id, bmi.approve_date, - bmi.erp_modify_date + bmi.erp_modify_date, + bmi.auto_outstock_flag from mes_base_material_info bmi where bmi.erp_id = #{erpId} limit 1 diff --git a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesOrderBindMapper.xml b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesOrderBindMapper.xml index 7d478552..224236fa 100644 --- a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesOrderBindMapper.xml +++ b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesOrderBindMapper.xml @@ -157,7 +157,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and pbmi.product_code like concat('%', #{productCode}, '%') and pbmi.product_name like concat('%', #{productName}, '%') and mob.po_no like concat('%', #{poNo}, '%') - and mbmi.material_code = like concat('%', #{materialCode}, '%') + and mbmi.material_code like concat('%', #{materialCode}, '%') and mbmi.material_name like concat('%', #{materialName}, '%') and replace(mbmi.material_spec,' ','') like concat('%', #{materialSpec}, '%') diff --git a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesPurchaseOrderMapper.xml b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesPurchaseOrderMapper.xml index 67b7614e..b5476fc3 100644 --- a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesPurchaseOrderMapper.xml +++ b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesPurchaseOrderMapper.xml @@ -463,7 +463,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and pbmi.material_code like concat('%', #{productCode}, '%') and pbmi.material_name like concat('%', #{productName}, '%') and mpo.po_no like concat('%', #{poNo}, '%') - and mbmi.material_code = like concat('%', #{materialCode}, '%') + and mbmi.material_code like concat('%', #{materialCode}, '%') and mbmi.material_name like concat('%', #{materialName}, '%') and replace(mbmi.material_spec,' ','') like concat('%', #{materialSpec}, '%') @@ -473,4 +473,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" order by mpo.po_no + + + + + + diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/controller/WmsRawStockController.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/controller/WmsRawStockController.java index 21119ea0..dbe21c94 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/controller/WmsRawStockController.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/controller/WmsRawStockController.java @@ -4,7 +4,9 @@ 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.wms.api.domain.vo.WmsAutoOutstockVo; import com.hw.wms.api.domain.vo.WmsRawStockVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -124,4 +126,15 @@ public class WmsRawStockController extends BaseController return success(exists); } + + /** + * 自动删除库存 + */ + @InnerAuth + @PostMapping(value = "/autoOutstock") + public R autoOutstock(@RequestBody WmsAutoOutstockVo wmsAutoOutstockVo) + { + return R.ok(wmsRawStockService.autoOutstock(wmsAutoOutstockVo)); + } + } diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/WmsRawOutstock.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/WmsRawOutstock.java index 101211da..e6ea146e 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/WmsRawOutstock.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/WmsRawOutstock.java @@ -114,7 +114,7 @@ public class WmsRawOutstock extends BaseEntity { /** * 任务类型(1生产领料,2移库出库,3合库出库,9其他领料) */ - @Excel(name = "任务类型(1生产领料,2移库出库,3合库出库,9其他领料)") + @Excel(name = "任务类型(1生产领料,2移库出库,3合库出库,4自动出库9其他领料)") private String taskType; private String splitFlag; 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 160e385d..585c6344 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 @@ -118,4 +118,13 @@ public interface WmsRawStockMapper { public List selectWmsRawStocks4Transfer(WmsRawStock wmsRawStock); + /** + * 查询需要自动出库的原材料库存列表 + * + * @param materialId 物料ID + * @param poNo 采购订单号 + * @return 原材料库存集合 + */ + public List selectAutoOutstockRawStockList(@Param("materialId") Long materialId, @Param("poNo") String poNo); + } diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/IWmsRawStockService.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/IWmsRawStockService.java index 3bc4e2db..1876981e 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/IWmsRawStockService.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/IWmsRawStockService.java @@ -1,7 +1,10 @@ package com.hw.wms.service; import java.util.List; + +import com.hw.wms.api.domain.vo.WmsAutoOutstockVo; import com.hw.wms.domain.WmsRawStock; +import org.springframework.transaction.annotation.Transactional; /** * 原材料库存Service接口 @@ -81,4 +84,12 @@ public interface IWmsRawStockService * @return */ public boolean checkRawStock(WmsRawStock wmsRawStock); + + + /** + * 自动出库(自动删除之前采购订单的库存) + * @param wmsAutoOutstockVo + */ + + public int autoOutstock(WmsAutoOutstockVo wmsAutoOutstockVo); } 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 6d28102b..38226da1 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 @@ -1,14 +1,21 @@ package com.hw.wms.service.impl; +import java.util.Date; import java.util.List; import com.hw.common.core.constant.WmsConstants; 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.wms.api.domain.vo.WmsAutoOutstockVo; +import com.hw.wms.domain.WmsRawOutstock; +import com.hw.wms.mapper.WmsRawOutstockMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.hw.wms.mapper.WmsRawStockMapper; import com.hw.wms.domain.WmsRawStock; import com.hw.wms.service.IWmsRawStockService; +import org.springframework.transaction.annotation.Transactional; /** * 原材料库存Service业务层处理 @@ -21,6 +28,10 @@ public class WmsRawStockServiceImpl implements IWmsRawStockService { @Autowired private WmsRawStockMapper wmsRawStockMapper; + @Autowired + private WmsRawOutstockMapper wmsRawOutstockMapper; + + /** * 查询原材料库存 * @@ -132,4 +143,47 @@ public class WmsRawStockServiceImpl implements IWmsRawStockService { List wmsRawStocks = wmsRawStockMapper.selectWmsRawStockList(wmsRawStock); return wmsRawStocks != null && !wmsRawStocks.isEmpty(); } + + + /** + * 自动出库(自动删除之前采购订单的库存) + * + * @param wmsAutoOutstockVo + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int autoOutstock(WmsAutoOutstockVo wmsAutoOutstockVo) { + List wmsRawStocks = wmsRawStockMapper.selectAutoOutstockRawStockList(wmsAutoOutstockVo.getMaterialId(), wmsAutoOutstockVo.getPoNo()); + Date currentDate = new Date(); + for (WmsRawStock wmsRawStock : wmsRawStocks) { + wmsRawStockMapper.deleteWmsRawStockByRawStockId(wmsRawStock.getRawStockId()); + + WmsRawOutstock wmsRawOutstock = new WmsRawOutstock(); + wmsRawOutstock.setTaskCode(Seq.getId(Seq.rawOutstockSeqType, Seq.rawOutstockSeqCode)); + wmsRawOutstock.setWarehouseId(wmsRawStock.getWarehouseId()); + wmsRawOutstock.setLocationCode(wmsRawStock.getLocationCode()); + wmsRawOutstock.setSaleOrderId(wmsRawStock.getSaleOrderId()); + wmsRawOutstock.setMaterialId(wmsRawStock.getMaterialId()); + wmsRawOutstock.setMaterialBatch(wmsRawStock.getInstockBatch()); + wmsRawOutstock.setOutstockAmount(wmsRawStock.getTotalAmount()); + wmsRawOutstock.setRealOutstockAmount(wmsRawStock.getTotalAmount()); + wmsRawOutstock.setOperationType(WmsConstants.WMS_OPERATION_TYPE_MANUAL); + wmsRawOutstock.setTaskType(WmsConstants.WMS_RAW_OUTSTOCK_TASK_TYPE_AUTO_OUTSTOCK); + wmsRawOutstock.setAuditStatus(WmsConstants.WMS_AUDIT_STATUS_PASS); + wmsRawOutstock.setExecuteStatus(WmsConstants.WMS_EXECUTE_STATUS_FINISH); + wmsRawOutstock.setApplyBy("autoOutstock"); + wmsRawOutstock.setApplyDate(currentDate); + wmsRawOutstock.setUpdateDate(currentDate); + wmsRawOutstock.setUpdateBy("autoOutstock"); + wmsRawOutstock.setBeginTime(currentDate); + wmsRawOutstock.setEndTime(currentDate); + + wmsRawOutstockMapper.insertWmsRawOutstock(wmsRawOutstock); + + } + + + return 1; + } + } diff --git a/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsRawStockMapper.xml b/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsRawStockMapper.xml index da52f2bf..a60e62e0 100644 --- a/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsRawStockMapper.xml +++ b/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsRawStockMapper.xml @@ -366,4 +366,11 @@ order by wbl.loc_column asc, wbl.loc_deep desc limit #{params.limit} + + + + diff --git a/hw-ui/src/views/board/fifthFloor/index.vue b/hw-ui/src/views/board/fifthFloor/index.vue index d2404bb0..6b84feaa 100644 --- a/hw-ui/src/views/board/fifthFloor/index.vue +++ b/hw-ui/src/views/board/fifthFloor/index.vue @@ -202,7 +202,7 @@ > @@ -1374,12 +1374,19 @@ export default { message: '已完成', type: 'success' }); + + this.form.planDetailStatus = setState("3"); + let productPlanRow = this.tableData.find(v => v.planCode === this.form.planCode); + productPlanRow.completeAmount = productPlanRow.completeAmount+1; } - getProductPlans({pageNum: this.nowNum1, pageSize: 5}).then(e => { - this.tableData = e.rows - this.totalNum1 = Math.ceil(e.total / 5) - this.tableClick(e.rows.find(v => v.planCode === this.form.planCode)) - }) + + + + // getProductPlans({pageNum: this.nowNum1, pageSize: 5}).then(e => { + // this.tableData = e.rows + // this.totalNum1 = Math.ceil(e.total / 5) + // this.tableClick(e.rows.find(v => v.planCode === this.form.planCode)) + // }) }).catch(() => { }); }, diff --git a/hw-ui/src/views/dms/dmsRecordInspect/index.vue b/hw-ui/src/views/dms/dmsRecordInspect/index.vue index 0e571fe9..ca423e98 100644 --- a/hw-ui/src/views/dms/dmsRecordInspect/index.vue +++ b/hw-ui/src/views/dms/dmsRecordInspect/index.vue @@ -66,7 +66,7 @@ value-format="yyyy-MM-dd" placeholder="请选择实际结束时间"> - --> + diff --git a/hw-ui/src/views/mes/barcode/endProductIndex.vue b/hw-ui/src/views/mes/barcode/endProductIndex.vue index 1139dfcb..0bbe9371 100644 --- a/hw-ui/src/views/mes/barcode/endProductIndex.vue +++ b/hw-ui/src/views/mes/barcode/endProductIndex.vue @@ -111,7 +111,7 @@