mes模块重整
This commit is contained in:
parent
5b8307fa3e
commit
c4447a931a
@ -0,0 +1,31 @@
|
||||
package com.foreverwin.iep.wms.dto;
|
||||
|
||||
import com.foreverwin.iep.wms.entity.WmsInventory;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Data
|
||||
public class WmsInventoryDto extends WmsInventory {
|
||||
private String item;
|
||||
private String description;
|
||||
private String unitOfMeasure;
|
||||
private String carrier;
|
||||
private String printer;
|
||||
private String itemType;
|
||||
private String storageBinBo;
|
||||
private String operation;
|
||||
private String operationBo;
|
||||
private String shopOrder;
|
||||
private String resource;
|
||||
private String fifo;
|
||||
private String fifoMaterialLot;
|
||||
private String checkDateExp;
|
||||
private String wmsInventoryBo;
|
||||
private List<Map<String,Object>> outItemType;
|
||||
private String itemGroup;
|
||||
private String checkItemMaterialLot;
|
||||
private BigDecimal checkItemQtyOnHand;
|
||||
}
|
||||
@ -0,0 +1,172 @@
|
||||
package com.foreverwin.iep.wms.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.extension.activerecord.Model;
|
||||
import com.foreverwin.iep.common.utils.HandleBoProcessor;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 库存(物料批次)
|
||||
*
|
||||
* @author Snow
|
||||
* @date 2024-10-22
|
||||
*/
|
||||
@Data
|
||||
@TableName("wms_inventory")
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ApiModel(value = "库存(物料批次)")
|
||||
public class WmsInventory extends Model<WmsInventory> {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
public static final String KW_WMS_INVENTORY_BO = "WmsInventoryBO";
|
||||
|
||||
|
||||
@TableId(type = IdType.INPUT)
|
||||
@ApiModelProperty(value = "主键")
|
||||
private String handle;
|
||||
|
||||
@ApiModelProperty(value = "站点")
|
||||
private String site;
|
||||
|
||||
@ApiModelProperty(value = "关联物料主键")
|
||||
private String itemBo;
|
||||
|
||||
@ApiModelProperty(value = "物料编号")
|
||||
@TableField(exist = false)
|
||||
private String item;
|
||||
|
||||
@ApiModelProperty(value = "物料描述")
|
||||
@TableField(exist = false)
|
||||
private String itemDesc;
|
||||
|
||||
@ApiModelProperty(value = "物料单位")
|
||||
@TableField(exist = false)
|
||||
private String unitOfMeasure;
|
||||
|
||||
@ApiModelProperty(value = "现有数量")
|
||||
private BigDecimal qtyOnHand;
|
||||
|
||||
@ApiModelProperty(value = "原始批次数量")
|
||||
private BigDecimal originalQty;
|
||||
|
||||
@ApiModelProperty(value = "物料批号")
|
||||
private String materialLot;
|
||||
|
||||
@ApiModelProperty(value = "父物料批次")
|
||||
private String parentMaterialLot;
|
||||
|
||||
@ApiModelProperty(value = "仓库主键")
|
||||
private String wmsWarehouseBo;
|
||||
|
||||
@ApiModelProperty(value = "存储货格主键")
|
||||
private String wmsStorageBinBo;
|
||||
|
||||
@ApiModelProperty(value = "是否由ERP创建")
|
||||
private String erpInventory;
|
||||
|
||||
@ApiModelProperty(value = "供货商编号")
|
||||
private String supplierNo;
|
||||
|
||||
@ApiModelProperty(value = "供货商批次")
|
||||
private String supplierBatch;
|
||||
|
||||
@ApiModelProperty(value = "客户主数据主键")
|
||||
private String customerBasisBo;
|
||||
|
||||
@ApiModelProperty(value = "生产批序号")
|
||||
private String lotSerial;
|
||||
|
||||
@ApiModelProperty(value = "状态")
|
||||
private String status;
|
||||
|
||||
@ApiModelProperty(value = "货架编号")
|
||||
private String rackNo;
|
||||
|
||||
@ApiModelProperty(value = "货位编号")
|
||||
private String locationNo;
|
||||
|
||||
@ApiModelProperty(value = "制造日期")
|
||||
private LocalDateTime dateMfg;
|
||||
|
||||
@ApiModelProperty(value = "到期日")
|
||||
private LocalDateTime dateExp;
|
||||
|
||||
@ApiModelProperty(value = "库存日期")
|
||||
private LocalDateTime dateInventory;
|
||||
|
||||
@ApiModelProperty(value = "创建日期")
|
||||
private LocalDateTime dateCreate;
|
||||
|
||||
@ApiModelProperty(value = "创建人员")
|
||||
private String creator;
|
||||
|
||||
@ApiModelProperty(value = "更新时间")
|
||||
private LocalDateTime dateUpdate;
|
||||
|
||||
@ApiModelProperty(value = "更新人员")
|
||||
private String updater;
|
||||
|
||||
@ApiModelProperty(value = "扩展字段1")
|
||||
private String ext01;
|
||||
@ApiModelProperty(value = "扩展字段2")
|
||||
private String ext02;
|
||||
@ApiModelProperty(value = "扩展字段3")
|
||||
private String ext03;
|
||||
@ApiModelProperty(value = "扩展字段4")
|
||||
private String ext04;
|
||||
@ApiModelProperty(value = "扩展字段5")
|
||||
private String ext05;
|
||||
|
||||
@ApiModelProperty(value = "副数量")
|
||||
private BigDecimal deputyQty;
|
||||
@ApiModelProperty(value = "副单位")
|
||||
private String deputyUom;
|
||||
@ApiModelProperty(value = "主单位")
|
||||
private String mainUom;
|
||||
@ApiModelProperty(value = "特殊库存标识")
|
||||
private String sobkz;
|
||||
@ApiModelProperty(value = "销售订单行号")
|
||||
private String vgbelLineNumber;
|
||||
@ApiModelProperty(value = "销售订单号")
|
||||
private String vgbel;
|
||||
@ApiModelProperty(value = "拆分单据号")
|
||||
private String documentNo;
|
||||
@ApiModelProperty(value = "单据类型")
|
||||
private String documentType;
|
||||
/**
|
||||
* 托号
|
||||
*/
|
||||
@ApiModelProperty(value = "托号")
|
||||
private String packageNumber;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String newPackageNumber;
|
||||
|
||||
/**
|
||||
* 料件标识(0:SAP料号、1:U8料号)
|
||||
*/
|
||||
@ApiModelProperty(value = "料件标识(0:SAP料号、1:U8料号)")
|
||||
private String itemFlag;
|
||||
@TableField(exist = false)
|
||||
private String moveType;
|
||||
|
||||
/**
|
||||
* 质检等级
|
||||
*/
|
||||
@ApiModelProperty(value = "质检等级")
|
||||
private String inspectionLevel;
|
||||
|
||||
public static String genHandle(String site, String itemBo, String materialLot) {
|
||||
return HandleBoProcessor.genHandle(KW_WMS_INVENTORY_BO, site, itemBo, materialLot);
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,138 @@
|
||||
package com.foreverwin.iep.wms.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.extension.activerecord.Model;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 库存移动日志记录表
|
||||
*
|
||||
* @author Snow
|
||||
* @date 2024-10-23
|
||||
*/
|
||||
@Data
|
||||
@TableName("wms_inventory_log")
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ApiModel(value = "库存移动日志记录表")
|
||||
public class WmsInventoryLog extends Model<WmsInventoryLog> {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
@TableId(type = IdType.INPUT)
|
||||
@ApiModelProperty(value = "主键")
|
||||
private String uuid;
|
||||
|
||||
@ApiModelProperty(value = "站点")
|
||||
private String site;
|
||||
|
||||
@ApiModelProperty(value = "关联物料主键")
|
||||
private String itemBo;
|
||||
|
||||
@ApiModelProperty(value = "现有数量")
|
||||
private BigDecimal qtyOnHand;
|
||||
|
||||
@ApiModelProperty(value = "原始批次数量")
|
||||
private BigDecimal originalQty;
|
||||
|
||||
@ApiModelProperty(value = "物料批号")
|
||||
private String materialLot;
|
||||
|
||||
@ApiModelProperty(value = "父物料批次")
|
||||
private String parentMaterialLot;
|
||||
|
||||
@ApiModelProperty(value = "仓库主键")
|
||||
private String wmsWarehouseBo;
|
||||
|
||||
@ApiModelProperty(value = "存储货格主键")
|
||||
private String wmsStorageBinBo;
|
||||
|
||||
@ApiModelProperty(value = "是否由ERP创建")
|
||||
private String erpInventory;
|
||||
|
||||
@ApiModelProperty(value = "供货商编号")
|
||||
private String supplierNo;
|
||||
|
||||
@ApiModelProperty(value = "供货商批次")
|
||||
private String supplierBatch;
|
||||
|
||||
@ApiModelProperty(value = "客户主数据主键")
|
||||
private String customerBasisBo;
|
||||
|
||||
@ApiModelProperty(value = "生产批序号")
|
||||
private String lotSerial;
|
||||
|
||||
@ApiModelProperty(value = "状态")
|
||||
private String status;
|
||||
|
||||
@ApiModelProperty(value = "货架编号")
|
||||
private String rackNo;
|
||||
|
||||
@ApiModelProperty(value = "货位编号")
|
||||
private String locationNo;
|
||||
|
||||
@ApiModelProperty(value = "制造日期")
|
||||
private LocalDateTime dateMfg;
|
||||
|
||||
@ApiModelProperty(value = "到期日")
|
||||
private LocalDateTime dateExp;
|
||||
|
||||
@ApiModelProperty(value = "库存日期")
|
||||
private LocalDateTime dateInventory;
|
||||
|
||||
@ApiModelProperty(value = "创建日期")
|
||||
private LocalDateTime dateCreate;
|
||||
|
||||
@ApiModelProperty(value = "创建人员")
|
||||
private String creator;
|
||||
|
||||
@ApiModelProperty(value = "扩展字段1")
|
||||
private String ext01;
|
||||
@ApiModelProperty(value = "扩展字段2")
|
||||
private String ext02;
|
||||
@ApiModelProperty(value = "扩展字段3")
|
||||
private String ext03;
|
||||
@ApiModelProperty(value = "扩展字段4")
|
||||
private String ext04;
|
||||
@ApiModelProperty(value = "扩展字段5")
|
||||
private String ext05;
|
||||
|
||||
@ApiModelProperty(value = "扩展字段5")
|
||||
private String moveType;
|
||||
|
||||
@ApiModelProperty(value = "副数量")
|
||||
private BigDecimal deputyQty;
|
||||
@ApiModelProperty(value = "副单位")
|
||||
private String deputyUom;
|
||||
@ApiModelProperty(value = "主单位")
|
||||
private String mainUom;
|
||||
@ApiModelProperty(value = "特殊库存标识")
|
||||
private String sobkz;
|
||||
@ApiModelProperty(value = "销售订单行号")
|
||||
private String vgbelLineNumber;
|
||||
@ApiModelProperty(value = "销售订单号")
|
||||
private String vgbel;
|
||||
@ApiModelProperty(value = "拆分单据号")
|
||||
private String documentNo;
|
||||
@ApiModelProperty(value = "单据类型")
|
||||
private String documentType;
|
||||
/**
|
||||
* 托号
|
||||
*/
|
||||
@ApiModelProperty(value = "托号")
|
||||
private String packageNumber;
|
||||
|
||||
/**
|
||||
* 料件标识(0:SAP料号、1:U8料号)
|
||||
*/
|
||||
@ApiModelProperty(value = "料件标识(0:SAP料号、1:U8料号)")
|
||||
private String itemFlag;
|
||||
}
|
||||
@ -146,10 +146,6 @@
|
||||
<groupId>com.foreverwin</groupId>
|
||||
<artifactId>qms-db</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.foreverwin</groupId>
|
||||
<artifactId>wms-api</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.foreverwin</groupId>
|
||||
<artifactId>int-api</artifactId>
|
||||
|
||||
@ -31,8 +31,6 @@ import com.foreverwin.iep.wms.entity.EqpFeeding;
|
||||
import com.foreverwin.iep.wms.mapper.EqpFeedingMapper;
|
||||
import com.foreverwin.mom.common.core.exception.BusinessException;
|
||||
import com.foreverwin.mom.common.security.util.SecurityUtils;
|
||||
import com.foreverwin.nlv.wms.dto.PrintPortDTO;
|
||||
import com.foreverwin.nlv.wms.feign.RemotePrintService;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -72,7 +70,7 @@ public class OperationOutServiceImpl extends ServiceImpl<OperationOutMapper, Ope
|
||||
|
||||
private final ProcessService processService;
|
||||
|
||||
private final RemotePrintService remotePrintService;
|
||||
// private final RemotePrintService remotePrintService;
|
||||
|
||||
@Override
|
||||
public IPage<OperationOutDTO> readOperationPage(Page page, OperationOutDTO operationOutDTO) {
|
||||
@ -376,12 +374,12 @@ public class OperationOutServiceImpl extends ServiceImpl<OperationOutMapper, Ope
|
||||
);
|
||||
if (customFields != null && "Y".equals(customFields.getFieldValue())) {
|
||||
// 调用打印
|
||||
PrintPortDTO printPortDTO = new PrintPortDTO();
|
||||
printPortDTO.setSite(site);
|
||||
printPortDTO.setBatchNumber(releaseShopOrderResponse.getLotStateList().get(0).getLotNo());
|
||||
printPortDTO.setUserName(user);
|
||||
printPortDTO.setPrintName("");
|
||||
printPortDTO.setTenantId(site);
|
||||
// PrintPortDTO printPortDTO = new PrintPortDTO();
|
||||
// printPortDTO.setSite(site);
|
||||
// printPortDTO.setBatchNumber(releaseShopOrderResponse.getLotStateList().get(0).getLotNo());
|
||||
// printPortDTO.setUserName(user);
|
||||
// printPortDTO.setPrintName("");
|
||||
// printPortDTO.setTenantId(site);
|
||||
// remotePrintService.remotePrint(printPortDTO, SecurityConstants.FROM_IN);
|
||||
}
|
||||
} catch (ProductionException e) {
|
||||
|
||||
@ -0,0 +1,9 @@
|
||||
package com.foreverwin.iep.wms.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.foreverwin.iep.wms.entity.WmsInventory;
|
||||
import com.foreverwin.iep.wms.entity.WmsInventoryLog;
|
||||
|
||||
public interface WmsInventoryLogService extends IService<WmsInventoryLog> {
|
||||
void createInventoryLog(WmsInventory wmsInventory);
|
||||
}
|
||||
@ -0,0 +1,47 @@
|
||||
package com.foreverwin.iep.wms.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.foreverwin.iep.wms.entity.WmsInventory;
|
||||
import com.foreverwin.iep.wms.dto.WmsInventoryDto;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 库存(物料批次)
|
||||
*
|
||||
* @author Snow
|
||||
* @date 2024-10-22
|
||||
*/
|
||||
public interface WmsInventoryService extends IService<WmsInventory> {
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
void removeInventory(WmsInventory wmsInventory);
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
void createInventory(WmsInventory wmsInventory);
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
void outInventoryByMaterialLot(String site, String materialLot, BigDecimal outQty);
|
||||
|
||||
IPage getWmsInventoryPage(Page page, WmsInventory dto);
|
||||
|
||||
WmsInventory getOneObjByHandle(String handle);
|
||||
|
||||
List<WmsInventory> selectWmsInventoryByPackageNumber(String packageNumber);
|
||||
|
||||
WmsInventory validateMaterialLot(String materialLot);
|
||||
|
||||
void unbindPackageNumber(String packageNumber, boolean isErrorShow);
|
||||
|
||||
void changePackageNumber(WmsInventory wmsInventory);
|
||||
|
||||
WmsInventoryDto selectByMaterialLot(WmsInventoryDto dto);
|
||||
|
||||
WmsInventoryDto checkItemGroup(WmsInventoryDto dto);
|
||||
|
||||
void updateInventory(WmsInventory wmsInventory);
|
||||
}
|
||||
@ -9,17 +9,13 @@ import com.foreverwin.iep.wip.entity.LotMaterial;
|
||||
import com.foreverwin.iep.wip.service.LotMaterialService;
|
||||
import com.foreverwin.iep.wms.dto.EqpFeedingDTO;
|
||||
import com.foreverwin.iep.wms.entity.EqpFeeding;
|
||||
import com.foreverwin.iep.wms.feign.RemoteWarehouseService;
|
||||
import com.foreverwin.mom.common.core.constant.SecurityConstants;
|
||||
import com.foreverwin.mom.common.core.util.R;
|
||||
import com.foreverwin.mom.common.security.util.SecurityUtils;
|
||||
import com.foreverwin.nlv.wms.entity.WmsInventory;
|
||||
import com.foreverwin.iep.wms.entity.WmsInventory;
|
||||
import com.foreverwin.iep.wms.mapper.EqpFeedingMapper;
|
||||
import com.foreverwin.iep.wms.service.EqpFeedingService;
|
||||
import com.foreverwin.iep.wms.service.WmsInventoryService;
|
||||
import com.foreverwin.mom.common.data.tenant.TenantContextHolder;
|
||||
import com.foreverwin.nlv.wms.feign.RemoteWmsInventoryService;
|
||||
import com.foreverwin.mom.common.security.util.SecurityUtils;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@ -42,20 +38,20 @@ import java.util.UUID;
|
||||
public class EqpFeedingServiceImpl extends ServiceImpl<EqpFeedingMapper, EqpFeeding> implements EqpFeedingService {
|
||||
|
||||
private final EqpFeedingMapper eqpFeedingMapper;
|
||||
private final RemoteWmsInventoryService wmsInventoryService;
|
||||
private final WmsInventoryService wmsInventoryService;
|
||||
private final LotMaterialService lotMaterialService;
|
||||
|
||||
@Override
|
||||
public IPage<EqpFeedingDTO> selectPage(FrontPage page, EqpFeedingDTO eqpFeedingDTO) {
|
||||
eqpFeedingDTO.setSite(TenantContextHolder.getTenantId());
|
||||
|
||||
if(eqpFeedingDTO.getDateMfg() != null){
|
||||
if (eqpFeedingDTO.getDateMfg() != null) {
|
||||
eqpFeedingDTO.setDateMfgEnd(LocalDateTime.of(LocalDate.from(eqpFeedingDTO.getDateMfg()), LocalTime.MAX));
|
||||
}
|
||||
if(eqpFeedingDTO.getDateExp() != null){
|
||||
if (eqpFeedingDTO.getDateExp() != null) {
|
||||
eqpFeedingDTO.setDateExpEnd(LocalDateTime.of(LocalDate.from(eqpFeedingDTO.getDateExp()), LocalTime.MAX));
|
||||
}
|
||||
if(eqpFeedingDTO.getDateCreate() != null){
|
||||
if (eqpFeedingDTO.getDateCreate() != null) {
|
||||
eqpFeedingDTO.setDateCreateEnd(LocalDateTime.of(LocalDate.from(eqpFeedingDTO.getDateCreate()), LocalTime.MAX));
|
||||
}
|
||||
return eqpFeedingMapper.selectPage(page, eqpFeedingDTO);
|
||||
@ -94,8 +90,8 @@ public class EqpFeedingServiceImpl extends ServiceImpl<EqpFeedingMapper, EqpFeed
|
||||
}
|
||||
|
||||
super.update(Wrappers.<EqpFeeding>lambdaUpdate()
|
||||
.eq(EqpFeeding::getHandle, eqpFeeding.getHandle())
|
||||
.set(EqpFeeding::getQtyOnHand, eqpFeeding.getQtyOnHand()));
|
||||
.eq(EqpFeeding::getHandle, eqpFeeding.getHandle())
|
||||
.set(EqpFeeding::getQtyOnHand, eqpFeeding.getQtyOnHand()));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -120,6 +116,7 @@ public class EqpFeedingServiceImpl extends ServiceImpl<EqpFeedingMapper, EqpFeed
|
||||
return eqpFeedingMapper.selectEqpFeedingList(dto);
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public void upItem(EqpFeedingDTO dto) {
|
||||
String site = TenantContextHolder.getTenantId();
|
||||
@ -139,17 +136,14 @@ public class EqpFeedingServiceImpl extends ServiceImpl<EqpFeedingMapper, EqpFeed
|
||||
//details.setInspectionLevel(details.getInspectionLevel());
|
||||
details.setCreateUser(SecurityUtils.getUserName());
|
||||
super.save(details);
|
||||
//查询wms_inventory表,
|
||||
WmsInventory wmsInventory = new WmsInventory();
|
||||
wmsInventory.setHandle(details.getWmsInventoryBo());
|
||||
R<WmsInventory> inventoryR = wmsInventoryService.selectById(wmsInventory);
|
||||
WmsInventory inventory = inventoryR.getData();
|
||||
//查询wms_inventory表
|
||||
WmsInventory inventory = wmsInventoryService.getById(details.getWmsInventoryBo());
|
||||
//更新wms_inventory表数量为0,调用远程接口
|
||||
inventory.setMoveType("4");
|
||||
inventory.setQtyOnHand(BigDecimal.ZERO);
|
||||
inventory.setUpdater(SecurityUtils.getUserName());
|
||||
inventory.setDateUpdate(LocalDateTime.now());
|
||||
wmsInventoryService.remoteInventory(inventory);
|
||||
wmsInventoryService.removeInventory(inventory);
|
||||
}
|
||||
}
|
||||
|
||||
@ -160,15 +154,13 @@ public class EqpFeedingServiceImpl extends ServiceImpl<EqpFeedingMapper, EqpFeed
|
||||
//查询wms_inventory表,
|
||||
WmsInventory wmsInventory = new WmsInventory();
|
||||
wmsInventory.setHandle(details.getWmsInventoryBo());
|
||||
R<WmsInventory> inventoryR = wmsInventoryService.selectById(wmsInventory);
|
||||
WmsInventory inventory = inventoryR.getData();
|
||||
WmsInventory inventory = wmsInventoryService.getById(details.getWmsInventoryBo());
|
||||
//更新wms_inventory表数量为0,调用远程接口
|
||||
inventory.setMoveType("5");
|
||||
inventory.setQtyOnHand(details.getQtyOnHand());
|
||||
inventory.setUpdater(SecurityUtils.getUserName());
|
||||
inventory.setDateUpdate(LocalDateTime.now());
|
||||
wmsInventoryService.remoteInventory(inventory);
|
||||
removeById(details.getHandle());
|
||||
wmsInventoryService.removeInventory(inventory);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -0,0 +1,65 @@
|
||||
package com.foreverwin.iep.wms.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.foreverwin.iep.wms.entity.WmsInventory;
|
||||
import com.foreverwin.iep.wms.entity.WmsInventoryLog;
|
||||
import com.foreverwin.iep.wms.mapper.WmsInventoryLogMapper;
|
||||
import com.foreverwin.iep.wms.service.WmsInventoryLogService;
|
||||
import com.foreverwin.mom.common.data.tenant.TenantContextHolder;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.UUID;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public class WmsInventoryLogServiceImpl extends ServiceImpl<WmsInventoryLogMapper, WmsInventoryLog> implements WmsInventoryLogService {
|
||||
|
||||
@Override
|
||||
public void createInventoryLog(WmsInventory wmsInventory) {
|
||||
//日志
|
||||
WmsInventoryLog wmsInventoryLog = new WmsInventoryLog();
|
||||
wmsInventoryLog.setUuid(UUID.randomUUID().toString());
|
||||
wmsInventoryLog.setSite(TenantContextHolder.getTenantId());
|
||||
wmsInventoryLog.setItemBo(wmsInventory.getItemBo());
|
||||
wmsInventoryLog.setQtyOnHand(wmsInventory.getQtyOnHand());
|
||||
wmsInventoryLog.setOriginalQty(wmsInventory.getOriginalQty());
|
||||
wmsInventoryLog.setMaterialLot(wmsInventory.getMaterialLot());
|
||||
wmsInventoryLog.setWmsWarehouseBo(wmsInventory.getWmsWarehouseBo());
|
||||
wmsInventoryLog.setWmsStorageBinBo(wmsInventory.getWmsStorageBinBo());
|
||||
wmsInventoryLog.setErpInventory(wmsInventory.getErpInventory());
|
||||
wmsInventoryLog.setSupplierNo(wmsInventory.getSupplierNo());
|
||||
wmsInventoryLog.setSupplierBatch(wmsInventory.getSupplierBatch());
|
||||
wmsInventoryLog.setDateCreate(LocalDateTime.now());
|
||||
wmsInventoryLog.setCustomerBasisBo(wmsInventory.getCustomerBasisBo());
|
||||
wmsInventoryLog.setLotSerial(wmsInventory.getLotSerial());
|
||||
wmsInventoryLog.setStatus(wmsInventory.getStatus());
|
||||
wmsInventoryLog.setRackNo(wmsInventory.getRackNo());
|
||||
wmsInventoryLog.setLocationNo(wmsInventory.getLocationNo());
|
||||
wmsInventoryLog.setDateMfg(wmsInventory.getDateMfg());
|
||||
wmsInventoryLog.setDateExp(wmsInventory.getDateExp());
|
||||
wmsInventoryLog.setDateInventory(wmsInventory.getDateInventory());
|
||||
wmsInventoryLog.setCreator(wmsInventory.getCreator());
|
||||
wmsInventoryLog.setExt01(wmsInventory.getExt01());
|
||||
wmsInventoryLog.setExt02(wmsInventory.getExt02());
|
||||
wmsInventoryLog.setExt03(wmsInventory.getExt03());
|
||||
wmsInventoryLog.setExt04(wmsInventory.getExt04());
|
||||
wmsInventoryLog.setExt05(wmsInventory.getExt05());
|
||||
wmsInventoryLog.setParentMaterialLot(wmsInventory.getParentMaterialLot());
|
||||
wmsInventoryLog.setMoveType(wmsInventory.getMoveType());
|
||||
wmsInventoryLog.setDeputyQty(wmsInventory.getDeputyQty());
|
||||
wmsInventoryLog.setDeputyUom(wmsInventory.getDeputyUom());
|
||||
wmsInventoryLog.setMainUom(wmsInventory.getMainUom());
|
||||
wmsInventoryLog.setSobkz(wmsInventory.getSobkz());
|
||||
wmsInventoryLog.setVgbelLineNumber(wmsInventory.getVgbelLineNumber());
|
||||
wmsInventoryLog.setVgbel(wmsInventory.getVgbel());
|
||||
wmsInventoryLog.setDocumentNo(wmsInventory.getDocumentNo());
|
||||
wmsInventoryLog.setDocumentType(wmsInventory.getDocumentType());
|
||||
wmsInventoryLog.setPackageNumber(wmsInventory.getPackageNumber());
|
||||
wmsInventoryLog.setItemFlag(wmsInventory.getItemFlag());
|
||||
save(wmsInventoryLog);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,290 @@
|
||||
package com.foreverwin.iep.wms.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.foreverwin.iep.common.faas.common.util.StringUtils;
|
||||
import com.foreverwin.iep.prd.entity.CustomFields;
|
||||
import com.foreverwin.iep.prd.entity.Item;
|
||||
import com.foreverwin.iep.prd.mapper.CustomFieldDefMapper;
|
||||
import com.foreverwin.iep.prd.mapper.CustomFieldsMapper;
|
||||
import com.foreverwin.iep.prd.service.ItemService;
|
||||
import com.foreverwin.iep.wms.dto.EqpFeedingDTO;
|
||||
import com.foreverwin.iep.wms.dto.WmsInventoryDto;
|
||||
import com.foreverwin.iep.wms.entity.WmsInventory;
|
||||
import com.foreverwin.iep.wms.entity.WmsInventoryLog;
|
||||
import com.foreverwin.iep.wms.service.WmsInventoryLogService;
|
||||
import com.foreverwin.iep.wms.mapper.EqpFeedingMapper;
|
||||
import com.foreverwin.iep.wms.mapper.WmsInventoryMapper;
|
||||
import com.foreverwin.iep.wms.service.WmsInventoryService;
|
||||
import com.foreverwin.mom.common.core.exception.BusinessException;
|
||||
import com.foreverwin.mom.common.data.tenant.TenantContextHolder;
|
||||
import com.foreverwin.mom.common.security.util.SecurityUtils;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* 库存(物料批次)
|
||||
*
|
||||
* @author Snow
|
||||
* @date 2024-10-23
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public class WmsInventoryServiceImpl extends ServiceImpl<WmsInventoryMapper, WmsInventory> implements WmsInventoryService {
|
||||
|
||||
private final WmsInventoryLogService wmsInventoryLogService;
|
||||
private final EqpFeedingMapper eqpFeedingMapper;
|
||||
private final ItemService itemService;
|
||||
private final CustomFieldDefMapper customFieldDefMapper;
|
||||
private final CustomFieldsMapper customFieldsMapper;
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public void removeInventory(WmsInventory wmsInventory) {
|
||||
super.removeById(wmsInventory);
|
||||
// 写入日志
|
||||
WmsInventoryLog wmsInventoryLog = new WmsInventoryLog();
|
||||
wmsInventoryLog.setUuid(UUID.randomUUID().toString());
|
||||
wmsInventoryLogService.save(wmsInventoryLog);
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public void createInventory(WmsInventory wmsInventory) {
|
||||
if (StringUtils.isEmpty(wmsInventory.getItemBo())) {
|
||||
throw BusinessException.build("创建库存时物料不能为空");
|
||||
}
|
||||
if (StringUtils.isEmpty(wmsInventory.getMaterialLot())) {
|
||||
throw BusinessException.build("创建库存时物料批次不能为空");
|
||||
}
|
||||
wmsInventory.setHandle(WmsInventory.genHandle(wmsInventory.getSite(), wmsInventory.getItemBo(), wmsInventory.getMaterialLot()));
|
||||
WmsInventory checkInv = this.baseMapper.selectById(wmsInventory.getHandle());
|
||||
if (checkInv != null) {
|
||||
throw BusinessException.build("当前物料同一批次库存已存在!");
|
||||
}
|
||||
wmsInventory.setCreator(SecurityUtils.getUserName());
|
||||
wmsInventory.setDateCreate(LocalDateTime.now());
|
||||
wmsInventory.setStatus("0");
|
||||
this.baseMapper.insert(wmsInventory);
|
||||
// 写入库存日志记录表
|
||||
WmsInventoryLog wmsInventoryLog = new WmsInventoryLog();
|
||||
BeanUtils.copyProperties(wmsInventory, wmsInventoryLog);
|
||||
wmsInventoryLog.setUuid(UUID.randomUUID().toString());
|
||||
wmsInventoryLog.setCreator(SecurityUtils.getUserName());
|
||||
wmsInventoryLog.setDateCreate(LocalDateTime.now());
|
||||
wmsInventoryLog.setMoveType("0"); // 新创建的库存
|
||||
wmsInventoryLogService.save(wmsInventoryLog);
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public void outInventoryByMaterialLot(String site, String materialLot, BigDecimal outQty) {
|
||||
// 扫码出库,没有销售单的出库
|
||||
QueryWrapper<WmsInventory> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.lambda().eq(WmsInventory::getMaterialLot, materialLot).eq(WmsInventory::getSite, site);
|
||||
WmsInventory wmsInventory = this.baseMapper.selectOne(queryWrapper);
|
||||
if (wmsInventory == null) {
|
||||
throw BusinessException.build("库存数据已不存在");
|
||||
}else if (wmsInventory.getQtyOnHand().compareTo(outQty)==0){
|
||||
// 移除库存数据
|
||||
super.removeById(wmsInventory);
|
||||
}else{
|
||||
BigDecimal remainQty = wmsInventory.getQtyOnHand().subtract(outQty);
|
||||
wmsInventory.setQtyOnHand(remainQty);
|
||||
wmsInventory.setUpdater(SecurityUtils.getUserName());
|
||||
wmsInventory.setDateUpdate(LocalDateTime.now());
|
||||
super.updateById(wmsInventory);
|
||||
}
|
||||
// 写入库存日志记录表
|
||||
WmsInventoryLog wmsInventoryLog = new WmsInventoryLog();
|
||||
BeanUtils.copyProperties(wmsInventory, wmsInventoryLog);
|
||||
wmsInventoryLog.setUuid(UUID.randomUUID().toString());
|
||||
wmsInventoryLog.setCreator(SecurityUtils.getUserName());
|
||||
wmsInventoryLog.setDateCreate(LocalDateTime.now());
|
||||
wmsInventoryLog.setMoveType("3"); // 出库
|
||||
wmsInventoryLogService.save(wmsInventoryLog);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPage getWmsInventoryPage(Page page, WmsInventory dto) {
|
||||
return this.baseMapper.getWmsInventoryPage(page, dto);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WmsInventory getOneObjByHandle(String handle) {
|
||||
return this.baseMapper.getOneObjByHandle(handle);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<WmsInventory> selectWmsInventoryByPackageNumber(String packageNumber) {
|
||||
String site = TenantContextHolder.getTenantId();
|
||||
WmsInventory parInv = new WmsInventory();
|
||||
parInv.setPackageNumber(packageNumber);
|
||||
return this.baseMapper.getObjByDtoAndSite(parInv, site);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WmsInventory validateMaterialLot(String materialLot) {
|
||||
String site = TenantContextHolder.getTenantId();
|
||||
WmsInventory parInv = new WmsInventory();
|
||||
parInv.setMaterialLot(materialLot);
|
||||
List<WmsInventory> wmsInventory = this.baseMapper.getObjByDtoAndSite(parInv, site);
|
||||
if (wmsInventory == null || wmsInventory.size() < 1) {
|
||||
throw BusinessException.build("当前批次号不存在");
|
||||
}
|
||||
// 11月5日取消此限制
|
||||
/*else if (!StringUtils.isEmpty(wmsInventory.get(0).getPackageNumber())) {
|
||||
throw BusinessException.build("当前批次[" + materialLot + "]已绑定在[" + wmsInventory.get(0).getPackageNumber() + "]上");
|
||||
}*/
|
||||
return wmsInventory.get(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unbindPackageNumber(String packageNumber,boolean isErrorShow) {
|
||||
String site = TenantContextHolder.getTenantId();
|
||||
QueryWrapper<WmsInventory> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.lambda().eq(WmsInventory::getPackageNumber, packageNumber).eq(WmsInventory::getSite, site);
|
||||
List<WmsInventory> wmsInventoryList = this.baseMapper.selectList(queryWrapper);
|
||||
if (wmsInventoryList == null || wmsInventoryList.size() < 1) {
|
||||
if(isErrorShow){
|
||||
throw BusinessException.build("当前托盘并未绑定批次");
|
||||
}
|
||||
} else {
|
||||
for (WmsInventory wmsInventory : wmsInventoryList) {
|
||||
wmsInventory.setPackageNumber(null);
|
||||
wmsInventory.setUpdater(SecurityUtils.getUserName());
|
||||
wmsInventory.setDateUpdate(LocalDateTime.now());
|
||||
this.baseMapper.updateById(wmsInventory);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void changePackageNumber(WmsInventory wmsInventory) {
|
||||
String site = TenantContextHolder.getTenantId();
|
||||
String oldPackageNum = wmsInventory.getPackageNumber();
|
||||
String newPackage = wmsInventory.getNewPackageNumber();
|
||||
UpdateWrapper<WmsInventory> updateWrapper = new UpdateWrapper<>();
|
||||
updateWrapper.lambda().eq(WmsInventory::getPackageNumber, oldPackageNum).eq(WmsInventory::getSite, site)
|
||||
.set(WmsInventory::getPackageNumber, newPackage).set(WmsInventory::getUpdater, SecurityUtils.getUserName())
|
||||
.set(WmsInventory::getDateUpdate, LocalDateTime.now());
|
||||
super.update(updateWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WmsInventoryDto selectByMaterialLot(WmsInventoryDto dto) {
|
||||
String site = TenantContextHolder.getTenantId();
|
||||
dto.setSite(site);
|
||||
WmsInventoryDto wmsInventory = this.selectByMaterialLot(dto);
|
||||
if (wmsInventory == null) {
|
||||
throw BusinessException.build("料件批号的物料不在当前工单的BOM中");
|
||||
}
|
||||
//校验是否超过到期日
|
||||
if ("Y".equals(dto.getCheckDateExp())) {
|
||||
LocalDateTime dateExp = wmsInventory.getDateExp();
|
||||
if (dateExp != null) {
|
||||
boolean after = dateExp.isAfter(LocalDateTime.now());
|
||||
if (!after) {
|
||||
throw BusinessException.build("料件批号[" + wmsInventory.getMaterialLot() + "]已过期,到期日为["+wmsInventory.getDateExp()+"]请调整");
|
||||
}
|
||||
}
|
||||
}
|
||||
//校验料件库存先进先出
|
||||
if ("Y".equals(dto.getFifo())) {
|
||||
List<WmsInventory> list = list(Wrappers.<WmsInventory>lambdaQuery()
|
||||
.eq(WmsInventory::getSite, site)
|
||||
.eq(WmsInventory::getItemBo, wmsInventory.getItemBo())
|
||||
.eq(WmsInventory::getWmsWarehouseBo, wmsInventory.getWmsWarehouseBo())
|
||||
.gt(WmsInventory::getQtyOnHand, 0)
|
||||
.eq(WmsInventory::getStatus,"0")
|
||||
.orderByAsc(WmsInventory::getDateMfg));
|
||||
if (list.size() > 0) {
|
||||
LocalDateTime dateMfg = list.get(0).getDateMfg();
|
||||
boolean before = dateMfg.isBefore(wmsInventory.getDateMfg());
|
||||
if (before) {
|
||||
wmsInventory.setFifo("N");//N表示返回前端有弹窗提示 先进先出
|
||||
wmsInventory.setFifoMaterialLot(list.get(0).getMaterialLot());
|
||||
}
|
||||
}
|
||||
}
|
||||
return wmsInventory;
|
||||
}
|
||||
|
||||
@Override
|
||||
public WmsInventoryDto checkItemGroup(WmsInventoryDto dto) {
|
||||
String site = TenantContextHolder.getTenantId();
|
||||
dto.setSite(site);
|
||||
WmsInventoryDto wmsInventory = this.selectByMaterialLot(dto);
|
||||
if (wmsInventory == null) {
|
||||
throw BusinessException.build("料件批号的物料不在当前工单的BOM中");
|
||||
}
|
||||
//校验扫描条码的物料在物料表中物料组是否在字典管理为OUT_ITEM_TYPE对应的值一致
|
||||
EqpFeedingDTO eqpFeedingDTO = new EqpFeedingDTO();
|
||||
eqpFeedingDTO.setSite(site);
|
||||
eqpFeedingDTO.setResource(dto.getResource());
|
||||
eqpFeedingDTO.setOperation(dto.getOperation());
|
||||
eqpFeedingDTO.setShopOrder(dto.getShopOrder());
|
||||
//eqpFeedingDTO.setMaterialLot(dto.getMaterialLot());
|
||||
List<EqpFeedingDTO> eqpFeedingDTOSList = eqpFeedingMapper.selectEqpFeedingList(eqpFeedingDTO);
|
||||
boolean isBreak = false;
|
||||
for (EqpFeedingDTO feeding : eqpFeedingDTOSList) {
|
||||
String item = feeding.getItemBo().split(",")[1];
|
||||
String itemGroup = selectItemCustomField(item);
|
||||
if (feeding.getQtyOnHand().compareTo(feeding.getOriginalQty()) < 0) {
|
||||
for (Map<String, Object> itemType : dto.getOutItemType()) {
|
||||
String value = (String) itemType.get("value");
|
||||
if (itemGroup.equals(value)) {
|
||||
isBreak = true;
|
||||
wmsInventory.setItemGroup("N");//N表示返回前端有弹窗提示 XX条码剩余量是xx,
|
||||
wmsInventory.setCheckItemQtyOnHand(feeding.getQtyOnHand());
|
||||
wmsInventory.setCheckItemMaterialLot(feeding.getMaterialLot());
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (isBreak) {
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
throw BusinessException.build("设备["+dto.getResource()+"]工序["+dto.getOperation()+"]工单["+dto.getShopOrder()+"]物料已存在,不允许重复上料;请先进行下料操作");
|
||||
}
|
||||
}
|
||||
return wmsInventory;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateInventory(WmsInventory wmsInventory) {
|
||||
super.updateById(wmsInventory);
|
||||
wmsInventoryLogService.createInventoryLog(wmsInventory);
|
||||
}
|
||||
|
||||
//查询物料的自定义字段
|
||||
private String selectItemCustomField(String item){
|
||||
String itemGroup = null;
|
||||
Item itemServiceOne = itemService.getOne(Wrappers.<Item>lambdaQuery().eq(Item::getItem, item)
|
||||
.eq(Item::getSite, TenantContextHolder.getTenantId())
|
||||
.eq(Item::getCurrentRevision, "Y"));
|
||||
if (itemServiceOne != null) {
|
||||
CustomFields customFields = customFieldsMapper.selectOne(Wrappers.<CustomFields>lambdaQuery()
|
||||
.eq(CustomFields::getFieldName, "ITEM_GROUP")
|
||||
.eq(CustomFields::getHandle, itemServiceOne.getHandle()));
|
||||
if (customFields != null) {
|
||||
itemGroup = customFields.getFieldValue();
|
||||
}
|
||||
}
|
||||
return itemGroup;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
package com.foreverwin.iep.wms.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.foreverwin.iep.wms.entity.WmsInventoryLog;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* 库存移动日志表(物料批次)
|
||||
*
|
||||
* @author Snow
|
||||
* @date 2024-10-22
|
||||
*/
|
||||
@Mapper
|
||||
public interface WmsInventoryLogMapper extends BaseMapper<WmsInventoryLog> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,30 @@
|
||||
package com.foreverwin.iep.wms.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.foreverwin.iep.wms.dto.WmsInventoryDto;
|
||||
import com.foreverwin.iep.wms.entity.WmsInventory;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 库存(物料批次)
|
||||
*
|
||||
* @author Snow
|
||||
* @date 2024-10-22
|
||||
*/
|
||||
@Mapper
|
||||
public interface WmsInventoryMapper extends BaseMapper<WmsInventory> {
|
||||
|
||||
IPage<WmsInventory> getWmsInventoryPage(IPage<WmsInventory> page, @Param("dto") WmsInventory dto);
|
||||
|
||||
WmsInventory getOneObjByHandle(@Param("handle") String handle);
|
||||
|
||||
List<WmsInventory> getObjByDtoAndSite(@Param("dto") WmsInventory dto,@Param("site") String site);
|
||||
|
||||
List<WmsInventory> onLoadScanMaterialLot(@Param("status") String status,@Param("documentType") String documentType,@Param("site") String site,@Param("item") String item,@Param("documentNo") String documentNo);
|
||||
|
||||
WmsInventoryDto selectByMaterialLot(@Param("dto") WmsInventoryDto dto);
|
||||
}
|
||||
@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
|
||||
<mapper namespace="com.foreverwin.iep.wms.mapper.WmsInventoryLogMapper">
|
||||
|
||||
<resultMap id="inventoryLogMap" type="com.foreverwin.iep.wms.entity.WmsInventoryLog">
|
||||
<id property="uuid" column="UUID"/>
|
||||
<result property="site" column="SITE"/>
|
||||
<result property="itemBo" column="ITEM_BO"/>
|
||||
<result property="qtyOnHand" column="QTY_ON_HAND"/>
|
||||
<result property="originalQty" column="ORIGINAL_QTY"/>
|
||||
<result property="materialLot" column="MATERIAL_LOT"/>
|
||||
<result property="wmsWarehouseBo" column="WMS_WAREHOUSE_BO"/>
|
||||
<result property="wmsStorageBinBo" column="WMS_STORAGE_BIN_BO"/>
|
||||
<result property="erpInventory" column="ERP_INVENTORY"/>
|
||||
<result property="supplierNo" column="SUPPLIER_NO"/>
|
||||
<result property="supplierBatch" column="SUPPLIER_BATCH"/>
|
||||
<result property="dateCreate" column="DATE_CREATE"/>
|
||||
<result property="customerBasisBo" column="CUSTOMER_BASIS_BO"/>
|
||||
<result property="lotSerial" column="LOT_SERIAL"/>
|
||||
<result property="status" column="STATUS"/>
|
||||
<result property="rackNo" column="RACK_NO"/>
|
||||
<result property="locationNo" column="LOCATION_NO"/>
|
||||
<result property="dateMfg" column="DATE_MFG"/>
|
||||
<result property="dateExp" column="DATE_EXP"/>
|
||||
<result property="dateInventory" column="DATE_INVENTORY"/>
|
||||
<result property="creator" column="CREATOR"/>
|
||||
<result property="ext01" column="EXT01"/>
|
||||
<result property="ext02" column="EXT02"/>
|
||||
<result property="ext03" column="EXT03"/>
|
||||
<result property="ext04" column="EXT04"/>
|
||||
<result property="ext05" column="EXT05"/>
|
||||
<result property="parentMaterialLot" column="PARENT_MATERIAL_LOT"/>
|
||||
<result property="moveType" column="MOVE_TYPE"/>
|
||||
<result property="documentNo" column="DOCUMENT_NO"/>
|
||||
<result property="documentType" column="DOCUMENT_TYPE"/>
|
||||
</resultMap>
|
||||
|
||||
</mapper>
|
||||
201
mes-db/src/main/resources/mapper/wms/WmsInventoryMapper.xml
Normal file
201
mes-db/src/main/resources/mapper/wms/WmsInventoryMapper.xml
Normal file
@ -0,0 +1,201 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
|
||||
<mapper namespace="com.foreverwin.iep.wms.mapper.WmsInventoryMapper">
|
||||
|
||||
<resultMap id="wmsInventoryMap" type="com.foreverwin.iep.wms.entity.WmsInventory">
|
||||
<id property="handle" column="HANDLE"/>
|
||||
<result property="site" column="SITE"/>
|
||||
<result property="itemBo" column="ITEM_BO"/>
|
||||
<result property="item" column="ITEM"/>
|
||||
<result property="itemDesc" column="ITEM_DESC"/>
|
||||
<result property="unitOfMeasure" column="UNIT_OF_MEASURE"/>
|
||||
<result property="qtyOnHand" column="QTY_ON_HAND"/>
|
||||
<result property="originalQty" column="ORIGINAL_QTY"/>
|
||||
<result property="materialLot" column="MATERIAL_LOT"/>
|
||||
<result property="wmsWarehouseBo" column="WMS_WAREHOUSE_BO"/>
|
||||
<result property="wmsStorageBinBo" column="STORAGE_NO"/>
|
||||
<result property="erpInventory" column="ERP_INVENTORY"/>
|
||||
<result property="supplierNo" column="SUPPLIER_NO"/>
|
||||
<result property="supplierBatch" column="SUPPLIER_BATCH"/>
|
||||
<result property="dateCreate" column="DATE_CREATE"/>
|
||||
<result property="customerBasisBo" column="CUSTOMER_BASIS_BO"/>
|
||||
<result property="lotSerial" column="LOT_SERIAL"/>
|
||||
<result property="status" column="STATUS"/>
|
||||
<result property="rackNo" column="RACK_NO"/>
|
||||
<result property="locationNo" column="LOCATION_NO"/>
|
||||
<result property="dateMfg" column="DATE_MFG"/>
|
||||
<result property="dateExp" column="DATE_EXP"/>
|
||||
<result property="dateInventory" column="DATE_INVENTORY"/>
|
||||
<result property="creator" column="CREATOR"/>
|
||||
<result property="dateUpdate" column="DATE_UPDATE"/>
|
||||
<result property="updater" column="UPDATER"/>
|
||||
<result property="ext01" column="EXT01"/>
|
||||
<result property="ext02" column="EXT02"/>
|
||||
<result property="ext03" column="EXT03"/>
|
||||
<result property="ext04" column="EXT04"/>
|
||||
<result property="ext05" column="EXT05"/>
|
||||
<result property="parentMaterialLot" column="PARENT_MATERIAL_LOT"/>
|
||||
<result property="documentNo" column="DOCUMENT_NO"/>
|
||||
<result property="documentType" column="DOCUMENT_TYPE"/>
|
||||
<result property="packageNumber" column="PACKAGE_NUMBER"/>
|
||||
<result property="moveType" column="MOVE_TYPE"/>
|
||||
<result property="inspectionLevel" column="INSPECTION_LEVEL"/>
|
||||
</resultMap>
|
||||
<resultMap id="fullMap" type="com.foreverwin.iep.wms.dto.WmsInventoryDto">
|
||||
<result property="shopOrder" column="SHOP_ORDER"/>
|
||||
<result property="resource" column="RESOURCE"/>
|
||||
<result property="operation" column="OPERATION"/>
|
||||
<result property="wmsInventoryBo" column="WMS_INVENTORY_BO"/>
|
||||
</resultMap>
|
||||
|
||||
<select id="getWmsInventoryPage" resultMap="wmsInventoryMap">
|
||||
SELECT wi.HANDLE, wi.SITE, wi.ITEM_BO,i.ITEM,i.DESCRIPTION ITEM_DESC,i.UNIT_OF_MEASURE ,wi.QTY_ON_HAND,
|
||||
wi.ORIGINAL_QTY, wi.MATERIAL_LOT, wi.WMS_WAREHOUSE_BO, wi.WMS_STORAGE_BIN_BO,
|
||||
wi.ERP_INVENTORY, wi.SUPPLIER_NO, wi.SUPPLIER_BATCH, wi.DATE_CREATE, wi.CUSTOMER_BASIS_BO,
|
||||
wi.LOT_SERIAL, wi.STATUS, wi.RACK_NO, wi.LOCATION_NO, wi.DATE_MFG, wi.DATE_EXP, wi.DATE_INVENTORY, wi.CREATOR,
|
||||
wi.EXT01, wi.EXT02, wi.EXT03, wi.EXT04, wi.EXT05, wi.PARENT_MATERIAL_LOT, wi.DATE_UPDATE, wi.UPDATER,wi.DOCUMENT_NO,
|
||||
wi.DOCUMENT_TYPE
|
||||
FROM wms_inventory wi
|
||||
left join item i on wi.ITEM_BO = concat('ItemBO:',i.SITE,',',i.ITEM,',#')
|
||||
where wi.SITE = #{dto.site}
|
||||
<if test="dto.item != null and dto.item != ''">
|
||||
AND i.ITEM LIKE '%${dto.item}%'
|
||||
</if>
|
||||
<if test="dto.status != null and dto.status != ''">
|
||||
AND wi.STATUS = #{dto.status}
|
||||
</if>
|
||||
<if test="dto.materialLot != null and dto.materialLot != ''">
|
||||
AND wi.MATERIAL_LOT LIKE '%${dto.materialLot}%'
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<select id="getOneObjByHandle" resultMap="wmsInventoryMap">
|
||||
SELECT wi.HANDLE,
|
||||
wi.SITE,
|
||||
wi.ITEM_BO,
|
||||
i.ITEM,
|
||||
i.DESCRIPTION ITEM_DESC,
|
||||
i.UNIT_OF_MEASURE,
|
||||
wi.QTY_ON_HAND,
|
||||
wi.ORIGINAL_QTY,
|
||||
wi.MATERIAL_LOT,
|
||||
wi.WMS_WAREHOUSE_BO,
|
||||
wi.WMS_STORAGE_BIN_BO,
|
||||
wi.ERP_INVENTORY,
|
||||
wi.SUPPLIER_NO,
|
||||
wi.SUPPLIER_BATCH,
|
||||
wi.DATE_CREATE,
|
||||
wi.CUSTOMER_BASIS_BO,
|
||||
wi.LOT_SERIAL,
|
||||
wi.STATUS,
|
||||
wi.RACK_NO,
|
||||
wi.LOCATION_NO,
|
||||
wi.DATE_MFG,
|
||||
wi.DATE_EXP,
|
||||
wi.DATE_INVENTORY,
|
||||
wi.CREATOR,
|
||||
wi.EXT01,
|
||||
wi.EXT02,
|
||||
wi.EXT03,
|
||||
wi.EXT04,
|
||||
wi.EXT05,
|
||||
wi.PARENT_MATERIAL_LOT,
|
||||
wi.DATE_UPDATE,
|
||||
wi.DOCUMENT_NO,
|
||||
wi.DOCUMENT_TYPE,
|
||||
wi.UPDATER
|
||||
FROM wms_inventory wi
|
||||
left join item i on wi.ITEM_BO = concat('ItemBO:', i.SITE, ',', i.ITEM, ',#')
|
||||
where wi.HANDLE = #{handle}
|
||||
</select>
|
||||
|
||||
<select id="onLoadScanMaterialLot" resultMap="wmsInventoryMap">
|
||||
select wi.*,i.ITEM from wms_inventory wi
|
||||
left join item i on concat('ItemBO:',i.SITE,',',i.ITEM,',#') = wi.ITEM_BO
|
||||
where wi.SITE = #{site}
|
||||
<if test="status != null and status != ''">
|
||||
and wi.STATUS = #{status}
|
||||
</if>
|
||||
<if test="documentType != null and documentType != ''">
|
||||
and wi.DOCUMENT_TYPE = #{documentType}
|
||||
</if>
|
||||
<if test="item != null and item != ''">
|
||||
and i.ITEM = #{item}
|
||||
</if>
|
||||
<if test="documentNo != null and documentNo != ''">
|
||||
and wi.DOCUMENT_NO = #{documentNo}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<select id="getObjByDtoAndSite" resultMap="wmsInventoryMap">
|
||||
SELECT wi.HANDLE,
|
||||
wi.SITE,
|
||||
wi.ITEM_BO,
|
||||
i.ITEM,
|
||||
i.DESCRIPTION ITEM_DESC,
|
||||
i.UNIT_OF_MEASURE,
|
||||
wi.QTY_ON_HAND,
|
||||
wi.ORIGINAL_QTY,
|
||||
wi.MATERIAL_LOT,
|
||||
wi.WMS_WAREHOUSE_BO,
|
||||
wi.WMS_STORAGE_BIN_BO,
|
||||
wi.ERP_INVENTORY,
|
||||
wi.SUPPLIER_NO,
|
||||
wi.SUPPLIER_BATCH,
|
||||
wi.DATE_CREATE,
|
||||
wi.CUSTOMER_BASIS_BO,
|
||||
wi.LOT_SERIAL,
|
||||
wi.STATUS,
|
||||
wi.RACK_NO,
|
||||
wi.LOCATION_NO,
|
||||
wi.DATE_MFG,
|
||||
wi.DATE_EXP,
|
||||
wi.DATE_INVENTORY,
|
||||
wi.CREATOR,
|
||||
wi.EXT01,
|
||||
wi.EXT02,
|
||||
wi.EXT03,
|
||||
wi.EXT04,
|
||||
wi.EXT05,
|
||||
wi.PARENT_MATERIAL_LOT,
|
||||
wi.DATE_UPDATE,
|
||||
wi.DOCUMENT_NO,
|
||||
wi.DOCUMENT_TYPE,
|
||||
wi.UPDATER,
|
||||
wi.PACKAGE_NUMBER
|
||||
FROM wms_inventory wi
|
||||
left join item i on wi.ITEM_BO = concat('ItemBO:', i.SITE, ',', i.ITEM, ',#')
|
||||
where wi.SITE = #{site}
|
||||
<if test="dto.materialLot != null and dto.materialLot != ''">
|
||||
and wi.MATERIAL_LOT = #{dto.materialLot}
|
||||
</if>
|
||||
<if test="dto.packageNumber != null and dto.packageNumber != ''">
|
||||
and wi.PACKAGE_NUMBER = #{dto.packageNumber}
|
||||
</if>
|
||||
|
||||
</select>
|
||||
|
||||
<select id="selectByMaterialLot" resultMap="fullMap">
|
||||
SELECT a.SHOP_ORDER ,op.OPERATION ,i.ITEM ,i.DESCRIPTION ITEM_DESC,wi.*,wi.HANDLE WMS_INVENTORY_BO
|
||||
from SHOP_ORDER a
|
||||
join BOM b on a.PLANNED_BOM_BO = b.HANDLE
|
||||
join BOM_COMPONENT c on c.BOM_BO = b.HANDLE
|
||||
join OPERATION op on op.HANDLE = c.OPERATION_BO
|
||||
join WMS_INVENTORY wi on wi.ITEM_BO = c.COMPONENT_GBO
|
||||
join item i on (c.COMPONENT_GBO = concat('ItemBO:', concat(i.SITE, concat(',', concat(i.ITEM,',#'))))
|
||||
and i.CURRENT_REVISION = 'Y')
|
||||
join WMS_WAREHOUSE we on we.HANDLE = wi.WMS_WAREHOUSE_BO
|
||||
join WMS_STORAGE_LOCATION wn on wn.WAREHOUSE_BO = we.HANDLE
|
||||
join WMS_STORAGE_BIN ws on ws.STORAGE_LOCATION_BO = wn.HANDLE
|
||||
join WORK_CENTER wc on wc.HANDLE = we.WORK_CENTER_BO
|
||||
join WORK_CENTER_MEMBER wr on wr.WORK_CENTER_BO = wc.HANDLE
|
||||
join RESRCE r on r.HANDLE = wr.WORK_CENTER_OR_RESOURCE_GBO
|
||||
where wi.SITE = #{dto.site} and wi.MATERIAL_LOT = #{dto.materialLot}
|
||||
and a.SHOP_ORDER = #{dto.shopOrder} and op.OPERATION = #{dto.operation}
|
||||
and r.RESRCE = #{dto.resource}
|
||||
and wi.STATUS ='0' and wi.QTY_ON_HAND > 0
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
5
pom.xml
5
pom.xml
@ -91,11 +91,6 @@
|
||||
<artifactId>qms-db</artifactId>
|
||||
<version>4.5.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.foreverwin</groupId>
|
||||
<artifactId>wms-api</artifactId>
|
||||
<version>4.5.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.foreverwin</groupId>
|
||||
<artifactId>int-api</artifactId>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user