rev:成品入库批量归入
This commit is contained in:
@@ -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();
|
||||||
|
|||||||
@@ -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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,6 +75,12 @@ public class MdPbBucketrecord implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private String material_spec;
|
private String material_spec;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物料名称
|
||||||
|
*/
|
||||||
|
private String material_name;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批次
|
* 批次
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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")
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user