rev:成品入库批量归入

This commit is contained in:
zhangzhiqiang
2023-08-07 09:01:32 +08:00
parent a1b892ff1b
commit 3ace18354f
12 changed files with 156 additions and 87 deletions

View File

@@ -37,6 +37,9 @@ public class RedissonUtils {
} else { } else {
throw new BadRequestException("当前业务 key:"+key+"正在执行请稍后再试"); throw new BadRequestException("当前业务 key:"+key+"正在执行请稍后再试");
} }
}catch (Exception ex){
ex.printStackTrace();
throw ex;
}finally { }finally {
if (isLock){ if (isLock){
lock.unlock(); lock.unlock();

View File

@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import lombok.SneakyThrows;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.common.enums.AcsTaskEnum; import org.nl.common.enums.AcsTaskEnum;
@@ -120,6 +121,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{
* @param string 条件 * @param string 条件
* @returnzss * @returnzss
*/ */
@SneakyThrows
@Override @Override
@Transactional @Transactional
public Map<String, Object> receiveTaskStatusAcs(String string) { public Map<String, Object> receiveTaskStatusAcs(String string) {
@@ -148,12 +150,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{
.extParam(row.get("ext_param")!=null?(Map<String, String>)row.get("ext_param"):null) .extParam(row.get("ext_param")!=null?(Map<String, String>)row.get("ext_param"):null)
.build(); .build();
BussEventMulticaster.Publish(event); BussEventMulticaster.Publish(event);
} catch (Exception e) { } catch (Exception ex) {
log.error("任务状态更新失败:{}", e.getMessage()); throw ex;
JSONObject json = new JSONObject();
json.put("task_id", task_id);
json.put("message", e.getMessage());
errArr.add(json);
} }
} }
} }

View File

@@ -24,7 +24,10 @@ import lombok.EqualsAndHashCode;
public class MdMeMaterialbase implements Serializable { public class MdMeMaterialbase implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/**
* 车间
*/
private String product_area;
/** /**
* 物料标识 * 物料标识
*/ */
@@ -181,7 +184,6 @@ public class MdMeMaterialbase implements Serializable {
*/ */
private String product_series; private String product_series;
private String product_area;
} }

View File

@@ -39,5 +39,5 @@ public interface IMdPbBucketrecordService extends IService<MdPbBucketrecord> {
*/ */
void excelImport(MultipartFile file, HttpServletRequest request, HttpServletResponse response); void excelImport(MultipartFile file, HttpServletRequest request, HttpServletResponse response);
List<Map> getMstList(); List<Map> getMstList(String storagevehicle_code);
} }

View File

@@ -75,6 +75,12 @@ public class MdPbBucketrecord implements Serializable {
*/ */
private String material_spec; private String material_spec;
/**
* 物料名称
*/
private String material_name;
/** /**
* 批次 * 批次
*/ */

View File

@@ -18,5 +18,5 @@ public interface MdPbBucketrecordMapper extends BaseMapper<MdPbBucketrecord> {
List<Map> queryAll(Map<String,Object> map); List<Map> queryAll(Map<String,Object> map);
List<Map> getMstList(); List<Map> getMstList(String storagevehicle_code);
} }

View File

@@ -25,7 +25,7 @@
and re.storagevehicle_code = #{storagevehicle_code} and re.storagevehicle_code = #{storagevehicle_code}
</if> </if>
<if test="bucketunique != null and bucketunique != ''"> <if test="bucketunique != null and bucketunique != ''">
and ( re.bucketunique like '{bucketunique}%$' ) and ( re.bucketunique like '${bucketunique}%' )
</if> </if>
</select> </select>
@@ -33,6 +33,9 @@
select GROUP_CONCAT(bucket_record_id) as bucket_record_id,(@rowcount :=@rowcount+1) as sqe_on, create_time,storagevehicle_code,sale_code,SUM(storage_qty) as storage_qty,count(storagevehicle_code) as count select GROUP_CONCAT(bucket_record_id) as bucket_record_id,(@rowcount :=@rowcount+1) as sqe_on, create_time,storagevehicle_code,sale_code,SUM(storage_qty) as storage_qty,count(storagevehicle_code) as count
from md_pb_bucketrecord,(select @rowcount := 0) as r from md_pb_bucketrecord,(select @rowcount := 0) as r
where status = '1' where status = '1'
<if test="storagevehicle_code != null and storagevehicle_code != ''">
and storagevehicle_code like '${storagevehicle_code}%'
</if>
GROUP BY storagevehicle_code,sale_code,create_time GROUP BY storagevehicle_code,sale_code,create_time
</select> </select>
</mapper> </mapper>

