add:组盘导入临时新增销售订单

This commit is contained in:
zhangzhiqiang
2023-08-08 10:23:52 +08:00
parent 3ace18354f
commit bdd1aa57cc
3 changed files with 93 additions and 19 deletions

View File

@@ -29,6 +29,8 @@ import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleinfo;
import org.nl.wms.masterdata_manage.service.vehicle.dao.mapper.MdPbBucketrecordMapper;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbBucketrecordService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.wms.mps_manage.saleorder.service.IMpsSaleOrderService;
import org.nl.wms.mps_manage.saleorder.service.dao.MpsSaleOrder;
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder;
import org.nl.wms.product_manage.service.workprocedure.dao.PdmBiWorkprocedure;
import org.nl.wms.storage_manage.IOSEnum;
@@ -60,13 +62,15 @@ import java.util.stream.Collectors;
@Service
public class MdPbBucketrecordServiceImpl extends ServiceImpl<MdPbBucketrecordMapper, MdPbBucketrecord> implements IMdPbBucketrecordService {
private static Map<Integer,String> Excel_Item = MapOf.of(0,"storagevehicle_code",1,"sale_code",2,"contract_code",3,"material_code",4,"material_name",5,"material_spec",8,"storage_qty",9,"bucketunique");
private static Map<Integer,String> Excel_Item = MapOf.of(0,"storagevehicle_code",1,"sale_code",2,"contract_code",4,"material_code",5,"material_name",6,"material_spec",9,"storage_qty",10,"bucketunique");
@Autowired
protected IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService; // 载具服务
@Autowired
private IMdMeMaterialbaseService materialbaseService;
@Autowired
private IMpsSaleOrderService saleOrderService;
@Override
public Object queryAll(Map whereJson, PageQuery pageQuery) {
@@ -132,12 +136,12 @@ public class MdPbBucketrecordServiceImpl extends ServiceImpl<MdPbBucketrecordMap
data.add(mdPbBucketrecord);
}
Map<String, String> materialmaps = data.stream().collect(HashMap::new, (k, v) -> k.put(v.getMaterial_code(), v.getMaterial_spec()+","+v.getMaterial_name()), HashMap::putAll);
Set<String> collect = data.stream().map(MdPbBucketrecord::getMaterial_code).collect(Collectors.toSet());
List<MdMeMaterialbase> materials = materialbaseService.list(new QueryWrapper<MdMeMaterialbase>().in("material_code", collect));
Set<String> materialCodes = data.stream().map(MdPbBucketrecord::getMaterial_code).collect(Collectors.toSet());
List<MdMeMaterialbase> materials = materialbaseService.list(new QueryWrapper<MdMeMaterialbase>().in("material_code", materialCodes));
List<MdMeMaterialbase> list = new ArrayList<>();
if (materials.size()!=collect.size()){
if (materials.size()!=materialCodes.size()){
List<String> collect1 = materials.stream().map(MdMeMaterialbase::getMaterial_code).collect(Collectors.toList());
Set<String> notIn = collect.stream().filter(a -> !collect1.contains(a)).collect(Collectors.toSet());
Set<String> notIn = materialCodes.stream().filter(a -> !collect1.contains(a)).collect(Collectors.toSet());
//新增物料信息
BigDecimal net_weight = new BigDecimal(45);
for (String mcode : notIn) {
@@ -146,7 +150,7 @@ public class MdPbBucketrecordServiceImpl extends ServiceImpl<MdPbBucketrecordMap
materialbase.setMaterial_id(IdUtil.getStringId());
materialbase.setIs_used(true);
materialbase.setMaterial_code(mcode);
materialbase.setMaterial_name(split[1]);
materialbase.setMaterial_name("临时_"+split[1]);
materialbase.setMaterial_spec(split[0]);
materialbase.setIs_delete(false);
materialbase.setBase_unit_id("16");
@@ -163,6 +167,20 @@ public class MdPbBucketrecordServiceImpl extends ServiceImpl<MdPbBucketrecordMap
Map<String, MdMeMaterialbase> materialMap = materials.stream().collect(HashMap::new, (k, v) -> k.put(v.getMaterial_code(), v), HashMap::putAll);
String now = DateUtil.now();
String pcsn = DateUtil.today();
List<MpsSaleOrder> sales = saleOrderService.list(new QueryWrapper<MpsSaleOrder>().in("sale_code", data.stream().map(MdPbBucketrecord::getSale_code).collect(Collectors.toSet())));
HashMap<String, Integer> max = new HashMap<>();
for (MpsSaleOrder sale : sales) {
Integer integer = max.get(sale.getSale_code());
if (integer==null){
max.put(sale.getSale_code(),0);
}else {
max.put(sale.getSale_code(),Math.max(integer,sale.getSeq_no()));
}
}
List<MpsSaleOrder> arrayList = new ArrayList<>();
Map<String, Integer> hashMap = new HashMap<>();
for (MdPbBucketrecord datum : data) {
datum.setBucket_record_id(IdUtil.getStringId());
String bucketunique = datum.getBucketunique();
@@ -176,6 +194,7 @@ public class MdPbBucketrecordServiceImpl extends ServiceImpl<MdPbBucketrecordMap
datum.setMaterial_id(materialMap.get(datum.getMaterial_code()).getMaterial_id());
datum.setMaterial_spec(materialMap.get(datum.getMaterial_code()).getMaterial_spec());
datum.setPcsn(pcsn);
datum.setUnit_weight(String.valueOf(materialMap.get(datum.getMaterial_code()).getNet_weight().intValue()));
datum.setStoragevehicle_type("1");
datum.setIvt_level(IVTEnum.IVT_LEVEL.code("一级"));
datum.setIs_active("1");
@@ -184,12 +203,47 @@ public class MdPbBucketrecordServiceImpl extends ServiceImpl<MdPbBucketrecordMap
datum.setQty_unit_id("16");
datum.setQty_unit_name("个/只");
datum.setStatus(MasterEnum.BOX_STATUS.code("生成"));
//手动插入销售订单
MpsSaleOrder mpsSaleOrder = new MpsSaleOrder();
mpsSaleOrder.setSale_id(IdUtil.getStringId());
mpsSaleOrder.setSale_code(datum.getSale_code());
mpsSaleOrder.setSale_qty(new BigDecimal(datum.getStorage_qty()));
mpsSaleOrder.setIs_delete(0);
mpsSaleOrder.setMaterial_id(datum.getMaterial_id());
mpsSaleOrder.setMaterial_code(datum.getMaterial_code());
mpsSaleOrder.setMaterial_spec(datum.getMaterial_spec());
mpsSaleOrder.setProduct_area("A1");
mpsSaleOrder.setContract_code(datum.getContract_code());
mpsSaleOrder.setStatus(IOSEnum.ORDER_STATUS.code("生成"));
mpsSaleOrder.setStatus("10");
Integer integer = hashMap.get(mpsSaleOrder.getSale_code());
if (integer==null){
mpsSaleOrder.setSeq_no(100);
hashMap.put(mpsSaleOrder.getSale_code(),100);
}else {
int nowno = integer + 100;
mpsSaleOrder.setSeq_no(nowno);
hashMap.put(mpsSaleOrder.getSale_code(),nowno);
}
Integer hasno = max.get(mpsSaleOrder.getSale_code())==null?0:max.get(mpsSaleOrder.getSale_code());
mpsSaleOrder.setSeq_no(mpsSaleOrder.getSeq_no()+hasno);
datum.setSeq_no(mpsSaleOrder.getSeq_no());
arrayList.add(mpsSaleOrder);
}
List<MdPbBucketrecord> has = this.list(new QueryWrapper<MdPbBucketrecord>().in("storagevehicle_code", data.stream().map(MdPbBucketrecord::getStoragevehicle_code).collect(Collectors.toSet())));
List<MdPbBucketrecord> has = this.list(new QueryWrapper<MdPbBucketrecord>()
.in("sale_code", data.stream().map(MdPbBucketrecord::getSale_code).collect(Collectors.toSet())));
if (!CollectionUtils.isEmpty(has)){
throw new BadRequestException("托盘订单已存在:"+has.stream().map(MdPbBucketrecord::getStoragevehicle_code).collect(Collectors.joining(",")));
Set<String> stos = data.stream().map(MdPbBucketrecord::getStoragevehicle_code).collect(Collectors.toSet());
String collect = has.stream().filter(a -> stos.contains(a.getStoragevehicle_code())).map(MdPbBucketrecord::getStoragevehicle_code).collect(Collectors.joining(","));
if (StringUtils.isNotEmpty(collect)){
throw new BadRequestException("托盘订单已存在:"+collect);
}
}
this.saveBatch(data);
saleOrderService.saveBatch(arrayList);
//新增销售单:
}catch (Exception ex){
throw new BadRequestException(ex.getMessage());
}

View File

@@ -268,12 +268,7 @@ public class PdaStCpInServiceImpl implements PdaStCpInService {
.set("instor_optname", SecurityUtils.getCurrentNickName())
.set("instor_time", DateUtil.now())
.in("bucket_record_id", Arrays.asList(item.getString("bucket_record_id").split(","))));
//跟新订单
MpsSaleOrder orderDao = iMpsSaleOrderService.getOne(new QueryWrapper<MpsSaleOrder>().eq("sale_code", rows.get(0).getSale_code()));
if (orderDao!=null){
orderDao.setStatus(IOSEnum.ORDER_STATUS.code("提交"));
iMpsSaleOrderService.updateById(orderDao);
}
StIvtIostorinvCp stIvtIostorinvCp = new StIvtIostorinvCp();
入库单主表: {
stIvtIostorinvCp.setIostorinv_id(org.nl.common.utils.IdUtil.getStringId());
@@ -298,7 +293,7 @@ public class PdaStCpInServiceImpl implements PdaStCpInService {
iStIvtIostorinvCpService.save(stIvtIostorinvCp);
int seq_no = 0;
List<StIvtIostorinvdtlCp> invdtl = new ArrayList<>();
List<StIvtIostorinvdisdtlCp> invdisdtl = new ArrayList<>();
// List<StIvtIostorinvdisdtlCp> invdisdtl = new ArrayList<>();
List<StIvtIostorinvdisCp> invdis = new ArrayList<>();
//分配i
for (MdPbBucketrecord row : rows) {
@@ -307,11 +302,20 @@ public class PdaStCpInServiceImpl implements PdaStCpInService {
StIvtIostorinvdtlCp iostorinvdtlCp = new StIvtIostorinvdtlCp();
// StIvtIostorinvdisdtlCp iostorinvdisdtlCp = new StIvtIostorinvdisdtlCp();
StIvtIostorinvdisCp iostorinvdisCp = new StIvtIostorinvdisCp();
MpsSaleOrder orderDao = iMpsSaleOrderService.getOne(new QueryWrapper<MpsSaleOrder>()
.eq("sale_code", row.getSale_code())
.eq("material_code",row.getMaterial_code()).eq("seq_no",row.getSeq_no()));
if (orderDao==null){
throw new BadRequestException("销售订单中不存在订单号"+row.getSale_code()+"物料:"+row.getMaterial_code());
}
orderDao.setStatus(IOSEnum.ORDER_STATUS.code("提交"));
iMpsSaleOrderService.updateById(orderDao);
入库明细: {
//跟新订单
iostorinvdtlCp.setBase_bill_code(row.getSale_code());
iostorinvdtlCp.setBase_bill_table(String.valueOf(row.getSeq_no()));
iostorinvdtlCp.setBase_billdtl_id(orderDao == null ? "" : orderDao.getSale_id());
iostorinvdtlCp.setBase_bill_type(orderDao == null ? "" : orderDao.getSale_type());
iostorinvdtlCp.setBase_billdtl_id(orderDao.getSale_id());
iostorinvdtlCp.setBase_bill_type(orderDao.getSale_type());
iostorinvdtlCp.setMaterial_id(row.getMaterial_id());
iostorinvdtlCp.setPlan_qty(new BigDecimal(row.getStorage_qty()));
iostorinvdtlCp.setQty_unit_id(row.getQty_unit_id());
@@ -322,6 +326,7 @@ public class PdaStCpInServiceImpl implements PdaStCpInService {
iostorinvdtlCp.setSeq_no(seq_no + 1);
iostorinvdtlCp.setPcsn(pcsn);
iostorinvdtlCp.setIs_active(true);
iostorinvdtlCp.setQuality_scode(IVTEnum.QUALITY_SCODE.code("合格品"));
iostorinvdtlCp.setIvt_level(IVTEnum.IVT_LEVEL.code("一级"));
iostorinvdtlCp.setBill_status(IOSEnum.BILL_STATUS.code("分配完"));
iostorinvdtlCp.setReal_qty(iostorinvdtlCp.getPlan_qty());
@@ -404,8 +409,8 @@ public class PdaStCpInServiceImpl implements PdaStCpInService {
stIvtStructattr.setInv_code(stIvtIostorinvCp.getBill_code());
structattrService.updateById(stIvtStructattr);
// 4.更新库存
for (StIvtIostorinvdisCp dtlDao : invdis) {
JSONObject param = ivtDataParam(dtlDao, ChangeIvtUtil.ADDWAREHOUSING_QTY, orderDao==null?"":orderDao.getSale_id());
for (StIvtIostorinvdtlCp cp : invdtl) {
JSONObject param = ivtDataParam(cp, ChangeIvtUtil.ADDWAREHOUSING_QTY, cp.getBase_billdtl_id(),structattr.getStruct_id());
param.put("product_area", stIvtIostorinvCp.getProduct_area());
param.put("stor_id", stIvtIostorinvCp.getStor_id());
param.put("bill_code",stIvtIostorinvCp.getBill_code());
@@ -456,6 +461,20 @@ public class PdaStCpInServiceImpl implements PdaStCpInService {
return ivtParam;
}
public JSONObject ivtDataParam(StIvtIostorinvdtlCp disDao,String change_type,String sale_id,String struct_id) {
JSONObject ivtParam = new JSONObject();
ivtParam.put("struct_id", struct_id);
ivtParam.put("material_id", disDao.getMaterial_id());
ivtParam.put("pcsn", disDao.getPcsn());
ivtParam.put("quality_scode", disDao.getQuality_scode());
ivtParam.put("ivt_level", disDao.getIvt_level());
ivtParam.put("change_qty", disDao.getReal_qty());
ivtParam.put("change_type", change_type);
ivtParam.put("sale_id", sale_id);
return ivtParam;
}
@NotNull
private void updateDivIos(StIvtStructattr attrDao, JSONObject whereJson,StIvtIostorinvCp stIvtIostorinvCp) {
/* 分配货位更新:

View File

@@ -8,5 +8,6 @@ delete from st_ivt_iostorinvdis_cp; -- 出入库分配表 --
delete from st_ivt_iostorinvdisdtl_cp; -- 出入库分配明细表 --
delete from md_pb_bucketrecord; -- 箱记录表 --
delete from st_ivt_structivtflow_cp; -- 成品库存变动记录表 --
delete from md_pb_bucketrecord; -- 组盘记录表--
-- 新增组盘记录表 --
INSERT INTO `hl_one_mes`.`sys_menu`(`menu_id`, `pid`, `sub_count`, `type`, `title`, `component_name`, `component`, `menu_sort`, `icon`, `path`, `iframe`, `cache`, `hidden`, `permission`, `create_name`, `update_name`, `create_time`, `update_time`, `is_pc`, `system_type`, `create_id`, `category`, `update_id`) VALUES ('1973892464420851712', '1654661137377136640', 0, 2, '组盘记录', NULL, 'wms/storage_manage/product/bucketRecord/index', 999, 'codeConsole', 'productBucketRecord', 0, b'0', b'0', NULL, NULL, NULL, NULL, NULL, 1, '1', 1, NULL, NULL);