package com.huaheng.api.general.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.huaheng.api.general.domain.ContainerTypeDomain; import com.huaheng.api.general.domain.Freeze; import com.huaheng.api.general.domain.InventoryDomain; import com.huaheng.api.general.domain.InventoryQueryDomain; import com.huaheng.common.exception.service.ServiceException; import com.huaheng.common.utils.StringUtils; import com.huaheng.framework.web.domain.AjaxResult; import com.huaheng.pc.config.company.service.CompanyService; import com.huaheng.pc.config.containerCapacity.domain.ContainerCapacity; import com.huaheng.pc.config.containerCapacity.service.ContainerCapacityService; import com.huaheng.pc.config.containerType.domain.ContainerType; import com.huaheng.pc.config.containerType.service.ContainerTypeService; import com.huaheng.pc.config.customer.domain.Customer; import com.huaheng.pc.config.customer.service.CustomerServiceImpl; import com.huaheng.pc.config.material.domain.Material; import com.huaheng.pc.config.material.service.MaterialService; import com.huaheng.pc.config.supplier.domain.Supplier; import com.huaheng.pc.config.supplier.service.SupplierService; import com.huaheng.pc.config.warehouse.domain.Warehouse; import com.huaheng.pc.config.warehouse.service.WarehouseService; import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail; import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService; import com.huaheng.pc.inventory.inventoryHeader.domain.InventoryHeader; import com.huaheng.pc.inventory.inventoryHeader.service.InventoryHeaderService; import com.huaheng.pc.receipt.receiptContainerDetail.domain.ReceiptContainerDetail; import com.huaheng.pc.receipt.receiptContainerDetail.service.ReceiptContainerDetailService; import com.huaheng.pc.shipment.shipmentContainerDetail.domain.ShipmentContainerDetail; import com.huaheng.pc.shipment.shipmentContainerDetail.service.ShipmentContainerDetailService; import com.huaheng.pc.system.dept.domain.Dept; import com.huaheng.pc.system.dept.service.IDeptService; import com.huaheng.pc.system.dict.domain.DictData; import com.huaheng.pc.system.dict.domain.DictType; import com.huaheng.pc.system.dict.mapper.DictDataMapper; import com.huaheng.pc.system.dict.mapper.DictTypeMapper; import com.huaheng.pc.system.dict.service.IDictDataService; import com.huaheng.pc.system.dict.service.IDictTypeService; import com.huaheng.pc.system.user.domain.User; import com.huaheng.pc.system.user.service.IUserService; import com.huaheng.pc.task.taskDetail.domain.TaskDetail; import com.huaheng.pc.task.taskDetail.service.TaskDetailService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Component @Transactional public class BasicDataApiService { @Autowired ReceiptContainerDetailService receiptContainerDetailService; @Autowired TaskDetailService taskDetailService; @Autowired ShipmentContainerDetailService shipmentContainerDetailService; @Autowired IDictTypeService dictTypeService; @Autowired IDictDataService dictDataService; @Autowired MaterialService materialService; @Autowired ContainerTypeService containerTypeService; @Autowired InventoryDetailService inventoryDetailService; @Autowired InventoryHeaderService inventoryHeaderService; @Resource private DictTypeMapper dictTypeMapper; @Resource private DictDataMapper dictDataMapper; @Autowired IUserService iUserService; @Autowired IDeptService iDeptService; @Autowired CustomerServiceImpl iCustomerService; @Autowired WarehouseService iWarehouseService; @Autowired SupplierService iSupplierService; @Autowired CompanyService companyService; @Autowired private ContainerCapacityService containerCapacityService; private static final Logger logger = LoggerFactory.getLogger("base-api"); //检查仓库 public Warehouse checkWarehouse(String code) { LambdaQueryWrapper<Warehouse> warehouseLam = Wrappers.lambdaQuery(); warehouseLam.eq(Warehouse::getCode, code); Warehouse warehouse = iWarehouseService.getOne(warehouseLam); if (warehouse == null) { throw new ServiceException("数据出现问题,系统没有该仓库"); } return warehouse; } /** * 字典通用接口 * 1、判断必填字段是否为空 * 2、仓库是否正确 * 3、检查字典头表,如果没有就添加 * 4、增新一条字典明细表的记录 * * @param dictData * @return */ public AjaxResult dict(DictData dictData) { //1、判断必填字段是否为空 if (StringUtils.isEmpty(dictData.getWarehouseCode())) { return AjaxResult.error("没有仓库编码"); } if (StringUtils.isEmpty(dictData.getDictLabel())) { return AjaxResult.error("没有字典标签"); } if (StringUtils.isEmpty(dictData.getDictType())) { return AjaxResult.error("没有字典类型"); } if (StringUtils.isEmpty(dictData.getDictValue())) { return AjaxResult.error("没有字典键值"); } //2、仓库是否正确 int result = 0; this.checkWarehouse(dictData.getWarehouseCode()); //3、检查字典头表,如果没有就添加 DictData condition = new DictData(); try { condition.setDictType(dictData.getDictType()); condition.setWarehouseCode(dictData.getWarehouseCode()); condition.setDictValue(dictData.getDictValue()); condition.setEnable(true); List<DictData> dictDatas = dictDataService.selectDictDataList(dictData); if (dictDatas.size() < 1) { //找出字典头表的id DictType dictType = new DictType(); dictType.setWarehouseCode(dictData.getWarehouseCode()); dictType.setDictType(dictData.getDictType()); List<DictType> dictList = dictTypeService.selectDictTypeList(dictType); if (dictList.size() < 1) { dictType.setWarehouseId(dictData.getWarehouseId()); dictType.setCreateBy(dictData.getCreateBy()); dictType.setCreateTime(dictData.getCreateTime()); if (StringUtils.isEmpty(dictType.getCreateBy())) { result = dictTypeService.insertDictType(dictType); } else { result = dictTypeMapper.insertDictType(dictType); } dictList.add(dictType); if (result < 1) { throw new ServiceException("新增字典类型失败!"); } } //4、增新一条字典明细表的记录 dictData.setHeaderId(dictList.get(0).getId()); if (StringUtils.isEmpty(dictData.getCreateBy())) { result = dictDataService.insertDictData(dictData); } else { result = dictDataMapper.insertDictData(dictData); } if (result < 1) { throw new ServiceException("新增字典数据失败!"); } } } catch (Exception e) { throw new ServiceException("字典数据有误!!"); } return AjaxResult.success("新增字典成功"); } /** * 检查是否存在物料,如果存在就修改,不存在就新增 * 1、判断必填字段是否为空 * 2、检查仓库和货主 * 3、查看此物料在系统是否存在 * * @param material * @return */ @Transactional public AjaxResult material(Material newMaterial) { if (StringUtils.isEmpty(newMaterial.getCode())) { return AjaxResult.error("物料编码不能为空!!"); } if (StringUtils.isEmpty(newMaterial.getMaterialId())) { return AjaxResult.error("物料id为空"); } //if(StringUtils.isEmpty(material.getType())){ // return AjaxResult.error("物料类型不能为空!!"); //} if (StringUtils.isEmpty(newMaterial.getName())) { return AjaxResult.error("物料名称不能为空!!"); } //if (StringUtils.isEmpty(material.getSpec())) { // return AjaxResult.error("物料规格不能为空!!"); //} //if (StringUtils.isEmpty(material.getUnit())) { // return AjaxResult.error("物料单位不能为空!!"); //} newMaterial.setERPID(Integer.valueOf(newMaterial.getMaterialId())); newMaterial.setCompanyCode("BHF"); newMaterial.setWarehouseCode("CS0001"); try { Material code2 = materialService.getOne(new LambdaQueryWrapper<Material>().eq(Material::getCode, newMaterial.getCode()).eq(Material::getERPID, newMaterial.getERPID())); if (code2 == null) { Material code = materialService.getOne(new LambdaQueryWrapper<Material>().eq(Material::getCode, newMaterial.getCode())); if (code != null) { throw new ServiceException("wms系统有物料编码重复了,不能添加新的物料:" + newMaterial.getCode()); } } //查看此物料在系统是否存在,通过ID Material entity = materialService.getOne(new LambdaQueryWrapper<Material>().eq(Material::getERPID, newMaterial.getERPID())); //不存在就新增 if (entity == null) { if (!materialService.save(newMaterial)) { throw new ServiceException("新增物料失败!"); } } else {//修改 newMaterial.setId(entity.getId()); if (materialService.updateById(newMaterial)) { //同步修改库存的物料信息,如果库存锁定了就修改物料失败 AjaxResult ajaxResult = updateInventory(entity, newMaterial); if (ajaxResult.getCode() != 200) { throw new ServiceException("更新库存失败!" + ajaxResult.getMsg()); } return AjaxResult.success("更新物料和库存成功"); } else { throw new ServiceException("更新物料失败!"); } } } catch (Exception e) { throw new ServiceException("物料数据问题:" + e); } return AjaxResult.success("新增物料成功"); } private AjaxResult updateInventory(Material material, Material newMaterial) { String materialCode = material.getCode(); List<InventoryDetail> list = inventoryDetailService.list(new LambdaQueryWrapper<InventoryDetail>().eq(InventoryDetail::getMaterialCode, materialCode)); if (list.isEmpty()) { return AjaxResult.success("该物料没有库存,无需修改物料信息"); } for (InventoryDetail inventoryDetail : list) { if (inventoryDetail.getTaskQty().compareTo(BigDecimal.ZERO) > 0) { throw new ServiceException("该库存的物料有任务了,无法修改物料信息:" + materialCode); } } List<TaskDetail> taskDetailList = taskDetailService.list(new LambdaQueryWrapper<TaskDetail>().eq(TaskDetail::getMaterialCode, materialCode).ne(TaskDetail::getStatus, 100)); if (!taskDetailList.isEmpty()) { throw new ServiceException("该物料,无法修改物料信息,有未完成的任务:" + materialCode); } List<ReceiptContainerDetail> receiptContainerDetails = receiptContainerDetailService.list(new LambdaQueryWrapper<ReceiptContainerDetail>().eq(ReceiptContainerDetail::getMaterialCode, materialCode).ne(ReceiptContainerDetail::getStatus, 20)); if (!receiptContainerDetails.isEmpty()) { throw new ServiceException("该物料,无法修改物料信息,有未完成入库组盘:" + materialCode); } List<ShipmentContainerDetail> shipmentContainerDetails = shipmentContainerDetailService.list(new LambdaQueryWrapper<ShipmentContainerDetail>().eq(ShipmentContainerDetail::getMaterialCode, materialCode).ne(ShipmentContainerDetail::getStatus, 20)); if (!shipmentContainerDetails.isEmpty()) { throw new ServiceException("该物料,无法修改物料信息,有未完成出库组盘:" + materialCode); } //修改库存 for (InventoryDetail inventoryDetail : list) { inventoryDetail.setMaterialCode(newMaterial.getCode()); inventoryDetail.setMaterialName(newMaterial.getName()); inventoryDetail.setMaterialSpec(newMaterial.getSpec()); inventoryDetail.setMaterialUnit(newMaterial.getUnit()); } if (!inventoryDetailService.updateBatchById(list)) { throw new ServiceException("修改库存失败!"); } return AjaxResult.success(""); } /** * 1,物料同步 * 2,条件查询 * * @param material * @return */ @Transactional public AjaxResult queryMaterial(Material material) { if (StringUtils.isEmpty(material.getWarehouseCode())) { return AjaxResult.error("仓库编码不能为空!!"); } if (StringUtils.isEmpty(material.getCompanyCode())) { return AjaxResult.error("货主编码不能为空!!"); } LambdaQueryWrapper<Material> lambdaQueryWrapper = Wrappers.lambdaQuery(material); materialService.list(lambdaQueryWrapper); return AjaxResult.success(materialService.list(lambdaQueryWrapper)); } /** * 人员档案通用接口 * 1、判断必填字段是否为空 * 2、判断系统中是否有该用户,如果有则更新,如果没有则新增 * 新增: (1)、默认密码为123456 * (2)默认为普通用户 * (3)默认为长沙仓库 * * @param user * @return */ public AjaxResult user(User user) { //1、判断必填字段是否为空 int result = 0; User user1 = new User(); if (user.getLoginName() == null || user.getLoginName() == "") { return AjaxResult.error("没有人员编码!!"); } if (user.getUserName() == null || user.getUserName() == "") { return AjaxResult.error("没有人员名称!!"); } if (user.getDeptId() == null) { return AjaxResult.error("没有部门ID!!"); } if (iDeptService.selectDeptById(user.getDeptId()) == null) { return AjaxResult.error("系统没有此部门!!"); } try { user1.setLoginName(user.getLoginName()); //2、判断系统中是否有该用户,如果有则更新,如果没有则新增 if (iUserService.selectmen(user.getLoginName()) == null) { //(1)默认密码为123456 if (user.getPassword() == null) { user.setPassword("123456"); } //(2)默认为普通用户 if (StringUtils.isEmpty(user.getRoleIds())) { List<Integer> roleIds = new ArrayList<>(); roleIds.add(2); user.setRoleIds(roleIds); } //(3)默认为长沙仓库 if (StringUtils.isEmpty(user.getCompanyIdList())) { List<Integer> companyIdList = new ArrayList<>(); companyIdList.add(2); user.setCompanyIdList(companyIdList); } result = iUserService.insertUser(user); if (result < 1) { throw new ServiceException("新增人员档案失败!"); } else { return AjaxResult.success("新增人员档案成功!"); } } else { return AjaxResult.error("已有该人员档案,无法进行修改!"); // result = iUserService.updateUser(user); // if (result < 1) { // throw new ServiceException("更新人员档案失败!"); // } else { // return AjaxResult.success("更新人员档案成功!"); // } } } catch (Exception e) { throw new ServiceException("数据问题。。。"); } } /** * 1,用户同步 * 2,条件查询 * * @param user * @return */ @Transactional public AjaxResult queryUser(User user) { iUserService.selectUserList(user); return AjaxResult.success(iUserService.selectUserList(user)); } /** * 部门档案通用接口 * 1、判断必填字段是否为空 * 2、部门编码长度应是双数 * * @param dept * @return */ @Transactional public AjaxResult dept(Dept dept) { //1、判断必填字段是否为空 int result = 0; String code = dept.getCode(); if (code == null || code == "") { return AjaxResult.error("部门编码不能为空!!"); } try { Dept rs = iDeptService.selectDepts(code); //2、部门编码长度应是双数 if (rs == null) { int x = code.length() % 2; if (x != 0) { return AjaxResult.error("部门编码长度应是双数"); } else { int y = code.length() / 2; if (y >= 1) { String scode = code.substring(0, 2); if (iDeptService.selectDepts(scode) == null) { dept.setCode(scode); dept.setParentId(100); dept.setAncestors("0,100"); dept.setOrderNum("1"); result = iDeptService.insertDept(dept); if (result < 1) { throw new ServiceException("新增部门档案失败!"); } } } for (int z = 1; z <= y; z++) { //找到上级部门 String sqcode = code.substring(0, 2 * (z - 1)); Dept sdept = iDeptService.selectDepts(sqcode); String sscode = code.substring(0, 2 * z); if (iDeptService.selectDepts(sscode) == null) { dept.setCode(sscode); dept.setParentId(sdept.getId()); dept.setAncestors(sdept.getAncestors() + "," + sdept.getId()); dept.setOrderNum(String.valueOf(z)); result = iDeptService.insertDept(dept); if (result < 1) { throw new ServiceException("新增部门档案失败!"); } } } } return AjaxResult.success("新增部门成功"); } else { dept.setId(rs.getId()); int num = iDeptService.updatesDept(dept); if (num < 1) { throw new ServiceException("部门修改失败"); } else { return AjaxResult.success("部门修改成功"); } } } catch (Exception e) { throw new ServiceException("数据问题。。。"); } } /** * 客户档案通用接口 * 1、判断必填字段是否为空 * 2、检查仓库 * 3、查看此客户在系统是否存在 * * @param customer * @return */ public AjaxResult customer(Customer customer) { Boolean flag = true; //1、判断必填字段是否为空 if (customer.getCode() == null || customer.getCode() == "") { return AjaxResult.error("客户代码不能为空!!"); } if (StringUtils.isEmpty(customer.getWarehouseCode())) { return AjaxResult.error("没有仓库编码"); } if (StringUtils.isEmpty(customer.getName())) { return AjaxResult.error("没有客户名称"); } if (StringUtils.isEmpty(customer.getCompanyCode())) { return AjaxResult.error("没有货主编码"); } try { //2、检查仓库 this.checkWarehouse(customer.getWarehouseCode()); //3、查看此客户在系统是否存在 LambdaQueryWrapper<Customer> customerLam = Wrappers.lambdaQuery(); customerLam.eq(Customer::getCode, customer.getCode()) .eq(Customer::getWarehouseCode, customer.getWarehouseCode()); Customer ctr = iCustomerService.getOne(customerLam); //不存在添加 if (ctr == null) { flag = iCustomerService.save(customer); if (flag == false) { throw new ServiceException("新增客户档案失败!"); } else { return AjaxResult.success("新增客户档案成功!"); } } else { return AjaxResult.error("已有该客户,无法进行修改!!"); // customer.setId(rs.getId()); // result = iCustomerService.updateByModel(customer); // if (result < 1) { // throw new ServiceException("更新客户档案失败!"); // } else { // return AjaxResult.success("更新客户档案成功!"); // } } } catch (Exception e) { throw new ServiceException("数据问题。。。"); } } /** * 仓库档案通用接口 * 1、判断必填字段是否为空 * 2、判断系统中是否有该仓库,若有则更新,若无则新增 * * @param warehouse * @return */ public AjaxResult warehouse(Warehouse warehouse) { if (warehouse.getCode() == null || warehouse.getCode() == "") { return AjaxResult.error("仓库编码不能为空!!"); } if (warehouse.getName() == null || warehouse.getName() == "") { return AjaxResult.error("仓库名称不能为空!!"); } try { LambdaQueryWrapper<Warehouse> warehouseLam = Wrappers.lambdaQuery(); warehouseLam.eq(Warehouse::getCode, warehouse.getCode()); Warehouse whs = iWarehouseService.getOne(warehouseLam); //2、判断系统中是否有该仓库,若有则更新,若无则新增 if (whs == null) { Boolean flag = iWarehouseService.save(warehouse); if (flag == false) { throw new ServiceException("新增仓库档案失败!"); } else { return AjaxResult.success("新增仓库档案成功!"); } } else { return AjaxResult.error("已有该仓库,无法进行修改!"); // warehouse.setId(rs.getId()); // result = iWarehouseService.updateByModel(warehouse); // if (result < 1) { // throw new ServiceException("更新仓库档案失败!"); // } else { // return AjaxResult.success("更新仓库档案成功!"); // } } } catch (Exception e) { throw new ServiceException("仓库数据问题。。。"); } } /** * 供应商档案通用接口 * 1、判断必填字段是否为空 * 2、检查仓库 * 3、查看此供应商在系统是否存在 * * @param supplier * @return */ public AjaxResult supplier(Supplier supplier) { //1、判断必填字段是否为空 if (StringUtils.isEmpty(supplier.getCode())) { return AjaxResult.error("没有供应商代码"); } if (StringUtils.isEmpty(supplier.getName())) { return AjaxResult.error("没有供应商名称"); } if (StringUtils.isEmpty(supplier.getWarehouseCode())) { return AjaxResult.error("没有仓库编码"); } //2、检查仓库 this.checkWarehouse(supplier.getCode()); //3、查看此供应商在系统是否存在 try { LambdaQueryWrapper<Supplier> supplierLam = Wrappers.lambdaQuery(); supplierLam.eq(Supplier::getCode, supplier.getCode()) .eq(Supplier::getWarehouseCode, supplier.getWarehouseCode()); Supplier spl = iSupplierService.getOne(supplierLam); if (spl == null) { Boolean flag = iSupplierService.save(supplier); if (flag == false) { throw new ServiceException("新增供应商失败!"); } else { return AjaxResult.success("新增供应商成功!"); } } else { return AjaxResult.error("已有该供应商,无法修改!!"); } } catch (Exception e) { throw new ServiceException("供应商数据问题。。。"); } } /** * 容器容量通用接口 * 1、判断必填字段是否为空 * 2、检查仓库、物料和容器类型 * 3、检查此容器容量是否存在,不存在则添加 * * @param containerCapacity * @return */ public AjaxResult containerCapacity(ContainerCapacity containerCapacity) { Boolean flag = false; //1、判断必填字段是否为空 if (StringUtils.isEmpty(containerCapacity.getContainerType())) { return AjaxResult.error("没有容器类型"); } if (StringUtils.isEmpty(containerCapacity.getWarehouseCode())) { return AjaxResult.error("没有仓库编号"); } if (StringUtils.isEmpty(containerCapacity.getMaterialCode())) { return AjaxResult.error("没有物料编号"); } if (StringUtils.isNull(containerCapacity.getQty())) { return AjaxResult.error("没有容量上限"); } // 2、检查仓库、物料和容器类型 this.checkWarehouse(containerCapacity.getWarehouseCode()); //物料检查 LambdaQueryWrapper<Material> materialLam = Wrappers.lambdaQuery(); materialLam.eq(Material::getCode, containerCapacity.getMaterialCode()) .eq(Material::getWarehouseCode, containerCapacity.getWarehouseCode()); Material material = materialService.getOne(materialLam); if (material == null) { return AjaxResult.error("系统没有此物料编号"); } //容器类型检查 LambdaQueryWrapper<ContainerType> containerTypeLamb = Wrappers.lambdaQuery(); containerTypeLamb.eq(ContainerType::getCode, containerCapacity.getContainerType()) .eq(ContainerType::getWarehouseCode, containerCapacity.getWarehouseCode()); ContainerType containerType = containerTypeService.getOne(containerTypeLamb); if (containerType == null) { return AjaxResult.error("系统没有此容器类型"); } //3、检查此容器容量是否存在,不存在则添加 LambdaQueryWrapper<ContainerCapacity> containerCapacityLambd = Wrappers.lambdaQuery(); containerCapacityLambd.eq(ContainerCapacity::getContainerType, containerCapacity.getContainerType()) .eq(ContainerCapacity::getWarehouseCode, containerCapacity.getWarehouseCode()) .eq(ContainerCapacity::getMaterialCode, containerCapacity.getMaterialCode()); ContainerCapacity capacity = containerCapacityService.getOne(containerCapacityLambd); if (capacity == null) { flag = containerCapacityService.save(containerCapacity); if (flag == false) { return AjaxResult.error("新增容器容量失败"); } } else { if (capacity.getQty().compareTo(containerCapacity.getQty()) != 0) { capacity.setQty(containerCapacity.getQty()); flag = containerCapacityService.updateById(capacity); if (flag == false) { return AjaxResult.error("修改容器容量失败"); } } } return AjaxResult.success("新增容器容量成功"); } public AjaxResult containerType(ContainerTypeDomain containerTypeDomain) { if ("0".equals(containerTypeDomain.getCode())) { if (!containerTypeService.saveBatch(containerTypeDomain.getContainerTypeList())) { logger.error("erp初始化容器类型失败,失败原因:无法插入数据"); return AjaxResult.error("初始化容器类型失败"); } return AjaxResult.success("容器类型初始化成功"); } else { LambdaQueryWrapper<ContainerType> lambdaQuery; for (ContainerType containerType : containerTypeDomain.getContainerTypeList()) { lambdaQuery = Wrappers.lambdaQuery(); lambdaQuery.eq(ContainerType::getCode, containerType.getCode()); ContainerType srcContainerType = containerTypeService.getOne(lambdaQuery); if (srcContainerType == null) { if (!containerTypeService.save(containerType)) { logger.error("erp更新容器类型失败,失败原因:无法插入数据"); return AjaxResult.error("插入容器类型失败"); } } else { containerType.setId(srcContainerType.getId()); if (!containerTypeService.updateById(containerType)) { logger.error("erp更新容器类型失败,失败原因:无法更新数据"); return AjaxResult.error("更新容器类型失败"); } } } return AjaxResult.success("容器类型更新成功"); } } /** * 1,库存同步 * 2,条件查询 * * @param inventoryDetail * @return */ @Transactional public AjaxResult queryInventoryApi(InventoryDetail inventoryDetail) { if (StringUtils.isEmpty(inventoryDetail.getWarehouseCode())) { return AjaxResult.error("仓库编码不能为空!!"); } if (StringUtils.isEmpty(inventoryDetail.getCompanyCode())) { return AjaxResult.error("货主编码不能为空!!"); } //查询库存明细 LambdaQueryWrapper<InventoryDetail> lambdaQueryWrapper = Wrappers.lambdaQuery(inventoryDetail); List<InventoryDetail> inventoryDetailList = inventoryDetailService.list(lambdaQueryWrapper); //查询库存Header表 Map<Integer, InventoryHeader> inventoryHeaderList = new HashMap<>();//map防止出现数据重复 for (InventoryDetail inventoryDetail1 : inventoryDetailList) { LambdaQueryWrapper<InventoryHeader> inventoryHeaderLambdaQueryWrapper = Wrappers.lambdaQuery(); inventoryHeaderLambdaQueryWrapper.eq(InventoryHeader::getId, inventoryDetail1.getInventoryHeaderId()); inventoryHeaderList.put(inventoryDetail1.getInventoryHeaderId(), inventoryHeaderService.getOne(inventoryHeaderLambdaQueryWrapper)); } InventoryDomain inventoryDomain = new InventoryDomain(); inventoryDomain.setInventoryHeader(inventoryHeaderList); inventoryDomain.setInventoryDetails(inventoryDetailList); return AjaxResult.success(inventoryDomain); } public AjaxResult queryInventory(InventoryQueryDomain queryDomain) { if (StringUtils.isEmpty(queryDomain.getWarehouseCode())) { return AjaxResult.error("仓库编码不能为空"); } if (StringUtils.isEmpty(queryDomain.getCompanyCode())) { return AjaxResult.error("货主编码不能为空"); } if (StringUtils.isEmpty(queryDomain.getContainerCode()) && StringUtils.isEmpty(queryDomain.getLocationCode()) && StringUtils.isEmpty(queryDomain.getMaterialCode())) { return AjaxResult.error("容器、库位与物料至少一样不为空"); } LambdaQueryWrapper<InventoryDetail> queryWrapper = Wrappers.lambdaQuery(); queryWrapper.eq(InventoryDetail::getWarehouseCode, queryDomain.getWarehouseCode()) .eq(InventoryDetail::getCompanyCode, queryDomain.getCompanyCode()); ArrayList<InventoryDetail> inventoryDetails = new ArrayList<>(); if (StringUtils.isNotEmpty(queryDomain.getContainerCode())) { queryWrapper.eq(InventoryDetail::getContainerCode, queryDomain.getContainerCode()); } if (StringUtils.isNotEmpty(queryDomain.getLocationCode())) { queryWrapper.eq(InventoryDetail::getLocationCode, queryDomain.getLocationCode()); } if (StringUtils.isNotEmpty(queryDomain.getMaterialCode())) { queryWrapper.eq(InventoryDetail::getMaterialCode, queryDomain.getMaterialCode()); } List<InventoryDetail> list = inventoryDetailService.list(queryWrapper); if (list == null) { return AjaxResult.error("没有符合条件的库存"); } return AjaxResult.success("获取成功", list); } public AjaxResult freeze(Freeze freeze) { List<InventoryDetail> list = inventoryDetailService.list(new LambdaQueryWrapper<InventoryDetail>().eq(InventoryDetail::getLabelCode, freeze.getLabelCode())); if (list.size() != 1) { return AjaxResult.error("这个标签号查询出的库存大于1," + freeze.getLabelCode()); } InventoryDetail inventoryDetail = list.get(0); inventoryDetail.setFreezeStatus(freeze.getStatus()); inventoryDetailService.updateById(inventoryDetail); if (freeze.getStatus() == 1) { return AjaxResult.success("冻结成功"); } return AjaxResult.success("解冻成功"); } }