src/main/java/org/jeecg/modules/lsw/entity/LswMaterialInventory.java
@@ -9,6 +9,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.jeecg.common.aspect.annotation.Dict; import org.jeecg.modules.lsw.enums.MaterialInventoryStatusEnum; import org.jeecgframework.poi.excel.annotation.Excel; import org.springframework.format.annotation.DateTimeFormat; @@ -76,4 +77,15 @@ @Excel(name = "åºåç¶æ", width = 15) @ApiModelProperty(value = "åºåç¶æ") private String inventoryStatus; public LswMaterialInventory(){} public LswMaterialInventory(LswMaterialInbound inbound, String materialId, String inventoryCategory) { this.warehouseId = inbound.getWarehouseId(); this.quantity = inbound.getQuantity(); this.batchNumber = inbound.getBatchNumber(); this.inventoryStatus = MaterialInventoryStatusEnum.NORMAL.name(); this.inventoryCategory = inventoryCategory; this.materialId = materialId; } } src/main/java/org/jeecg/modules/lsw/enums/MaterialCategory.java
ÎļþÒÑɾ³ý src/main/java/org/jeecg/modules/lsw/enums/MaterialInventoryStatusEnum.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,7 @@ package org.jeecg.modules.lsw.enums; public enum MaterialInventoryStatusEnum { NORMAL, //æ£å¸¸ OUTBOUND, //å·²åºåº ; } src/main/java/org/jeecg/modules/lsw/service/ILswMaterialInboundService.java
@@ -15,4 +15,11 @@ */ public interface ILswMaterialInboundService extends IService<LswMaterialInbound> { IPage<Map<String, Object>> getlswMaterialInboundListData(Integer pageNo, Integer pageSize, HttpServletRequest req); /** * ç©æå ¥åº * @param materialInbound å ¥åºä¿¡æ¯ * @return */ boolean inboundMaterial(LswMaterialInbound materialInbound); } src/main/java/org/jeecg/modules/lsw/service/impl/LswMaterialInboundServiceImpl.java
@@ -4,12 +4,20 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.lang.StringUtils; import org.jeecg.common.constant.CommonConstant; import org.jeecg.modules.lsw.entity.LswMaterial; import org.jeecg.modules.lsw.entity.LswMaterialInbound; import org.jeecg.modules.lsw.entity.LswMaterialInventory; import org.jeecg.modules.lsw.mapper.LswMaterialInboundMapper; import org.jeecg.modules.lsw.service.ILswMaterialInboundService; import org.jeecg.modules.lsw.service.ILswMaterialInventoryService; import org.jeecg.modules.lsw.service.ILswMaterialService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletRequest; import java.util.Date; import java.util.HashMap; import java.util.Map; @@ -21,6 +29,10 @@ */ @Service public class LswMaterialInboundServiceImpl extends ServiceImpl<LswMaterialInboundMapper, LswMaterialInbound> implements ILswMaterialInboundService { @Autowired private ILswMaterialInventoryService inventoryService; @Autowired private ILswMaterialService materialService; @Override public IPage<Map<String, Object>> getlswMaterialInboundListData(Integer pageNo, Integer pageSize, HttpServletRequest req) { @@ -40,4 +52,29 @@ } return super.getBaseMapper().getlswMaterialInboundListData(pageData, paramMap); } @Override @Transactional(rollbackFor = Exception.class) public boolean inboundMaterial(LswMaterialInbound materialInbound) { if (StringUtils.isBlank(materialInbound.getMaterialNumber()) || StringUtils.isBlank(materialInbound.getFactoryId()) || StringUtils.isBlank(materialInbound.getWarehouseId()) || materialInbound.getQuantity() == null || materialInbound.getQuantity().intValue() > 0 || StringUtils.isBlank(materialInbound.getBatchNumber())) { return false; } LswMaterial material = materialService.queryByMaterialNumber(materialInbound.getMaterialNumber()); if(material == null) { return false; } //ä¿åå ¥åºä¿¡æ¯ materialInbound.setDelFlag(CommonConstant.DEL_FLAG_0); materialInbound.setReceiveTime(new Date()); super.save(materialInbound); //ä¿ååºåä¿¡æ¯ LswMaterialInventory lswMaterialInventory = new LswMaterialInventory(materialInbound, material.getId(), material.getMaterialCategory()); inventoryService.save(lswMaterialInventory); return true; } } src/main/java/org/jeecg/modules/mes/job/ProductionOrderSyncCreationJob.java
@@ -23,6 +23,7 @@ import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.time.LocalDateTime; @@ -34,7 +35,8 @@ @Slf4j public class ProductionOrderSyncCreationJob implements Job { //å·¥åç¼ç (æ°ç«ç¬ 2301) private static final String FACTORY_CODE = "2301"; @Value("${xhj.factoryCode:2301}") private String FACTORY_CODE; /** * 订åç±»å * æ åç产订å Z001 @@ -43,7 +45,8 @@ * è¯å¶ç产订å(æ°ç«ç¬) Z011 * æé¶ç产订å(æ°ç«ç¬) 2012 */ private static final String ORDER_TYPE_CODE = "Z001"; @Value("${xhj.orderType:Z001}") private String ORDER_TYPE_CODE; /** * ç产è°åº¦å * 001 ä¸ååè°åº¦å @@ -58,14 +61,16 @@ * 010 å åè°åº¦å * 012 å «ååè°åº¦å */ private static final String PRODUCTION_MANAGER = "010"; @Value("${xhj.productionManager:012}") private String PRODUCTION_MANAGER; /** * ç产订åç¶æï¼å®é ä¸ï¼åªæRELç¶æçå·¥åæå¯ä»¥è¿è¡æä½ * CRTD æ°å»º * REL ä¸è¾¾ * TECO å ³é */ private static final String ORDER_STATUS = "REL"; @Value("${xhj.orderStatus:REL}") private String ORDER_STATUS; /** * è¯·æ±æåç¼ç src/main/java/org/jeecg/modules/mes/job/ProductionOrderSyncUpdateJob.java
@@ -23,6 +23,7 @@ import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.time.LocalDateTime; @@ -34,7 +35,8 @@ @Slf4j public class ProductionOrderSyncUpdateJob implements Job { //å·¥åç¼ç (æ°ç«ç¬ 2301) private static final String FACTORY_CODE = "2301"; @Value("${xhj.factoryCode:2301}") private String FACTORY_CODE; /** * 订åç±»å * æ åç产订å Z001 @@ -43,7 +45,8 @@ * è¯å¶ç产订å(æ°ç«ç¬) Z011 * æé¶ç产订å(æ°ç«ç¬) 2012 */ private static final String ORDER_TYPE_CODE = "Z001"; @Value("${xhj.orderType:Z001}") private String ORDER_TYPE_CODE; /** * ç产è°åº¦å * 001 ä¸ååè°åº¦å @@ -58,14 +61,16 @@ * 010 å åè°åº¦å * 012 å «ååè°åº¦å */ private static final String PRODUCTION_MANAGER = "010"; @Value("${xhj.productionManager:012}") private String PRODUCTION_MANAGER; /** * ç产订åç¶æï¼å®é ä¸ï¼åªæRELç¶æçå·¥åæå¯ä»¥è¿è¡æä½ * CRTD æ°å»º * REL ä¸è¾¾ * TECO å ³é */ private static final String ORDER_STATUS = "REL"; @Value("${xhj.orderStatus:REL}") private String ORDER_STATUS; /** * è¯·æ±æåç¼ç src/main/java/org/jeecg/modules/wms/request/WMSWebServiceSendItem.java
@@ -8,6 +8,7 @@ import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlType; import java.math.BigDecimal; @Getter @Setter @@ -63,7 +64,7 @@ private String mesStockID; /** æ°é */ @XmlElement(name = "Quantity") private String quantity; private BigDecimal quantity; /** SAPæ¹æ¬¡å· */ @XmlElement(name = "SapTrackLot") private String sapTrackLot; src/main/java/org/jeecg/modules/wms/service/impl/MESWebServiceSoapImpl.java
@@ -5,7 +5,12 @@ import org.apache.commons.lang3.StringUtils; import org.jeecg.common.aspect.annotation.ApiLog; import org.jeecg.common.constant.ApiLogCategoryEnum; import org.jeecg.modules.base.entity.LineSideWarehouse; import org.jeecg.modules.base.service.ILineSideWarehouseService; import org.jeecg.modules.lsw.entity.LswMaterialInbound; import org.jeecg.modules.lsw.service.ILswMaterialInboundService; import org.jeecg.modules.mes.entity.MesMaterialTransferRequest; import org.jeecg.modules.mes.enums.MaterialTransferRequestStatus; import org.jeecg.modules.mes.service.IMesMaterialTransferRequestService; import org.jeecg.modules.wms.dto.WSResponse; import org.jeecg.modules.wms.request.ReceiveWMSScanItemList; @@ -21,6 +26,7 @@ import javax.jws.WebService; import javax.xml.ws.RequestWrapper; import javax.xml.ws.ResponseWrapper; import java.math.BigDecimal; @Slf4j @@ -30,6 +36,10 @@ @Autowired private IMesMaterialTransferRequestService materialTransferRequestService; @Autowired private ILineSideWarehouseService lineSideWarehouseService; @Autowired private ILswMaterialInboundService materialInboundService; @Override @Transactional(rollbackFor = Exception.class) @@ -45,16 +55,58 @@ response.setErrorDesc("ä¼ å ¥çåæ°ä¸ºç©ºï¼"); return response; } for(WMSWebServiceSendItem item : request.getWmsWebServiceSendItemList()) { if(StringUtils.isNotBlank(item.getReservationOrder())) { String errorCode = "N"; int errorCount = 0; int successCount = 0; StringBuilder errorMsg = new StringBuilder(); for (WMSWebServiceSendItem item : request.getWmsWebServiceSendItemList()) { if (StringUtils.isNotBlank(item.getReservationOrder())) { //ç©ææå¨åè° MesMaterialTransferRequest transferRequest = materialTransferRequestService.queryByReservationCode(item.getReservationOrder()); if(transferRequest == null) { response.setErrorCode("N"); response.setErrorDesc("æ ¹æ®é¢çå·æªæ¾å°ç©ææå¨åï¼"); return response; if (transferRequest == null) { errorCount++; errorMsg.append("æ ¹æ®é¢çå·[").append(item.getReservationOrder()).append("]æªæ¾å°ç©ææå¨åï¼"); continue; } }else if(StringUtils.isNotBlank(item.getAlign())){ LineSideWarehouse warehouse = lineSideWarehouseService.getById(transferRequest.getTargetWarehouseId()); if(warehouse == null || !warehouse.getWarehouseCode().equals(item.getDestSection())) { errorCount++; errorMsg.append("线边åº[").append(item.getDestSection()).append("]æªæ¾å°ï¼"); continue; } if(!transferRequest.getMaterialNumber().equals(item.getSkuCode())) { errorCount++; errorMsg.append("ç©æç¼å·[").append(item.getSkuCode()).append("]ä¸å¹é ï¼"); continue; } if(StringUtils.isBlank(item.getTrackLot())) { errorCount++; errorMsg.append("æ¹æ¬¡å·[").append(item.getTrackLot()).append("]ä¸è½ä¸ºç©ºï¼"); continue; } transferRequest.setRequestStatus(MaterialTransferRequestStatus.CHECKED_IN.name()); //计ç®å®é æå¨æ°é BigDecimal actualQuantity = transferRequest.getActualQuantity() == null ? item.getQuantity() : transferRequest.getActualQuantity().add(item.getQuantity()); transferRequest.setActualQuantity(actualQuantity); //æ·»å å ¥åºä¿¡æ¯ LswMaterialInbound inbound = new LswMaterialInbound(); inbound.setWarehouseId(transferRequest.getTargetWarehouseId()); inbound.setReceiver("WMS"); inbound.setMaterialNumber(transferRequest.getMaterialNumber()); inbound.setMaterialName(transferRequest.getMaterialName()); inbound.setBatchNumber(item.getTrackLot()); inbound.setQuantity(item.getQuantity()); inbound.setFactoryId(warehouse.getFactoryId()); boolean b = materialInboundService.inboundMaterial(inbound); if(!b) { errorCount++; errorMsg.append("é¢çå·[").append(item.getReservationOrder()).append("]å ¥åºå¤±è´¥ï¼"); continue; } //æ´æ°ç©ææå¨å materialTransferRequestService.updateById(transferRequest); } else if (StringUtils.isNotBlank(item.getAlign())) { //ç§»åºååè° } } src/main/resources/application-dev.yml
@@ -303,4 +303,9 @@ appId: cli_a74aab6353b7d00e appSecret: mx5wm7X9S8WSzZCOYlxcggXTFL8iujIT sync: departmentId: od-47692f32e6b66cc3985d317fee780a8b departmentId: od-47692f32e6b66cc3985d317fee780a8b xhj: factoryCode: 2301 orderType: Z001 productionManager: 010 orderStatus: REL src/main/resources/application-prod.yml
@@ -302,4 +302,9 @@ appId: cli_a74aab6353b7d00e appSecret: mx5wm7X9S8WSzZCOYlxcggXTFL8iujIT sync: departmentId: od-47692f32e6b66cc3985d317fee780a8b departmentId: od-47692f32e6b66cc3985d317fee780a8b xhj: factoryCode: 2301 orderType: Z001 productionManager: 010 orderStatus: REL