View File

@@ -6,6 +6,7 @@ import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil; import cn.hutool.poi.excel.ExcelUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.Page; import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
@@ -59,7 +60,7 @@ import java.util.stream.Collectors;
@Service @Service
public class MdPbBucketrecordServiceImpl extends ServiceImpl<MdPbBucketrecordMapper, MdPbBucketrecord> implements IMdPbBucketrecordService { 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",8,"storage_qty",9,"bucketunique"); 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");
@Autowired @Autowired
protected IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService; // 载具服务 protected IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService; // 载具服务
@@ -130,23 +131,45 @@ public class MdPbBucketrecordServiceImpl extends ServiceImpl<MdPbBucketrecordMap
} }
data.add(mdPbBucketrecord); 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()); Set<String> collect = data.stream().map(MdPbBucketrecord::getMaterial_code).collect(Collectors.toSet());
List<MdMeMaterialbase> materials = materialbaseService.list(new QueryWrapper<MdMeMaterialbase>().in("material_code", collect)); List<MdMeMaterialbase> materials = materialbaseService.list(new QueryWrapper<MdMeMaterialbase>().in("material_code", collect));
List<MdMeMaterialbase> list = new ArrayList<>();
if (materials.size()!=collect.size()){ if (materials.size()!=collect.size()){
List<String> collect1 = materials.stream().map(MdMeMaterialbase::getMaterial_code).collect(Collectors.toList()); List<String> collect1 = materials.stream().map(MdMeMaterialbase::getMaterial_code).collect(Collectors.toList());
String notIn = collect.stream().filter(a -> !collect1.contains(a)).collect(Collectors.joining(",")); Set<String> notIn = collect.stream().filter(a -> !collect1.contains(a)).collect(Collectors.toSet());
throw new BadRequestException("当前物料编号不存在:"+notIn); //新增物料信息
BigDecimal net_weight = new BigDecimal(45);
for (String mcode : notIn) {
String[] split = materialmaps.get(mcode).split(",");
MdMeMaterialbase materialbase = new MdMeMaterialbase();
materialbase.setMaterial_id(IdUtil.getStringId());
materialbase.setIs_used(true);
materialbase.setMaterial_code(mcode);
materialbase.setMaterial_name(split[1]);
materialbase.setMaterial_spec(split[0]);
materialbase.setIs_delete(false);
materialbase.setBase_unit_id("16");
materialbase.setNet_weight(net_weight);
materialbase.setCreate_id("9999");
materialbase.setCreate_name("临时");
list.add(materialbase);
}
} }
if (!CollectionUtils.isEmpty(list)){
materialbaseService.saveBatch(list);
}
materials.addAll(list);
Map<String, MdMeMaterialbase> materialMap = materials.stream().collect(HashMap::new, (k, v) -> k.put(v.getMaterial_code(), v), HashMap::putAll); Map<String, MdMeMaterialbase> materialMap = materials.stream().collect(HashMap::new, (k, v) -> k.put(v.getMaterial_code(), v), HashMap::putAll);
String now = DateUtil.now(); String now = DateUtil.now();
String pcsn = DateUtil.today(); String pcsn = DateUtil.today();
for (MdPbBucketrecord datum : data) { for (MdPbBucketrecord datum : data) {
datum.setBucket_record_id(IdUtil.getStringId()); datum.setBucket_record_id(IdUtil.getStringId());
String bucketunique = datum.getBucketunique(); String bucketunique = datum.getBucketunique();
if (StringUtils.isEmpty(bucketunique)){ if (StringUtils.isEmpty(bucketunique)){
datum.setBucketunique(CodeUtil.getNewCode("PRODUCT_BUCKET_CODE")); datum.setBucketunique(CodeUtil.getNewCode("PRODUCT_BUCKET_CODE"));
} }
datum.setStoragevehicle_code(datum.getStoragevehicle_code()+"_"+datum.getSale_code());
datum.setCreate_id(SecurityUtils.getCurrentUserId()); datum.setCreate_id(SecurityUtils.getCurrentUserId());
datum.setCreate_name(SecurityUtils.getCurrentNickName()); datum.setCreate_name(SecurityUtils.getCurrentNickName());
datum.setCreate_time(now); datum.setCreate_time(now);
@@ -162,6 +185,10 @@ public class MdPbBucketrecordServiceImpl extends ServiceImpl<MdPbBucketrecordMap
datum.setQty_unit_name("个/只"); datum.setQty_unit_name("个/只");
datum.setStatus(MasterEnum.BOX_STATUS.code("生成")); datum.setStatus(MasterEnum.BOX_STATUS.code("生成"));
} }
List<MdPbBucketrecord> has = this.list(new QueryWrapper<MdPbBucketrecord>().in("storagevehicle_code", data.stream().map(MdPbBucketrecord::getStoragevehicle_code).collect(Collectors.toSet())));
if (!CollectionUtils.isEmpty(has)){
throw new BadRequestException("托盘订单已存在:"+has.stream().map(MdPbBucketrecord::getStoragevehicle_code).collect(Collectors.joining(",")));
}
this.saveBatch(data); this.saveBatch(data);
}catch (Exception ex){ }catch (Exception ex){
throw new BadRequestException(ex.getMessage()); throw new BadRequestException(ex.getMessage());
@@ -169,7 +196,7 @@ public class MdPbBucketrecordServiceImpl extends ServiceImpl<MdPbBucketrecordMap
} }
@Override @Override
public List<Map> getMstList() { public List<Map> getMstList(String storagevehicle_code) {
return this.baseMapper.getMstList(); return this.baseMapper.getMstList(storagevehicle_code);
} }
} }

