diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/controller/ErpController.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/controller/ErpController.java new file mode 100644 index 0000000..9a13d2e --- /dev/null +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/controller/ErpController.java @@ -0,0 +1,49 @@ +package org.jeecg.modules.wms.api.erp.controller; + + +import com.google.gson.Gson; +import io.swagger.annotations.ApiOperation; +import net.sf.json.JSON; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.jeecg.common.system.base.controller.JeecgController; +import org.jeecg.common.system.util.JwtUtil; +import org.jeecg.modules.wms.api.erp.entity.ErpReceipt; +import org.jeecg.modules.wms.api.erp.entity.ErpReceiptDetail; +import org.jeecg.modules.wms.api.erp.entity.ErpReceiptHeader; +import org.jeecg.modules.wms.api.erp.service.IErpService; +import org.jeecg.modules.wms.api.wcs.entity.WarecellDomain; +import org.jeecg.modules.wms.framework.aspectj.lang.annotation.ApiLogger; +import org.jeecg.modules.wms.framework.controller.BaseController; +import org.jeecg.utils.StringUtils; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.List; + +/** + * @author 游杰 + */ +@RestController +@RequestMapping("/API/WMS/erp") +public class ErpController extends BaseController { + + @Resource + private IErpService erpService; + + @PostMapping("/receipt") + @ResponseBody + @ApiLogger(apiName = "入库单下发", from="WCS") + public Result receipt(@RequestBody ErpReceipt erpReceipt, HttpServletRequest req) { + String warehouseCode = JwtUtil.getWarehouseCodeByToken(req); + Result result = handleMultiProcess("receipt", new JeecgController.MultiProcessListener() { + @Override + public Result doProcess() { + return erpService.receipt(erpReceipt, warehouseCode); + } + }); + return result; + } +} diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/entity/ErpReceipt.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/entity/ErpReceipt.java new file mode 100644 index 0000000..53ce737 --- /dev/null +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/entity/ErpReceipt.java @@ -0,0 +1,16 @@ +package org.jeecg.modules.wms.api.erp.entity; + +import lombok.Data; +import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptDetail; + +import java.util.List; + +/** + * @author 游杰 + */ +@Data +public class ErpReceipt { + + private ErpReceiptHeader receiptHeader; + private List<ErpReceiptDetail> receiptDetailList; +} diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/entity/ErpReceiptDetail.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/entity/ErpReceiptDetail.java new file mode 100644 index 0000000..b859060 --- /dev/null +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/entity/ErpReceiptDetail.java @@ -0,0 +1,42 @@ +package org.jeecg.modules.wms.api.erp.entity; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author 游杰 + */ +@Data +public class ErpReceiptDetail { + + /** + * 物料编码 + */ + private String materialCode; + + /** + * 单据数量 + */ + private BigDecimal qty; + + /** + * 库存状况 + */ + private String inventoryStatus; + + /** + * 批次 + */ + private String batch; + + /** + * 批号 + */ + private String lot; + + /** + * 项目号 + */ + private String project; +} diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/entity/ErpReceiptHeader.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/entity/ErpReceiptHeader.java new file mode 100644 index 0000000..2f28a0a --- /dev/null +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/entity/ErpReceiptHeader.java @@ -0,0 +1,32 @@ +package org.jeecg.modules.wms.api.erp.entity; + +import lombok.Data; + +/** + * @author 游杰 + */ +@Data +public class ErpReceiptHeader { + + /** + * 货主 + */ + private String companyCode; + /** + * 入库单类型 + */ + private String receiptType; + /** + * 上游单号 + */ + private String referCode; + /** + * 供应商编码 + */ + private String supplierCode; + /** + * 备注 + */ + private String remark; + +} diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/service/IErpService.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/service/IErpService.java new file mode 100644 index 0000000..48f4246 --- /dev/null +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/service/IErpService.java @@ -0,0 +1,9 @@ +package org.jeecg.modules.wms.api.erp.service; + +import org.jeecg.common.api.vo.Result; +import org.jeecg.modules.wms.api.erp.entity.ErpReceipt; + +public interface IErpService { + + public Result receipt(ErpReceipt erpReceipt, String warehouseCode); +} diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/service/impl/ErpServiceImpl.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/service/impl/ErpServiceImpl.java new file mode 100644 index 0000000..7993450 --- /dev/null +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/erp/service/impl/ErpServiceImpl.java @@ -0,0 +1,137 @@ +package org.jeecg.modules.wms.api.erp.service.impl; + +import com.aliyun.oss.ServiceException; +import org.jeecg.common.api.vo.Result; +import org.jeecg.modules.wms.api.erp.entity.ErpReceipt; +import org.jeecg.modules.wms.api.erp.entity.ErpReceiptDetail; +import org.jeecg.modules.wms.api.erp.entity.ErpReceiptHeader; +import org.jeecg.modules.wms.api.erp.service.IErpService; +import org.jeecg.modules.wms.config.company.entity.Company; +import org.jeecg.modules.wms.config.company.service.ICompanyService; +import org.jeecg.modules.wms.config.material.entity.Material; +import org.jeecg.modules.wms.config.material.service.IMaterialService; +import org.jeecg.modules.wms.config.warehouse.entity.Warehouse; +import org.jeecg.modules.wms.config.warehouse.service.IWarehouseService; +import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptDetail; +import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptHeader; +import org.jeecg.modules.wms.receipt.receiptHeader.service.IReceiptDetailService; +import org.jeecg.modules.wms.receipt.receiptHeader.service.IReceiptHeaderService; +import org.jeecg.utils.StringUtils; +import org.jeecg.utils.constant.QuantityConstant; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.List; + +/** + * @author 游杰 + */ +@Service +public class ErpServiceImpl implements IErpService { + + @Resource + private IWarehouseService warehouseService; + @Resource + private ICompanyService companyService; + @Resource + private IReceiptHeaderService receiptHeaderService; + @Resource + private IMaterialService materialService; + @Resource + private IReceiptDetailService receiptDetailService; + + @Override + @Transactional(rollbackFor = Exception.class) + public Result receipt(ErpReceipt erpReceipt, String warehouseCode) { + if(StringUtils.isEmpty(warehouseCode)) { + return Result.error("入库单下发,仓库编码为空"); + } + Warehouse warehouse = warehouseService.getWarehouseByCode(warehouseCode); + if(warehouse == null) { + return Result.error("入库单下发, 没有找到仓库"); + } + if(erpReceipt == null) { + return Result.error("入库单下发,没有传receipt"); + } + ErpReceiptHeader erpReceiptHeader = erpReceipt.getReceiptHeader(); + List<ErpReceiptDetail> erpReceiptDetailList = erpReceipt.getReceiptDetailList(); + if(erpReceiptHeader == null) { + return Result.error("入库单下发,没有传receiptHeader"); + } + if(erpReceiptDetailList == null) { + return Result.error("入库单下发,没有传receiptDetailList"); + } + String receiptType = erpReceiptHeader.getReceiptType(); + String referCode = erpReceiptHeader.getReferCode(); + String companyCode = erpReceiptHeader.getCompanyCode(); + String remark = erpReceiptHeader.getRemark(); + String supplierCode = erpReceiptHeader.getSupplierCode(); + if(StringUtils.isEmpty(receiptType)) { + return Result.error("入库单下发, receiptType为空"); + } + if(StringUtils.isEmpty(referCode)) { + return Result.error("入库单下发, referCode为空"); + } + if(StringUtils.isEmpty(companyCode)) { + Company company = companyService.getDefaultCompany(); + if(company == null) { + return Result.error("入库单下发, company为空"); + } + companyCode = company.getCode(); + } + ReceiptHeader receiptHeader = new ReceiptHeader(); + receiptHeader.setCompanyCode(companyCode); + receiptHeader.setType(receiptType); + receiptHeader.setReferCode(referCode); + receiptHeader.setSupplierCode(supplierCode); + receiptHeader.setRemark(remark); + Result result = receiptHeaderService.saveReceiptHeader(receiptHeader); + if(!result.isSuccess()) { + throw new ServiceException("创建入库单头失败"); + } + for(ErpReceiptDetail erpReceiptDetail : erpReceiptDetailList) { + BigDecimal qty = erpReceiptDetail.getQty(); + String materialCode = erpReceiptDetail.getMaterialCode(); + String inventoryStatus = erpReceiptDetail.getInventoryStatus(); + String batch = erpReceiptDetail.getBatch(); + String lot = erpReceiptDetail.getLot(); + String project = erpReceiptDetail.getProject(); + if(StringUtils.isEmpty(materialCode)) { + throw new ServiceException("入库单下发, 物料编码为空"); + } + if(StringUtils.isEmpty(inventoryStatus)) { + inventoryStatus = QuantityConstant.QUALITY_GOOD; + } + if(qty.compareTo(BigDecimal.ZERO) > 0) { + throw new ServiceException("入库单下发, 单据数量大于0"); + } + ReceiptDetail receiptDetail = new ReceiptDetail(); + receiptDetail.setCompanyCode(companyCode); + receiptDetail.setReceiptCode(receiptHeader.getCode()); + receiptDetail.setReceiptId(receiptHeader.getId()); + receiptDetail.setStatus(QuantityConstant.RECEIPT_HEADER_BUILD); + receiptDetail.setQty(qty); + Material material = materialService.getMaterialByCode(materialCode); + if(material == null) { + throw new ServiceException("入库单下发, 没有找到物料信息" + materialCode); + } + receiptDetail.setInventoryStatus(inventoryStatus); + receiptDetail.setMaterialCode(materialCode); + receiptDetail.setMaterialName(material.getName()); + receiptDetail.setMaterialSpec(material.getSpec()); + receiptDetail.setMaterialUnit(material.getUnit()); + receiptDetail.setBatch(batch); + receiptDetail.setLot(lot); + receiptDetail.setProject(project); + boolean success = receiptDetailService.save(receiptDetail); + if(!success) { + throw new ServiceException("入库单下发, 保存入库单详情失败"); + } + } + return Result.OK("入库单下发成功"); + } + + +} diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/wcs/controller/WcsController.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/wcs/controller/WcsController.java index f6b603e..69f4f6c 100644 --- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/wcs/controller/WcsController.java +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/api/wcs/controller/WcsController.java @@ -28,8 +28,8 @@ public class WcsController extends BaseController { @Resource private ITaskHeaderService taskHeaderService; - /* - WCS给的长,宽,高,重在有不同规格库位才有用,destination是区域, locationType库位类型 + /** + ** WCS给的长,宽,高,重在有不同规格库位才有用,destination是区域, locationType库位类型 */ @AutoLog(value = "WCS仓位分配") @PostMapping("/warecellAllocation") diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/company/service/ICompanyService.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/company/service/ICompanyService.java index 18b38e2..6772ca5 100644 --- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/company/service/ICompanyService.java +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/company/service/ICompanyService.java @@ -11,4 +11,5 @@ import org.jeecg.modules.wms.config.company.entity.Company; */ public interface ICompanyService extends IService<Company> { + public Company getDefaultCompany(); } diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/company/service/impl/CompanyServiceImpl.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/company/service/impl/CompanyServiceImpl.java index ea002d2..965d85b 100644 --- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/company/service/impl/CompanyServiceImpl.java +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/company/service/impl/CompanyServiceImpl.java @@ -1,5 +1,7 @@ package org.jeecg.modules.wms.config.company.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import org.jeecg.modules.wms.config.company.entity.Company; import org.jeecg.modules.wms.config.company.mapper.CompanyMapper; import org.jeecg.modules.wms.config.company.service.ICompanyService; @@ -16,4 +18,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @Service public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> implements ICompanyService { + @Override + public Company getDefaultCompany() { + LambdaQueryWrapper<Company> companyLambdaQueryWrapper = Wrappers.lambdaQuery(); + companyLambdaQueryWrapper.last(" limit 1"); + Company company = getOne(companyLambdaQueryWrapper); + return company; + } } diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/warehouse/service/IWarehouseService.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/warehouse/service/IWarehouseService.java index 14a4207..db5f4ce 100644 --- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/warehouse/service/IWarehouseService.java +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/warehouse/service/IWarehouseService.java @@ -14,4 +14,6 @@ import java.util.List; public interface IWarehouseService extends IService<Warehouse> { public List<Warehouse> getAllWarehouseList(); + + public Warehouse getWarehouseByCode(String code); } diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/warehouse/service/impl/WarehouseServiceImpl.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/warehouse/service/impl/WarehouseServiceImpl.java index 3143145..83f5d37 100644 --- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/warehouse/service/impl/WarehouseServiceImpl.java +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/config/warehouse/service/impl/WarehouseServiceImpl.java @@ -1,5 +1,7 @@ package org.jeecg.modules.wms.config.warehouse.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import org.jeecg.modules.wms.config.warehouse.entity.Warehouse; import org.jeecg.modules.wms.config.warehouse.mapper.WarehouseMapper; import org.jeecg.modules.wms.config.warehouse.service.IWarehouseService; @@ -22,4 +24,12 @@ public class WarehouseServiceImpl extends ServiceImpl<WarehouseMapper, Warehouse public List<Warehouse> getAllWarehouseList() { return list(); } + + @Override + public Warehouse getWarehouseByCode(String code) { + LambdaQueryWrapper<Warehouse> warehouseLambdaQueryWrapper = Wrappers.lambdaQuery(); + warehouseLambdaQueryWrapper.eq(Warehouse::getCode, code); + Warehouse warehouse = getOne(warehouseLambdaQueryWrapper); + return warehouse; + } } diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptHeaderServiceImpl.java b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptHeaderServiceImpl.java index ff94d64..373bc74 100644 --- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptHeaderServiceImpl.java +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptHeaderServiceImpl.java @@ -94,8 +94,8 @@ public class ReceiptHeaderServiceImpl extends ServiceImpl<ReceiptHeaderMapper, R receiptHeader.setCode(code); receiptHeader.setFirstStatus(QuantityConstant.RECEIPT_HEADER_BUILD); receiptHeader.setLastStatus(QuantityConstant.RECEIPT_HEADER_BUILD); - boolean result = save(receiptHeader); - if(!result) { + boolean success = save(receiptHeader); + if(!success) { return Result.OK("添加失败!"); } return Result.OK("添加成功!"); diff --git a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/resources/application-dev.yml b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/resources/application-dev.yml index cb741eb..03ad129 100644 --- a/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/resources/application-dev.yml +++ b/jeecg-boot-master/jeecg-boot/jeecg-boot-module-system/src/main/resources/application-dev.yml @@ -131,9 +131,9 @@ spring: connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000 datasource: master: - url: jdbc:mysql://localhost:3306/wms4?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true + url: jdbc:mysql://172.16.29.45:3306/wms4?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true username: root - password: HHsoft123. + password: hhsoftware driver-class-name: com.mysql.cj.jdbc.Driver # 多数据源配置 #multi-datasource1: