Browse Source

修改入库导入

dev-warehouse
caoyizhong 2 years ago
parent
commit
c49f230f7a
  1. 15
      blade-service-api/logpm-basic-api/src/main/java/com/logpm/basic/feign/IBasicMaterialClient.java
  2. 5
      blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/entity/BasicdataClientEntity.java
  3. 8
      blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/feign/IBasicdataClientClient.java
  4. 12
      blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/feign/IBasicdataWarehouseClient.java
  5. 11
      blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/WarehouseWarehousingEntryEntity.java
  6. 21
      blade-service/logpm-basic/src/main/java/com/logpm/basic/feign/BasicMaterialClient.java
  7. 16
      blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/feign/BasicdataClientClient.java
  8. 16
      blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/feign/BasicdataWarehouseClient.java
  9. 10
      blade-service/logpm-warehouse/pom.xml
  10. 19
      blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/excel/WarehousingEntryDetailExcel.java
  11. 127
      blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseWarehousingEntryServiceImpl.java

15
blade-service-api/logpm-basic-api/src/main/java/com/logpm/basic/feign/IBasicMaterialClient.java

@ -22,6 +22,8 @@ import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
* 物料基础信息 Feign接口类
*
@ -29,12 +31,13 @@ import org.springframework.web.bind.annotation.RequestParam;
* @since 2023-05-26
*/
@FeignClient(
value = "blade-basicMaterial"
value = "logpm-basic-cyz"
)
public interface IBasicMaterialClient {
String API_PREFIX = "material/client";
String TOP = API_PREFIX + "/top";
String GETMATERIAL = API_PREFIX + "/getMaterial";
/**
* 获取物料基础信息列表
@ -46,4 +49,14 @@ public interface IBasicMaterialClient {
@GetMapping(TOP)
BladePage<BasicMaterialEntity> materialTop(@RequestParam("current") Integer current, @RequestParam("size") Integer size);
/**
* 查询某个物理信息
* @param productCode
* @param name
* @param sku
* @return
*/
@GetMapping(GETMATERIAL)
BasicMaterialEntity getMaterialOwn(@RequestParam("productCode") String productCode, @RequestParam("name") String name, @RequestParam("sku") String sku);
}

5
blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/entity/BasicdataClientEntity.java

