diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/controller/WmTransferController.java b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/WmTransferController.java index 4cec987..1dd7f16 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/wm/controller/WmTransferController.java +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/controller/WmTransferController.java @@ -8,6 +8,7 @@ import com.ktg.common.utils.StringUtils; import com.ktg.mes.wm.domain.WmStorageArea; import com.ktg.mes.wm.domain.WmStorageLocation; import com.ktg.mes.wm.domain.WmWarehouse; +import com.ktg.mes.wm.domain.tx.TransferTxBean; import com.ktg.mes.wm.service.*; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; @@ -48,12 +49,13 @@ public class WmTransferController extends BaseController @Autowired private IWmWarehouseService wmWarehouseService; - + @Autowired + private IStorageCoreService storageCoreService; /** * 查询转移单列表 */ - @PreAuthorize("@ss.hasPermi('wm:transfer:list')") + @PreAuthorize("@ss.hasPermi('mes:wm:transfer:list')") @GetMapping("/list") public TableDataInfo list(WmTransfer wmTransfer) { @@ -65,7 +67,7 @@ public class WmTransferController extends BaseController /** * 导出转移单列表 */ - @PreAuthorize("@ss.hasPermi('wm:transfer:export')") + @PreAuthorize("@ss.hasPermi('mes:wm:transfer:export')") @Log(title = "转移单", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, WmTransfer wmTransfer) @@ -78,7 +80,7 @@ public class WmTransferController extends BaseController /** * 获取转移单详细信息 */ - @PreAuthorize("@ss.hasPermi('wm:transfer:query')") + @PreAuthorize("@ss.hasPermi('mes:wm:transfer:query')") @GetMapping(value = "/{transferId}") public AjaxResult getInfo(@PathVariable("transferId") Long transferId) { @@ -88,7 +90,7 @@ public class WmTransferController extends BaseController /** * 新增转移单 */ - @PreAuthorize("@ss.hasPermi('wm:transfer:add')") + @PreAuthorize("@ss.hasPermi('mes:wm:transfer:add')") @Log(title = "转移单", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody WmTransfer wmTransfer) @@ -114,7 +116,7 @@ public class WmTransferController extends BaseController /** * 修改转移单 */ - @PreAuthorize("@ss.hasPermi('wm:transfer:edit')") + @PreAuthorize("@ss.hasPermi('mes:wm:transfer:edit')") @Log(title = "转移单", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody WmTransfer wmTransfer) @@ -138,7 +140,7 @@ public class WmTransferController extends BaseController /** * 删除转移单 */ - @PreAuthorize("@ss.hasPermi('wm:transfer:remove')") + @PreAuthorize("@ss.hasPermi('mes:wm:transfer:remove')") @Log(title = "转移单", businessType = BusinessType.DELETE) @DeleteMapping("/{transferIds}") @Transactional @@ -150,4 +152,27 @@ public class WmTransferController extends BaseController } return toAjax(wmTransferService.deleteWmTransferByTransferIds(transferIds)); } + + /** + * 执行退货 + */ + @PreAuthorize("@ss.hasPermi('mes:wm:transfer:edit')") + @Log(title = "转移单", businessType = BusinessType.UPDATE) + @Transactional + @PutMapping("/{transferId}") + public AjaxResult execute(@PathVariable Long transferId){ + WmTransfer transfer = wmTransferService.selectWmTransferByTransferId(transferId); + List beans = wmTransferService.getTxBeans(transferId); + + if(CollectionUtils.isEmpty(beans)){ + return AjaxResult.error("请添加转移单行信息!"); + } + + storageCoreService.processTransfer(beans); + + + transfer.setStatus(UserConstants.ORDER_STATUS_FINISHED); + wmTransferService.updateWmTransfer(transfer); + return AjaxResult.success(); + } } diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/domain/tx/TransferTxBean.java b/ktg-mes/src/main/java/com/ktg/mes/wm/domain/tx/TransferTxBean.java new file mode 100644 index 0000000..7c0571f --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/domain/tx/TransferTxBean.java @@ -0,0 +1,470 @@ +package com.ktg.mes.wm.domain.tx; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ktg.common.annotation.Excel; +import com.ktg.common.core.domain.BaseEntity; + +import java.math.BigDecimal; +import java.util.Date; + +public class TransferTxBean extends BaseEntity { + private static final long serialVersionUID = 1L; + + private Long materialStockId; + + /** 产品物料ID */ + private Long itemId; + + /** 产品物料编码 */ + private String itemCode; + + /** 产品物料名称 */ + private String itemName; + + /** 规格型号 */ + private String specification; + + /** 单位 */ + private String unitOfMeasure; + + /** 入库批次号 */ + private String batchCode; + + private String workorderId; + + private String workorderCode; + + /** 供应商ID */ + private Long vendorId; + + /** 供应商编号 */ + private String vendorCode; + + /** 供应商名称 */ + private String vendorName; + + /** 供应商简称 */ + private String vendorNick; + + /** 移出仓库ID */ + private Long fromWarehouseId; + + /** 移出仓库编码 */ + private String fromWarehouseCode; + + /** 移出仓库名称 */ + private String fromWarehouseName; + + /** 移出库区ID */ + private Long fromLocationId; + + /** 移出库区编码 */ + private String fromLocationCode; + + /** 移出库区名称 */ + private String fromLocationName; + + /** 移出库位ID */ + private Long fromAreaId; + + /** 移出库位编码 */ + private String fromAreaCode; + + /** 移出库位名称 */ + private String fromAreaName; + + /** 移入仓库ID */ + private Long toWarehouseId; + + /** 移入仓库编码 */ + private String toWarehouseCode; + + /** 移入仓库名称 */ + private String toWarehouseName; + + /** 移入库区ID */ + private Long toLocationId; + + /** 移入库区编码 */ + private String toLocationCode; + + /** 移入库区名称 */ + private String toLocationName; + + /** 移入库位ID */ + private Long toAreaId; + + /** 移入库位编码 */ + private String toAreaCode; + + /** 移入库位名称 */ + private String toAreaName; + + private Date recptDate; + + /** 有效期 */ + private Date expireDate; + + /** 单据类型 */ + private String sourceDocType; + + /** 单据ID */ + private Long sourceDocId; + + /** 单据编号 */ + private String sourceDocCode; + + /** 单据行ID */ + private Long sourceDocLineId; + + /** 事务数量 */ + private BigDecimal transactionQuantity; + + public Long getMaterialStockId() { + return materialStockId; + } + + public void setMaterialStockId(Long materialStockId) { + this.materialStockId = materialStockId; + } + + public Long getItemId() { + return itemId; + } + + public void setItemId(Long itemId) { + this.itemId = itemId; + } + + public String getItemCode() { + return itemCode; + } + + public void setItemCode(String itemCode) { + this.itemCode = itemCode; + } + + public String getItemName() { + return itemName; + } + + public void setItemName(String itemName) { + this.itemName = itemName; + } + + public String getSpecification() { + return specification; + } + + public void setSpecification(String specification) { + this.specification = specification; + } + + public String getUnitOfMeasure() { + return unitOfMeasure; + } + + public void setUnitOfMeasure(String unitOfMeasure) { + this.unitOfMeasure = unitOfMeasure; + } + + public String getBatchCode() { + return batchCode; + } + + public void setBatchCode(String batchCode) { + this.batchCode = batchCode; + } + + public String getWorkorderId() { + return workorderId; + } + + public void setWorkorderId(String workorderId) { + this.workorderId = workorderId; + } + + public String getWorkorderCode() { + return workorderCode; + } + + public void setWorkorderCode(String workorderCode) { + this.workorderCode = workorderCode; + } + + public Long getVendorId() { + return vendorId; + } + + public void setVendorId(Long vendorId) { + this.vendorId = vendorId; + } + + public String getVendorCode() { + return vendorCode; + } + + public void setVendorCode(String vendorCode) { + this.vendorCode = vendorCode; + } + + public String getVendorName() { + return vendorName; + } + + public void setVendorName(String vendorName) { + this.vendorName = vendorName; + } + + public String getVendorNick() { + return vendorNick; + } + + public void setVendorNick(String vendorNick) { + this.vendorNick = vendorNick; + } + + public Long getFromWarehouseId() { + return fromWarehouseId; + } + + public void setFromWarehouseId(Long fromWarehouseId) { + this.fromWarehouseId = fromWarehouseId; + } + + public String getFromWarehouseCode() { + return fromWarehouseCode; + } + + public void setFromWarehouseCode(String fromWarehouseCode) { + this.fromWarehouseCode = fromWarehouseCode; + } + + public String getFromWarehouseName() { + return fromWarehouseName; + } + + public void setFromWarehouseName(String fromWarehouseName) { + this.fromWarehouseName = fromWarehouseName; + } + + public Long getFromLocationId() { + return fromLocationId; + } + + public void setFromLocationId(Long fromLocationId) { + this.fromLocationId = fromLocationId; + } + + public String getFromLocationCode() { + return fromLocationCode; + } + + public void setFromLocationCode(String fromLocationCode) { + this.fromLocationCode = fromLocationCode; + } + + public String getFromLocationName() { + return fromLocationName; + } + + public void setFromLocationName(String fromLocationName) { + this.fromLocationName = fromLocationName; + } + + public Long getFromAreaId() { + return fromAreaId; + } + + public void setFromAreaId(Long fromAreaId) { + this.fromAreaId = fromAreaId; + } + + public String getFromAreaCode() { + return fromAreaCode; + } + + public void setFromAreaCode(String fromAreaCode) { + this.fromAreaCode = fromAreaCode; + } + + public String getFromAreaName() { + return fromAreaName; + } + + public void setFromAreaName(String fromAreaName) { + this.fromAreaName = fromAreaName; + } + + public Long getToWarehouseId() { + return toWarehouseId; + } + + public void setToWarehouseId(Long toWarehouseId) { + this.toWarehouseId = toWarehouseId; + } + + public String getToWarehouseCode() { + return toWarehouseCode; + } + + public void setToWarehouseCode(String toWarehouseCode) { + this.toWarehouseCode = toWarehouseCode; + } + + public String getToWarehouseName() { + return toWarehouseName; + } + + public void setToWarehouseName(String toWarehouseName) { + this.toWarehouseName = toWarehouseName; + } + + public Long getToLocationId() { + return toLocationId; + } + + public void setToLocationId(Long toLocationId) { + this.toLocationId = toLocationId; + } + + public String getToLocationCode() { + return toLocationCode; + } + + public void setToLocationCode(String toLocationCode) { + this.toLocationCode = toLocationCode; + } + + public String getToLocationName() { + return toLocationName; + } + + public void setToLocationName(String toLocationName) { + this.toLocationName = toLocationName; + } + + public Long getToAreaId() { + return toAreaId; + } + + public void setToAreaId(Long toAreaId) { + this.toAreaId = toAreaId; + } + + public String getToAreaCode() { + return toAreaCode; + } + + public void setToAreaCode(String toAreaCode) { + this.toAreaCode = toAreaCode; + } + + public String getToAreaName() { + return toAreaName; + } + + public void setToAreaName(String toAreaName) { + this.toAreaName = toAreaName; + } + + public Date getExpireDate() { + return expireDate; + } + + public void setExpireDate(Date expireDate) { + this.expireDate = expireDate; + } + + public Date getRecptDate() { + return recptDate; + } + + public void setRecptDate(Date recptDate) { + this.recptDate = recptDate; + } + + public String getSourceDocType() { + return sourceDocType; + } + + public void setSourceDocType(String sourceDocType) { + this.sourceDocType = sourceDocType; + } + + public Long getSourceDocId() { + return sourceDocId; + } + + public void setSourceDocId(Long sourceDocId) { + this.sourceDocId = sourceDocId; + } + + public String getSourceDocCode() { + return sourceDocCode; + } + + public void setSourceDocCode(String sourceDocCode) { + this.sourceDocCode = sourceDocCode; + } + + public Long getSourceDocLineId() { + return sourceDocLineId; + } + + public void setSourceDocLineId(Long sourceDocLineId) { + this.sourceDocLineId = sourceDocLineId; + } + + public BigDecimal getTransactionQuantity() { + return transactionQuantity; + } + + public void setTransactionQuantity(BigDecimal transactionQuantity) { + this.transactionQuantity = transactionQuantity; + } + + @Override + public String toString() { + return "TransferTxBean{" + + "materialStockId=" + materialStockId + + ", itemId=" + itemId + + ", itemCode='" + itemCode + '\'' + + ", itemName='" + itemName + '\'' + + ", specification='" + specification + '\'' + + ", unitOfMeasure='" + unitOfMeasure + '\'' + + ", batchCode='" + batchCode + '\'' + + ", workorderId='" + workorderId + '\'' + + ", workorderCode='" + workorderCode + '\'' + + ", vendorId=" + vendorId + + ", vendorCode='" + vendorCode + '\'' + + ", vendorName='" + vendorName + '\'' + + ", vendorNick='" + vendorNick + '\'' + + ", fromWarehouseId=" + fromWarehouseId + + ", fromWarehouseCode='" + fromWarehouseCode + '\'' + + ", fromWarehouseName='" + fromWarehouseName + '\'' + + ", fromLocationId=" + fromLocationId + + ", fromLocationCode='" + fromLocationCode + '\'' + + ", fromLocationName='" + fromLocationName + '\'' + + ", fromAreaId=" + fromAreaId + + ", fromAreaCode='" + fromAreaCode + '\'' + + ", fromAreaName='" + fromAreaName + '\'' + + ", toWarehouseId=" + toWarehouseId + + ", toWarehouseCode='" + toWarehouseCode + '\'' + + ", toWarehouseName='" + toWarehouseName + '\'' + + ", toLocationId=" + toLocationId + + ", toLocationCode='" + toLocationCode + '\'' + + ", toLocationName='" + toLocationName + '\'' + + ", toAreaId=" + toAreaId + + ", toAreaCode='" + toAreaCode + '\'' + + ", toAreaName='" + toAreaName + '\'' + + ", recptDate=" + recptDate + + ", expireDate=" + expireDate + + ", sourceDocType='" + sourceDocType + '\'' + + ", sourceDocId=" + sourceDocId + + ", sourceDocCode='" + sourceDocCode + '\'' + + ", sourceDocLineId=" + sourceDocLineId + + ", transactionQuantity=" + transactionQuantity + + '}'; + } +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/mapper/WmTransferMapper.java b/ktg-mes/src/main/java/com/ktg/mes/wm/mapper/WmTransferMapper.java index 4346f36..5be95a2 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/wm/mapper/WmTransferMapper.java +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/mapper/WmTransferMapper.java @@ -2,6 +2,7 @@ package com.ktg.mes.wm.mapper; import java.util.List; import com.ktg.mes.wm.domain.WmTransfer; +import com.ktg.mes.wm.domain.tx.TransferTxBean; /** * 转移单Mapper接口 @@ -27,6 +28,9 @@ public interface WmTransferMapper */ public List selectWmTransferList(WmTransfer wmTransfer); + + public List getTxBeans(Long transferId); + /** * 检查编码是否唯一 * @param wmTransfer diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/service/IStorageCoreService.java b/ktg-mes/src/main/java/com/ktg/mes/wm/service/IStorageCoreService.java index 9fbc7a7..2c1ac39 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/wm/service/IStorageCoreService.java +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/service/IStorageCoreService.java @@ -57,6 +57,16 @@ public interface IStorageCoreService { */ public void processProductSalse(List lines); + /** + * 处理销售退货 + * @param lines + */ public void processRtSalse(List lines); + /** + * 处理转移单 + * @param lines + */ + public void processTransfer(List lines); + } diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/service/IWmTransferService.java b/ktg-mes/src/main/java/com/ktg/mes/wm/service/IWmTransferService.java index 033939a..74c40fb 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/wm/service/IWmTransferService.java +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/service/IWmTransferService.java @@ -2,6 +2,7 @@ package com.ktg.mes.wm.service; import java.util.List; import com.ktg.mes.wm.domain.WmTransfer; +import com.ktg.mes.wm.domain.tx.TransferTxBean; /** * 转移单Service接口 @@ -28,6 +29,8 @@ public interface IWmTransferService public List selectWmTransferList(WmTransfer wmTransfer); + public List getTxBeans(Long transferid); + /** * 检查编码是否唯一 * @param wmTransfer diff --git a/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/StorageCoreServiceImpl.java b/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/StorageCoreServiceImpl.java index 88e7119..5ad1797 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/StorageCoreServiceImpl.java +++ b/ktg-mes/src/main/java/com/ktg/mes/wm/service/impl/StorageCoreServiceImpl.java @@ -351,5 +351,54 @@ public class StorageCoreServiceImpl implements IStorageCoreService { } } + @Override + public void processTransfer(List lines) { + if(CollUtil.isEmpty(lines)){ + throw new BussinessException("没有需要处理的原料消耗单行"); + } + String transactionType_out = UserConstants.TRANSACTION_TYPE_WAREHOUSE_TRANS_OUT; + String transactionType_in = UserConstants.TRANSACTION_TYPE_WAREHOUSE_TRANS_IN; + + for(int i=0;i getTxBeans(Long transferid) { + return wmTransferMapper.getTxBeans(transferid); + } + @Override public String checkUnique(WmTransfer wmTransfer) { WmTransfer transfer = wmTransferMapper.checkUnique(wmTransfer); diff --git a/ktg-mes/src/main/resources/mapper/wm/WmTransferMapper.xml b/ktg-mes/src/main/resources/mapper/wm/WmTransferMapper.xml index 7d924a0..f217de8 100644 --- a/ktg-mes/src/main/resources/mapper/wm/WmTransferMapper.xml +++ b/ktg-mes/src/main/resources/mapper/wm/WmTransferMapper.xml @@ -33,6 +33,54 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select transfer_id, transfer_code, transfer_name, transfer_type, destination, carrier, booking_note,receiver,receiver_nick, from_warehouse_id, from_warehouse_code, from_warehouse_name, to_warehouse_id, to_warehouse_code, to_warehouse_name, transfer_date, status, remark, attr1, attr2, attr3, attr4, create_by, create_time, update_by, update_time from wm_transfer @@ -69,6 +117,47 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where transfer_code = #{transferCode} + + insert into wm_transfer