add:组盘导入临时新增销售订单
This commit is contained in:
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
/* 分配货位更新:
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user