@ -70,6 +70,11 @@ public class BasicdataClientEntity extends TenantEntity {
*/
@ApiModelProperty(value = "客户名称")
private String clientName;
/**
* 客户编码
*/
@ApiModelProperty(value = "客户编码")
private String clientCode;
/**
* 客户类型 1 工厂 2 商场 3装饰 4个人
*/

8
blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/feign/IBasicdataClientClient.java

@ -30,12 +30,13 @@ import org.springframework.web.bind.annotation.RequestParam;
* @since 2023-05-16
*/
@FeignClient(
value = ModuleNameConstant.APPLICATION_BASICDATA_NAME
value = "logpm-basicdata-cyz"
)
public interface IBasicdataClientClient {
String API_PREFIX = "/client";
String TOP = API_PREFIX + "/top2";
String GETCUSTOMER = API_PREFIX + "/customer";
/**
* 获取基础客户表列表
@ -49,4 +50,9 @@ public interface IBasicdataClientClient {
@GetMapping(API_PREFIX+"/findByName")
BasicdataClientEntity findByName(@RequestParam String customerName);
@GetMapping(GETCUSTOMER)
BasicdataClientEntity getCustomer(@RequestParam("customerName") String customerName,@RequestParam("customerCode") String customerCode);
}

12
blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/feign/IBasicdataWarehouseClient.java

@ -31,12 +31,13 @@ import org.springframework.web.bind.annotation.RequestParam;
* @since 2023-05-15
*/
@FeignClient(
value = ModuleNameConstant.APPLICATION_BASICDATA_NAME
value ="logpm-basicdata-cyz"
)
public interface IBasicdataWarehouseClient {
String API_PREFIX = "warehouse/client";
String TOP = API_PREFIX + "/top";
String GETWAREHOUSE = API_PREFIX + "/warehouse";
/**
* 获取仓库列表
@ -50,4 +51,13 @@ public interface IBasicdataWarehouseClient {
@GetMapping(API_PREFIX+"/findByName")
BasicdataWarehouseEntity findByName(@RequestParam String destinationWarehouse);
/**
* 查询仓库信息
* @param name
* @param warehouseCode
* @return
*/
@GetMapping(GETWAREHOUSE)
BasicdataWarehouseEntity getWarehouse(@RequestParam("name") String name,@RequestParam("warehouseCode") String warehouseCode);
}

11
blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/WarehouseWarehousingEntryEntity.java

@ -73,6 +73,11 @@ public class WarehouseWarehousingEntryEntity extends TenantEntity {
@ApiModelProperty(value = "入库时间")
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
private Date receiptDate;
/**
* 客户编码
*/
@ApiModelProperty(value = "客户编码")
private String customerCode;
/**
* 客户名称
*/
@ -123,6 +128,12 @@ public class WarehouseWarehousingEntryEntity extends TenantEntity {
*/
@ApiModelProperty(value = "入库状态")
private String conditions;
/**
* 存放位置
*/
@ApiModelProperty(value = "存放位置")
private String positions;
/**
* 客户ID
*/

21
blade-service/logpm-basic/src/main/java/com/logpm/basic/feign/BasicMaterialClient.java

@ -17,6 +17,8 @@
package com.logpm.basic.feign;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.BladePage;
import org.springblade.core.mp.support.Condition;
@ -27,6 +29,8 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
import java.util.List;
/**
* 物料基础信息 Feign实现类
*
@ -50,4 +54,21 @@ public class BasicMaterialClient implements IBasicMaterialClient {
return BladePage.of(page);
}
/**
* 查询某个物料
* @param productCode
* @param name
* @param sku
* @return
*/
@Override
public BasicMaterialEntity getMaterialOwn(String productCode, String name, String sku) {
BasicMaterialEntity one = basicMaterialService.getOne(Wrappers.<BasicMaterialEntity>query().lambda()
.eq(StringUtils.isNotEmpty(productCode), BasicMaterialEntity::getProductCode, productCode)
.eq(StringUtils.isNotEmpty(name), BasicMaterialEntity::getName, name)
.eq(StringUtils.isNotEmpty(sku), BasicMaterialEntity::getSku, sku)
);
return one;
}
}

16
blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/feign/BasicdataClientClient.java

@ -18,6 +18,8 @@ package com.logpm.basicdata.feign;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.BladePage;
import org.springblade.core.mp.support.Condition;
@ -58,4 +60,18 @@ public class BasicdataClientClient implements IBasicdataClientClient {
return basicdataClientService.getOne(queryWrapper);
}
/**
* 查询客户信息
* @param customerName
* @param customerCode
* @return
*/
@Override
public BasicdataClientEntity getCustomer(String customerName, String customerCode) {
return basicdataClientService.getOne(Wrappers.<BasicdataClientEntity>query().lambda()
.eq(StringUtils.isNotEmpty(customerName),BasicdataClientEntity::getClientName,customerName)
.eq(StringUtils.isNotEmpty(customerCode),BasicdataClientEntity::getReserve1,customerCode)
);
}
}

16
blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/feign/BasicdataWarehouseClient.java

@ -18,6 +18,8 @@ package com.logpm.basicdata.feign;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.logpm.basicdata.entity.BasicdataWarehouseEntity;
import com.logpm.basicdata.service.IBasicdataWarehouseService;
import lombok.AllArgsConstructor;
@ -58,4 +60,18 @@ public class BasicdataWarehouseClient implements IBasicdataWarehouseClient {
return warehouseWarehouseService.getOne(queryWrapper);
}
/**
* 查询仓库数据
* @param name
* @param warehouseCode
* @return
*/
@Override
public BasicdataWarehouseEntity getWarehouse(String name, String warehouseCode) {
return warehouseWarehouseService.getOne(Wrappers.<BasicdataWarehouseEntity>query().lambda()
.eq(StringUtils.isNotEmpty(name),BasicdataWarehouseEntity::getName,name)
.eq(StringUtils.isNotEmpty(warehouseCode),BasicdataWarehouseEntity::getWarehouseCode,warehouseCode)
);
}
}

10
blade-service/logpm-warehouse/pom.xml

@ -57,6 +57,16 @@
<version>3.1.0.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-dict-api</artifactId>
<version>${bladex.project.version}</version>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>logpm-basic-api</artifactId>
<version>${bladex.project.version}</version>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>logpm-old-project-api</artifactId>

19
blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/excel/WarehousingEntryDetailExcel.java

@ -4,6 +4,7 @@ import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
@ -33,7 +34,15 @@ public class WarehousingEntryDetailExcel implements Serializable {
*/
@ColumnWidth(20)
@ExcelProperty("入库时间")
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
private Date receiptDate;
/**
* 客户编码
*/
@ColumnWidth(20)
@ExcelProperty("客户编码")
private String customerCode;
/**
* 客户名称
*/
@ -62,8 +71,14 @@ public class WarehousingEntryDetailExcel implements Serializable {
* 所在仓库
*/
@ColumnWidth(20)
@ExcelProperty("仓库")
@ExcelProperty("仓库名称")
private String warehouse;
/**
* 所在仓库
*/
@ColumnWidth(20)
@ExcelProperty("仓库编码")
private String warehouseCode;
/**
* 物流车次
*/
@ -142,7 +157,7 @@ public class WarehousingEntryDetailExcel implements Serializable {
*/
@ColumnWidth(20)
@ExcelProperty("入库数量")
private String createInventory;
private Integer createInventory;
/**
* 存放位置
*/

127
blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseWarehousingEntryServiceImpl.java

@ -16,9 +16,17 @@
*/
package com.logpm.warehouse.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.eventbus.AllowConcurrentEvents;
import com.logpm.basic.entity.BasicMaterialEntity;
import com.logpm.basic.feign.IBasicMaterialClient;
import com.logpm.basicdata.entity.BasicdataClientEntity;
import com.logpm.basicdata.entity.BasicdataWarehouseEntity;
import com.logpm.basicdata.feign.IBasicdataClientClient;
import com.logpm.basicdata.feign.IBasicdataWarehouseClient;
import com.logpm.distribution.entity.DistributionStockListEntity;
import com.logpm.distribution.feign.IDistributionStockListClient;
import com.logpm.distribution.vo.DistributionStockListVO;
@ -32,9 +40,13 @@ import com.logpm.warehouse.excel.WarehouseWarehousingEntryExcel;
import com.logpm.warehouse.mapper.WarehouseWarehousingEntryMapper;
import com.logpm.warehouse.service.IWarehouseWarehousingEntryService;
import lombok.AllArgsConstructor;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.system.entity.DictBiz;
import org.springblade.system.feign.IDictBizClient;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
@ -42,9 +54,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
/**
* 仓库入库单 服务实现类
@ -57,6 +69,10 @@ import java.util.List;
public class WarehouseWarehousingEntryServiceImpl extends BaseServiceImpl<WarehouseWarehousingEntryMapper, WarehouseWarehousingEntryEntity> implements IWarehouseWarehousingEntryService {
private final IWarehouseWarehousingDetailService warehouseWarehousingDetailService;
private final IDistributionStockListClient distributionStockListClient;
private final IDictBizClient dictBizClient;
private final IBasicMaterialClient basicMaterialClient;
private final IBasicdataClientClient basicdataClientClient;
private final IBasicdataWarehouseClient basicdataWarehouseClient;
@ -84,17 +100,19 @@ public class WarehouseWarehousingEntryServiceImpl extends BaseServiceImpl<Wareho
BeanUtil.copyProperties(warehouseWarehousingEntryDTO,warehouseWarehousingEntry);
if(ObjectUtils.isNotNull(warehouseWarehousingEntryDTO.getId())){
List<Long> detailEntityList = new ArrayList<>();
//修改
this.updateById(warehouseWarehousingEntry);
List<WarehouseWarehousingDetailEntity> list1 = warehouseWarehousingDetailService.list(Wrappers.<WarehouseWarehousingDetailEntity>query().lambda()
.eq(WarehouseWarehousingDetailEntity::getWarehousingEntryId, warehouseWarehousingEntry.getId())
);
AtomicBoolean ba = new AtomicBoolean(false);
list1.forEach( i ->{
boolean b = list.stream().anyMatch(w -> w.getMaterialId().equals(i.getMaterialId()));
if(b){
Iterator<WarehouseWarehousingDetailEntity> iterator = list.iterator();
while (iterator.hasNext()){
WarehouseWarehousingDetailEntity next = iterator.next();
if(!i.getActualReceipt().equals(i.getCreateInventory())){
ba.set(true);
}
if(next.getMaterialId().equals(i.getMaterialId())){
//修改
WarehouseWarehousingDetailEntity detailEntity = new WarehouseWarehousingDetailEntity();
@ -104,6 +122,7 @@ public class WarehouseWarehousingEntryServiceImpl extends BaseServiceImpl<Wareho
detailEntity.setConditions("3");
}else{
detailEntity.setConditions("2");
warehouseWarehousingEntry.setConditions("2");
}
warehouseWarehousingDetailService.updateById(detailEntity);//修改数据
//当前入库数量
@ -119,6 +138,11 @@ public class WarehouseWarehousingEntryServiceImpl extends BaseServiceImpl<Wareho
detailEntityList.add(i.getId());
}
});
if(!ba.get()){
warehouseWarehousingEntry.setConditions("3");
}
//修改
this.updateById(warehouseWarehousingEntry);
if(detailEntityList.size() > 0){
//删除多余的
warehouseWarehousingDetailService.deleteLogic(detailEntityList);
@ -243,9 +267,96 @@ public class WarehouseWarehousingEntryServiceImpl extends BaseServiceImpl<Wareho
* @param isCovered
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void importUser(List<WarehousingEntryDetailExcel> data, Boolean isCovered) {
data.forEach( i ->{
System.out.println("smsmmsmsmsmsmsmmsmsmsmmsmsms"+i);
//分组
Map<String, List<WarehousingEntryDetailExcel>> collect = data.stream().map(x -> {
return x;
}).collect(Collectors.groupingBy(o ->{
// System.out.println("====<<<<<<<<"+o);
WarehouseWarehousingEntryEntity entryEntity = new WarehouseWarehousingEntryEntity();
entryEntity.setReceiptBatch(o.getReceiptBatch());
entryEntity.setReceiptDate(o.getReceiptDate());
entryEntity.setConditions("1");
BasicdataClientEntity customer = basicdataClientClient.getCustomer(o.getCustomerName(), o.getCustomerCode());
if(Func.isNotEmpty(customer)){
if(StringUtils.isNotBlank(o.getStoreName())){
BasicdataClientEntity customer1 = basicdataClientClient.findByName(o.getStoreName());
if(Func.isNotEmpty(customer1)){
entryEntity.setStoreId(customer1.getId());
entryEntity.setStoreName(o.getStoreName());
}else{
throw new ServiceException(o.getCustomerName()+o.getCustomerCode()+"门店信息不存在!!请维护门店数据!!!");
}
}
entryEntity.setClientId(customer.getId());//客户id
entryEntity.setCustomerName(o.getCustomerName());
entryEntity.setCustomerCode(o.getCustomerCode());
}else{
throw new ServiceException(o.getCustomerName()+o.getCustomerCode()+"客户信息不存在!!请维护客户数据!!!");
}
BasicdataWarehouseEntity warehouse = basicdataWarehouseClient.getWarehouse(o.getWarehouse(), o.getWarehouseCode());
if(Func.isNotEmpty(warehouse)){
entryEntity.setWarehouseId(warehouse.getId());//仓库id
entryEntity.setWarehouse(o.getWarehouse());//仓库名称
}else{
throw new ServiceException(o.getCustomerName()+o.getCustomerCode()+"仓库信息不存在!!请维护仓库数据!!!");
}
entryEntity.setTrainNumber(o.getTrainNumber()); //仓库名称
entryEntity.setLicensePlate(o.getLicensePlate()); //仓库名称
entryEntity.setSource("导入");
R<List<DictBiz>> distriType = dictBizClient.getList("distribution_type");
if(ObjectUtils.isNotNull(distriType)){
List<DictBiz> data1 = distriType.getData();
DictBiz dictBiz = data1.stream().filter(da -> {
return o.getServiceType().equals(da.getDictValue());
}).findAny().get();
entryEntity.setServiceType(dictBiz.getDictKey());//仓库名称
}
entryEntity.setPositions(o.getPositions() );
String s = JSONObject.toJSONString(entryEntity);
return s;
} , Collectors.toList()));
collect.forEach((k,v) ->{
// System.out.println(">>>>>>>>>>>+++++"+k+v);
WarehouseWarehousingEntryEntity entryEntity = JSON.parseObject(k, WarehouseWarehousingEntryEntity.class);
// WarehouseWarehousingEntryEntity entryEntity = JSONObject.parseObject(JSONObject.toJSONString(k), WarehouseWarehousingEntryEntity.class);
this.save(entryEntity);
List<WarehouseWarehousingDetailEntity> detailEntityList = new ArrayList<>();
v.forEach( i ->{
WarehouseWarehousingDetailEntity detail = new WarehouseWarehousingDetailEntity();
detail.setConditions("1");
detail.setSku(i.getSku());
detail.setProductCode(i.getProductCode());
detail.setProductName(i.getProductName());
detail.setProductCode(i.getProductCode());
detail.setProductUnit(i.getProductUnit());
detail.setPackagingNumber(i.getPackagingNumber());
detail.setPackagingSpecifications(i.getPackagingSpecifications());
detail.setCreateInventory(i.getCreateInventory());
detail.setWarehousingEntryId(entryEntity.getId());
detail.setActualReceipt(0);
BasicMaterialEntity materialOwn = basicMaterialClient.getMaterialOwn(i.getProductCode(), i.getProductName(), i.getSku());
if(Func.isNotEmpty(materialOwn)){
detail.setMaterialId(materialOwn.getId());//物料ID
}else{
throw new ServiceException(i.getProductName()+i.getProductCode()+i.getSku()+"物料信息不存在!!请维护基础数据!!!");
}
if(detailEntityList.size() > 0){
boolean b = detailEntityList.stream().anyMatch(a -> a.getProductCode().equals(detail.getProductCode()) && a.getProductName().equals(detail.getProductName()) && a.getSku().equals(detail.getSku()));
if(b){
detailEntityList.stream().filter(a -> a.getProductCode().equals(detail.getProductCode()) && a.getProductName().equals(detail.getProductName()) && a.getSku().equals(detail.getSku())).forEach( f->f.setCreateInventory(f.getCreateInventory()+detail.getCreateInventory()));
}else{
detailEntityList.add(detail);
}
}else{
detailEntityList.add(detail);
}
});
warehouseWarehousingDetailService.saveBatch(detailEntityList);
});
}

Loading…
Cancel
Save