View File

@@ -97,8 +97,8 @@ public class PdaProductIosController {
public ResponseEntity<Object> bucket(@RequestBody JSONObject param) { public ResponseEntity<Object> bucket(@RequestBody JSONObject param) {
String storagevehicleCode = param.getString("storagevehicle_code"); String storagevehicleCode = param.getString("storagevehicle_code");
List mstList= new ArrayList<>(); List mstList= new ArrayList<>();
if (StringUtils.isEmpty(storagevehicleCode)){ if (param.getString("sale_code")!=null){
mstList = bucketrecordService.getMstList(); mstList = bucketrecordService.getMstList(storagevehicleCode);
}else { }else {
List<Map<String, Object>> maps = bucketrecordService.listMaps(new QueryWrapper<MdPbBucketrecord>() List<Map<String, Object>> maps = bucketrecordService.listMaps(new QueryWrapper<MdPbBucketrecord>()
.eq("storagevehicle_code", storagevehicleCode).eq("status", "1")); .eq("storagevehicle_code", storagevehicleCode).eq("status", "1"));
@@ -126,8 +126,8 @@ public class PdaProductIosController {
@Log("批量入库") @Log("批量入库")
//("新增入库单") //("新增入库单")
public ResponseEntity<Object> batchin(@RequestBody JSONArray whereJson) { public ResponseEntity<Object> batchin(@RequestBody JSONArray whereJson) {
pdaStCpInService.confirmIn(null); pdaStCpInService.batchConfirmIn(whereJson);
return new ResponseEntity<>(MapOf.of("message","创建成功","status", HttpStatus.OK.value()),HttpStatus.OK); return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK);
} }
@PostMapping("/iosTasks") @PostMapping("/iosTasks")

View File

@@ -1,6 +1,7 @@
package org.nl.wms.storage_manage.pda.service.impl; package org.nl.wms.storage_manage.pda.service.impl;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
@@ -23,6 +24,8 @@ import org.nl.common.utils.MapOf;
import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.system.util.CodeUtil; import org.nl.modules.system.util.CodeUtil;
import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.wms.ext_manage.acs.service.WmsToAcsService;
import org.nl.wms.masterdata_manage.MasterEnum; import org.nl.wms.masterdata_manage.MasterEnum;
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase; import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbBucketrecordService; import org.nl.wms.masterdata_manage.service.vehicle.IMdPbBucketrecordService;
@@ -33,8 +36,11 @@ import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtBsrealstora
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr; import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr;
import org.nl.wms.mps_manage.saleorder.service.IMpsSaleOrderService; import org.nl.wms.mps_manage.saleorder.service.IMpsSaleOrderService;
import org.nl.wms.mps_manage.saleorder.service.dao.MpsSaleOrder; import org.nl.wms.mps_manage.saleorder.service.dao.MpsSaleOrder;
import org.nl.wms.scheduler_manage.service.extendtask.manage.TaskStatusEnum;
import org.nl.wms.scheduler_manage.service.point.ISchBasePointService; import org.nl.wms.scheduler_manage.service.point.ISchBasePointService;
import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint; import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint;
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
import org.nl.wms.storage_manage.IOSEnum; import org.nl.wms.storage_manage.IOSEnum;
import org.nl.wms.storage_manage.IVTEnum; import org.nl.wms.storage_manage.IVTEnum;
import org.nl.wms.storage_manage.pda.PDAEnum; import org.nl.wms.storage_manage.pda.PDAEnum;
@@ -55,6 +61,7 @@ import org.nl.wms.system_manage.service.dict.dao.Dict;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
@@ -85,6 +92,11 @@ public class PdaStCpInServiceImpl implements PdaStCpInService {
private ISchBasePointService iSchBasePointService; // 点位服务 private ISchBasePointService iSchBasePointService; // 点位服务
@Autowired @Autowired
private IStIvtStructivtCpService iStIvtStructivtCpService; private IStIvtStructivtCpService iStIvtStructivtCpService;
@Autowired
private WmsToAcsService wmsToAcsService;
@Autowired
private ISchBaseTaskService taskService;
@Autowired @Autowired
private IMpsSaleOrderService iMpsSaleOrderService; // 订单服务 private IMpsSaleOrderService iMpsSaleOrderService; // 订单服务
@@ -237,11 +249,18 @@ public class PdaStCpInServiceImpl implements PdaStCpInService {
throw new BadRequestException("当前成品库可用货位不足:"+stuctList.stream().map(StIvtStructattr::getStruct_code).collect(Collectors.joining(","))); throw new BadRequestException("当前成品库可用货位不足:"+stuctList.stream().map(StIvtStructattr::getStruct_code).collect(Collectors.joining(",")));
} }
String pcsn = DateUtil.today(); String pcsn = DateUtil.today();
List<String> tasks = new ArrayList<>();
//每个托盘的物料 //每个托盘的物料
for (int i = 0; i < arr.size(); i++) { for (int i = 0; i < arr.size(); i++) {
JSONObject item = (JSONObject) arr.get(i); JSONObject item = JSONObject.parseObject(JSON.toJSONString(arr.get(i)));
StIvtStructattr structattr = stuctList.get(i); StIvtStructattr structattr = stuctList.get(i);
//point_code
SchBasePoint one = iSchBasePointService.getOne(new QueryWrapper<SchBasePoint>()
.eq("point_code", item.getString("point_code")));
// 2.组盘信息 // 2.组盘信息
if (one==null){
throw new BadRequestException("分配的入库点不能为空");
}
List<MdPbBucketrecord> rows = bucketrecordService.listByIds(Arrays.asList(item.getString("bucket_record_id").split(","))); List<MdPbBucketrecord> rows = bucketrecordService.listByIds(Arrays.asList(item.getString("bucket_record_id").split(",")));
bucketrecordService.update(new UpdateWrapper<MdPbBucketrecord>() bucketrecordService.update(new UpdateWrapper<MdPbBucketrecord>()
.set("status", MasterEnum.BOX_STATUS.code("组盘")) .set("status", MasterEnum.BOX_STATUS.code("组盘"))
@@ -262,7 +281,7 @@ public class PdaStCpInServiceImpl implements PdaStCpInService {
stIvtIostorinvCp.setIo_type(IOSEnum.IO_TYPE.code("入库")); stIvtIostorinvCp.setIo_type(IOSEnum.IO_TYPE.code("入库"));
stIvtIostorinvCp.setBuss_type(item.getString("bill_code")); stIvtIostorinvCp.setBuss_type(item.getString("bill_code"));
stIvtIostorinvCp.setBill_type(stIvtIostorinvCp.getBuss_type()); stIvtIostorinvCp.setBill_type(stIvtIostorinvCp.getBuss_type());
stIvtIostorinvCp.setBill_status(IOSEnum.BILL_STATUS.code("生成")); stIvtIostorinvCp.setBill_status(IOSEnum.BILL_STATUS.code("分配完"));
stIvtIostorinvCp.setCreate_id(SecurityUtils.getCurrentUserId()); stIvtIostorinvCp.setCreate_id(SecurityUtils.getCurrentUserId());
stIvtIostorinvCp.setCreate_name(SecurityUtils.getCurrentNickName()); stIvtIostorinvCp.setCreate_name(SecurityUtils.getCurrentNickName());
stIvtIostorinvCp.setCreate_time(new Date()); stIvtIostorinvCp.setCreate_time(new Date());
@@ -286,7 +305,7 @@ public class PdaStCpInServiceImpl implements PdaStCpInService {
String iostorinvdis_id = IdUtil.getStringId(); String iostorinvdis_id = IdUtil.getStringId();
StIvtIostorinvdtlCp iostorinvdtlCp = new StIvtIostorinvdtlCp(); StIvtIostorinvdtlCp iostorinvdtlCp = new StIvtIostorinvdtlCp();
StIvtIostorinvdisdtlCp iostorinvdisdtlCp = new StIvtIostorinvdisdtlCp(); // StIvtIostorinvdisdtlCp iostorinvdisdtlCp = new StIvtIostorinvdisdtlCp();
StIvtIostorinvdisCp iostorinvdisCp = new StIvtIostorinvdisCp(); StIvtIostorinvdisCp iostorinvdisCp = new StIvtIostorinvdisCp();
入库明细: { 入库明细: {
iostorinvdtlCp.setBase_bill_code(row.getSale_code()); iostorinvdtlCp.setBase_bill_code(row.getSale_code());
@@ -304,61 +323,77 @@ public class PdaStCpInServiceImpl implements PdaStCpInService {
iostorinvdtlCp.setPcsn(pcsn); iostorinvdtlCp.setPcsn(pcsn);
iostorinvdtlCp.setIs_active(true); iostorinvdtlCp.setIs_active(true);
iostorinvdtlCp.setIvt_level(IVTEnum.IVT_LEVEL.code("一级")); iostorinvdtlCp.setIvt_level(IVTEnum.IVT_LEVEL.code("一级"));
iostorinvdtlCp.setBill_status(IOSEnum.BILL_STATUS.code("生成")); iostorinvdtlCp.setBill_status(IOSEnum.BILL_STATUS.code("分配完"));
iostorinvdtlCp.setReal_qty(iostorinvdtlCp.getPlan_qty()); iostorinvdtlCp.setReal_qty(iostorinvdtlCp.getPlan_qty());
iostorinvdtlCp.setUnassign_qty(iostorinvdtlCp.getPlan_qty()); iostorinvdtlCp.setUnassign_qty(iostorinvdtlCp.getPlan_qty());
invdtl.add(iostorinvdtlCp); invdtl.add(iostorinvdtlCp);
} }
分配明细: { // 分配明细: {
iostorinvdisdtlCp.setIostorinv_id(iostorinvdtlCp.getIostorinv_id()); // iostorinvdisdtlCp.setIostorinv_id(iostorinvdtlCp.getIostorinv_id());
iostorinvdisdtlCp.setIostorinvdtl_id(iostorinvdtlCp.getIostorinvdtl_id()); // iostorinvdisdtlCp.setIostorinvdtl_id(iostorinvdtlCp.getIostorinvdtl_id());
iostorinvdisdtlCp.setIostorinvdis_id(iostorinvdis_id); // iostorinvdisdtlCp.setIostorinvdis_id(iostorinvdis_id);
iostorinvdisdtlCp.setIostorinvdisdtl_id(IdUtil.getStringId()); // iostorinvdisdtlCp.setIostorinvdisdtl_id(IdUtil.getStringId());
iostorinvdisdtlCp.setSeq_no(new BigDecimal(1)); // iostorinvdisdtlCp.setSeq_no(new BigDecimal(1));
iostorinvdisdtlCp.setMaterial_id(iostorinvdtlCp.getMaterial_id()); // iostorinvdisdtlCp.setMaterial_id(iostorinvdtlCp.getMaterial_id());
iostorinvdisdtlCp.setPcsn(pcsn); // iostorinvdisdtlCp.setPcsn(pcsn);
iostorinvdisdtlCp.setQuality_scode(IVTEnum.QUALITY_SCODE.code("合格品")); // iostorinvdisdtlCp.setQuality_scode(IVTEnum.QUALITY_SCODE.code("合格品"));
iostorinvdisdtlCp.setIvt_level(IVTEnum.IVT_LEVEL.code("一级")); // iostorinvdisdtlCp.setIvt_level(IVTEnum.IVT_LEVEL.code("一级"));
iostorinvdisdtlCp.setIs_active(true); // iostorinvdisdtlCp.setIs_active(true);
iostorinvdisdtlCp.setStoragevehicle_code(row.getStoragevehicle_code()); // iostorinvdisdtlCp.setStoragevehicle_code(row.getStoragevehicle_code());
iostorinvdisdtlCp.setBucketunique(row.getBucketunique()); // iostorinvdisdtlCp.setBucketunique(row.getBucketunique());
iostorinvdisdtlCp.setQty_unit_id(row.getQty_unit_id()); // iostorinvdisdtlCp.setQty_unit_id(row.getQty_unit_id());
iostorinvdisdtlCp.setQty_unit_name(row.getQty_unit_name()); // iostorinvdisdtlCp.setQty_unit_name(row.getQty_unit_name());
iostorinvdisdtlCp.setReal_qty(new BigDecimal(row.getStorage_qty())); // iostorinvdisdtlCp.setReal_qty(new BigDecimal(row.getStorage_qty()));
invdisdtl.add(iostorinvdisdtlCp); //
} // iostorinvdisdtlCp.setStruct_id(structattr.getStruct_id());
// iostorinvdisdtlCp.setStruct_code(structattr.getStruct_code());
// iostorinvdisdtlCp.setStruct_name(structattr.getStruct_name());
// iostorinvdisdtlCp.setSect_id(structattr.getSect_id());
// iostorinvdisdtlCp.setSect_code(structattr.getSect_code());
// iostorinvdisdtlCp.setSect_name(structattr.getSect_name());
// invdisdtl.add(iostorinvdisdtlCp);
// }
分配:{ 分配:{
iostorinvdisCp.setIostorinvdis_id(iostorinvdis_id); iostorinvdisCp.setIostorinvdis_id(iostorinvdis_id);
iostorinvdisCp.setIostorinv_id(stIvtIostorinvCp.getIostorinv_id()); iostorinvdisCp.setIostorinv_id(stIvtIostorinvCp.getIostorinv_id());
iostorinvdisCp.setIostorinvdtl_id(invdisdtl.get(0).getIostorinvdtl_id()); iostorinvdisCp.setIostorinvdtl_id(iostorinvdtlCp.getIostorinvdtl_id());
iostorinvdisCp.setSeq_no(1); iostorinvdisCp.setSeq_no(1);
iostorinvdisCp.setMaterial_id(invdisdtl.get(0).getMaterial_id()); iostorinvdisCp.setMaterial_id(row.getMaterial_id());
iostorinvdisCp.setPcsn(pcsn); iostorinvdisCp.setPcsn(pcsn);
iostorinvdisCp.setQuality_scode(invdisdtl.get(0).getQuality_scode()); iostorinvdisCp.setQuality_scode(row.getQuality_scode());
iostorinvdisCp.setIvt_level(invdisdtl.get(0).getIvt_level()); iostorinvdisCp.setIvt_level(row.getIvt_level());
iostorinvdisCp.setIs_active(true); iostorinvdisCp.setIs_active(true);
iostorinvdisCp.setIs_issued(false); iostorinvdisCp.setIs_issued(false);
iostorinvdisCp.setWork_status(IOSEnum.WORK_STATUS.code("未生成"));
iostorinvdisCp.setStoragevehicle_id(invdisdtl.get(0).getStoragevehicle_id()); iostorinvdisCp.setPoint_id(one.getPoint_id());
iostorinvdisCp.setStoragevehicle_code(invdisdtl.get(0).getStoragevehicle_code()); iostorinvdisCp.setPoint_code(one.getPoint_code());//入库点
iostorinvdisCp.setStoragevehicle_type(invdisdtl.get(0).getStoragevehicle_type()); iostorinvdisCp.setPoint_name(one.getPoint_name());
iostorinvdisCp.setQty_unit_id(invdisdtl.get(0).getQty_unit_id()); iostorinvdisCp.setStruct_id(structattr.getStruct_id());
iostorinvdisCp.setQty_unit_name(invdisdtl.get(0).getQty_unit_name()); iostorinvdisCp.setStruct_code(structattr.getStruct_code());
iostorinvdisCp.setStruct_name(structattr.getStruct_name());
iostorinvdisCp.setSect_id(structattr.getSect_id());
iostorinvdisCp.setSect_code(structattr.getSect_code());
iostorinvdisCp.setSect_name(structattr.getSect_name());
iostorinvdisCp.setWork_status(IOSEnum.WORK_STATUS.code("生成"));
iostorinvdisCp.setStoragevehicle_id("");
iostorinvdisCp.setStoragevehicle_code(row.getStoragevehicle_code());
iostorinvdisCp.setStoragevehicle_type("");
iostorinvdisCp.setQty_unit_id(row.getQty_unit_id());
iostorinvdisCp.setQty_unit_name(row.getQty_unit_name());
iostorinvdisCp.setPlan_qty(new BigDecimal(row.getStorage_qty())); iostorinvdisCp.setPlan_qty(new BigDecimal(row.getStorage_qty()));
iostorinvdisCp.setReal_qty(iostorinvdisCp.getPlan_qty()); iostorinvdisCp.setReal_qty(iostorinvdisCp.getPlan_qty());
iostorinvdisCp.setWork_status(IOSEnum.WORK_STATUS.code("生成"));
iostorinvdisCp.setPoint_code(structattr.getStruct_code());
//设置入库点 //设置入库点
invdis.add(iostorinvdisCp); invdis.add(iostorinvdisCp);
} }
} }
iostorinvdtlCpService.batchInsert(invdtl); iostorinvdtlCpService.saveBatch(invdtl);
iStIvtIostorinvdisdtlCpService.batchInsert(invdisdtl); // iStIvtIostorinvdisdtlCpService.saveBatch(invdisdtl);
iostorinvdisCpService.batchInsert(invdis);
// 插入分配 // 插入分配
StIvtStructattr stIvtStructattr = structattr; StIvtStructattr stIvtStructattr = structattr;
// 2.更新分配明细、分配、明细、主表 // 2.更新分配明细、分配、明细、主表
updateDivIos(stIvtStructattr,new JSONObject(MapOf.of("iostorinv_id",stIvtIostorinvCp.getIostorinv_id(),"storagevehicle_code",item.getString("storagevehicle_code"),rows.get(i).getStoragevehicle_code())),stIvtIostorinvCp); updateDivIos(stIvtStructattr,new JSONObject(MapOf.of("iostorinv_id",stIvtIostorinvCp.getIostorinv_id(),"storagevehicle_code",item.getString("storagevehicle_code"),rows.get(0).getStoragevehicle_code())),stIvtIostorinvCp);
// 3.更新仓位状态 - 锁定 // 3.更新仓位状态 - 锁定
stIvtStructattr.setLock_type(IOSEnum.LOCK_TYPE.code("入库锁")); stIvtStructattr.setLock_type(IOSEnum.LOCK_TYPE.code("入库锁"));
stIvtStructattr.setUpdate_id(SecurityUtils.getCurrentUserId()); stIvtStructattr.setUpdate_id(SecurityUtils.getCurrentUserId());
@@ -369,49 +404,42 @@ public class PdaStCpInServiceImpl implements PdaStCpInService {
stIvtStructattr.setInv_code(stIvtIostorinvCp.getBill_code()); stIvtStructattr.setInv_code(stIvtIostorinvCp.getBill_code());
structattrService.updateById(stIvtStructattr); structattrService.updateById(stIvtStructattr);
// 4.更新库存 // 4.更新库存
Map<String, List<StIvtIostorinvdisCp>> collect = iostorinvdisCpService.list( for (StIvtIostorinvdisCp dtlDao : invdis) {
new QueryWrapper<StIvtIostorinvdisCp>().lambda() JSONObject param = ivtDataParam(dtlDao, ChangeIvtUtil.ADDWAREHOUSING_QTY, orderDao==null?"":orderDao.getSale_id());
.eq(StIvtIostorinvdisCp::getIostorinv_id, stIvtIostorinvCp.getIostorinv_id())
.eq(StIvtIostorinvdisCp::getStoragevehicle_code, stIvtIostorinvCp)
)
.stream()
.collect(Collectors.groupingBy(StIvtIostorinvdisCp::getIostorinvdtl_id));
for (List<StIvtIostorinvdisCp> list : collect.values()) {
BigDecimal planqty = list
.stream()
.map(StIvtIostorinvdisCp::getReal_qty)
.reduce(BigDecimal.ZERO, BigDecimal::add);
StIvtIostorinvdisCp disDao_1 = list.get(0);
disDao_1.setPlan_qty(planqty);
StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getById(disDao_1.getIostorinvdtl_id());
JSONObject param = ivtDataParam(disDao_1, ChangeIvtUtil.ADDWAREHOUSING_QTY, dtlDao.getBase_billdtl_id());
param.put("product_area", stIvtIostorinvCp.getProduct_area()); param.put("product_area", stIvtIostorinvCp.getProduct_area());
param.put("stor_id", stIvtIostorinvCp.getStor_id()); param.put("stor_id", stIvtIostorinvCp.getStor_id());
param.put("bill_code",stIvtIostorinvCp.getBill_code()); param.put("bill_code",stIvtIostorinvCp.getBill_code());
param.put("inv_id",stIvtIostorinvCp.getIostorinv_id()); param.put("inv_id",stIvtIostorinvCp.getIostorinv_id());
param.put("struct_id",structattr.getStruct_id());
param.put("bill_type_scode",stIvtIostorinvCp.getBill_type()); param.put("bill_type_scode",stIvtIostorinvCp.getBill_type());
iStIvtStructivtCpService.UpdateIvt(param); iStIvtStructivtCpService.UpdateIvt(param);
// iStIvtIostorinvCpService.setPoint(new JSONObject(MapOf.of("point_code",structattr.getStruct_code(),"iostorinvdis_id",iostorinvdisCp.getIostorinvdis_id())));
} }
final String[] task_id = new String[1];
PointEvent event = PointEvent.builder() PointEvent event = PointEvent.builder()
.type(AcsTaskEnum.TASK_STRUCT_CP_IN) .type(AcsTaskEnum.TASK_STRUCT_CP_IN)
.acs_task_type("8") .acs_task_type("8")
.task_group_id(IdUtil.getStringId()) .task_group_id(IdUtil.getStringId())
.point_code3(structattr.getStruct_code()) .point_code3(structattr.getStruct_code())
.point_code1(structattr.getStruct_code()) .point_code1(item.getString("point_code"))
.vehicle_code(item.getString("point_code")) .vehicle_code(item.getString("storagevehicle_code"))
.product_area("A1") // 暂时写死 .product_area("A1") // 暂时写死
// .callback((Consumer<String>) disDao::setTask_id) .callback((Consumer<String>) o -> task_id[0] =o)
.build(); .build();
BussEventMulticaster.Publish(event); BussEventMulticaster.Publish(event);
// 2.调用PC成品入库服务设置起点 for (StIvtIostorinvdisCp invdi : invdis) {
// JSONObject paramTask = createTaskData(item); invdi.setTask_id(task_id[0]);
// 2.调用PC成品入库服务下发任务
// iStIvtIostorinvCpService.sendTask(paramTask);
} }
return null; iostorinvdisCpService.saveBatch(invdis);
tasks.add(task_id[0]);
}
List<SchBaseTask> baseTasks = taskService.listByIds(tasks);
Map<String, Object> result = wmsToAcsService.issueTaskToAcs3(JSON.parseArray(JSON.toJSONString(baseTasks)));
if (!ObjectUtil.equal(MapUtil.getStr(result, "status"),"200")) {
throw new BadRequestException("下发失败:"+MapUtil.getStr(result, "message"));
}
taskService.update(new UpdateWrapper<SchBaseTask>()
.set("task_status",TaskStatusEnum.ISSUE.getCode()).in("task_id",tasks));
return null;
} }
public JSONObject ivtDataParam(StIvtIostorinvdisCp disDao,String change_type,String sale_id) { public JSONObject ivtDataParam(StIvtIostorinvdisCp disDao,String change_type,String sale_id) {

View File

@@ -8,3 +8,5 @@ delete from st_ivt_iostorinvdis_cp; -- 出入库分配表 --
delete from st_ivt_iostorinvdisdtl_cp; -- 出入库分配明细表 -- delete from st_ivt_iostorinvdisdtl_cp; -- 出入库分配明细表 --
delete from md_pb_bucketrecord; -- 箱记录表 -- delete from md_pb_bucketrecord; -- 箱记录表 --
delete from st_ivt_structivtflow_cp; -- 成品库存变动记录表 -- delete from st_ivt_structivtflow_cp; -- 成品库存变动记录表 --
-- 新增组盘记录表 --
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);

View File

@@ -146,7 +146,7 @@
<el-table-column show-overflow-tooltip prop="bucketunique" label="箱号" align="center" /> <el-table-column show-overflow-tooltip prop="bucketunique" label="箱号" align="center" />
<el-table-column prop="plan_qty" :formatter="crud.formatNum3" label="数量 align="center" /> <el-table-column prop="plan_qty" :formatter="crud.formatNum3" label="数量 align="center" />
<el-table-column prop="point_code1" label="起始位置" align="center" /> <el-table-column prop="point_code1" label="起始位置" align="center" />
<el-table-column prop="point_code2" label="目的位置" align="center" /> <el-table-column prop="struct_code" label="目的位置" align="center" />
<el-table-column prop="task_code" label="任务号" align="center" /> <el-table-column prop="task_code" label="任务号" align="center" />
<el-table-column prop="task_status" label="任务状态" align="center" :formatter="formatStatus"/> <el-table-column prop="task_status" label="任务状态" align="center" :formatter="formatStatus"/>
</el-table> </el-table>