opt:优化CTU出入库功能;

This commit is contained in:
2025-11-14 13:38:37 +08:00
parent 3d038430f3
commit a65125c8a1
32 changed files with 352 additions and 124 deletions

View File

@@ -49,6 +49,10 @@
material.material_code LIKE #{param.material_code}
</if>
<if test="param.material_name != null and param.material_name != ''">
AND
material.material_name LIKE CONCAT('%', #{param.material_name}, '%')
</if>
<if test="param.pcsn != null and param.pcsn != ''">
AND
ext.pcsn = #{param.pcsn}
@@ -271,6 +275,6 @@
ext.pcsn LIKE #{params.pcsn}
</if>
</where>
ORDER BY ext.create_time
ORDER BY ext.create_time LIMIT 10
</select>
</mapper>

View File

@@ -21,6 +21,7 @@
LEFT JOIN md_me_materialbase mater ON mater.material_id = gro.material_id
<where>
gro.frozen_qty = 0
AND gro.qty > 0
<if test="search != null and search != ''">
and (mater.material_code LIKE '%${search}%'
or mater.material_name LIKE '%${search}%')
@@ -48,7 +49,7 @@
</if>
<if test="is_lock != null and is_lock != ''">
and ivt.lock_type = '0'
and ivt.is_used = '1'
</if>
<if test="order_by != null and order_by != ''">
order by ${order_by}

View File

@@ -142,9 +142,9 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl<MdMeMaterialbaseMap
/**
* 物料导入
*/
//@Override
// @Override
@Transactional
public void excelImport99(MultipartFile file, HttpServletRequest request, HttpServletResponse response) {
public void excelImport2123(MultipartFile file, HttpServletRequest request, HttpServletResponse response) {
try {
InputStream inputStream = file.getInputStream();
ExcelReader excelReader = ExcelUtil.getReader(inputStream);
@@ -154,10 +154,10 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl<MdMeMaterialbaseMap
for (int i = 1; i < read.size(); i++) {
List<Object> list = read.get(i);
String m1 = String.valueOf(list.get(0));
String m2 = String.valueOf(list.get(1));
String m2 = ObjectUtil.isEmpty(list.get(1)) ? "未知物料名称待补充" : String.valueOf(list.get(1));
String m3 = ObjectUtil.isEmpty(list.get(2)) ? null : String.valueOf(list.get(2));
String m4 = ObjectUtil.isEmpty(list.get(3)) ? null : String.valueOf(list.get(3));
String m5 = ObjectUtil.isEmpty(list.get(4)) ? null : String.valueOf(list.get(4));
//String m4 = ObjectUtil.isEmpty(list.get(3)) ? null : String.valueOf(list.get(3));
//String m5 = ObjectUtil.isEmpty(list.get(4)) ? null : String.valueOf(list.get(4));
// 根据物料编码查询是否有相同物料编码的物料
MdMeMaterialbase mdMeMaterialbase = this.baseMapper.selectOne(
new QueryWrapper<MdMeMaterialbase>().lambda()
@@ -171,8 +171,8 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl<MdMeMaterialbaseMap
dao.setMaterial_code(m1);
dao.setMaterial_name(m2);
dao.setMaterial_spec(m3);
dao.setMaterial_model(m4);
dao.setBase_unit_id(m5);
//dao.setMaterial_model(m4);
dao.setBase_unit_id("1");
dao.setIs_used("1");
dao.setIs_delete("0");
dao.setCreate_id(SecurityUtils.getCurrentUserId());
@@ -196,6 +196,7 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl<MdMeMaterialbaseMap
@Override
@Transactional
public void excelImport(MultipartFile file, HttpServletRequest request, HttpServletResponse response) {
Integer in = 1;
try {
String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
@@ -205,6 +206,10 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl<MdMeMaterialbaseMap
List<List<Object>> read = excelReader.read();
if (read.size() > 1) {
for (int i = 1; i < read.size(); i++) {
in = i;
if (i == 280) {
int a = 0;
}
List<Object> list = read.get(i);
if (ObjectUtil.isEmpty(list.get(1)) || ObjectUtil.isEmpty(list.get(4)) || ObjectUtil.isEmpty(list.get(5)) || ObjectUtil.isEmpty(list.get(6))) {
if (ObjectUtil.isEmpty(list.get(1))) {
@@ -214,7 +219,7 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl<MdMeMaterialbaseMap
throw new BadRequestException("" + i + "行,库位编号不能为空,请检查。");
}
if (ObjectUtil.isEmpty(list.get(5))) {
throw new BadRequestException("" + i + "行,托盘编号不能为空,请检查。");
throw new BadRequestException("" + i + "行,载具编号不能为空,请检查。");
}
if (ObjectUtil.isEmpty(list.get(6))) {
throw new BadRequestException("" + i + "行,库存数量不能为空,请检查。");
@@ -229,8 +234,20 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl<MdMeMaterialbaseMap
if (ObjectUtil.isEmpty(mdMeMaterialbase)) {
throw new BadRequestException("" + i + "行,物料编码不存在【" + m1 + "】,请检查。");
}
Integer m4 = Integer.parseInt(String.valueOf(list.get(6)).trim());
if (m4 == 0) {
m4 = 1;
m1 = "KL001";
mdMeMaterialbase = this.baseMapper.selectOne(
new QueryWrapper<MdMeMaterialbase>().lambda()
.eq(MdMeMaterialbase::getMaterial_code, m1)
);
}
//库位编号
String m2 = String.valueOf(list.get(4)).trim();
if (!m2.contains("L")) {
m2 = "L" + m2;
}
Structattr structattr = iStructattrService.getOne(
new QueryWrapper<Structattr>().lambda()
.eq(Structattr::getStruct_code, m2)
@@ -240,23 +257,42 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl<MdMeMaterialbaseMap
}
//托盘编号
String m3 = String.valueOf(list.get(5)).trim();
MdPbStoragevehicleinfo mdPbStoragevehicleinfo = iMdPbStoragevehicleinfoService.getOne(new LambdaQueryWrapper<>(MdPbStoragevehicleinfo.class)
if (!m3.contains("LX")) {
m3 = "28LX" + m3;
}
List<MdPbStoragevehicleinfo> mdPbStoragevehicleinfo = iMdPbStoragevehicleinfoService.list(new LambdaQueryWrapper<>(MdPbStoragevehicleinfo.class)
.eq(MdPbStoragevehicleinfo::getStoragevehicle_code, m3)
);
if (ObjectUtil.isEmpty(mdPbStoragevehicleinfo)) {
throw new BadRequestException("" + i + "行,托盘编号不存在【" + m3 + "】,请检查。");
MdPbStoragevehicleinfo dao = new MdPbStoragevehicleinfo();
dao.setStoragevehicle_id(IdUtil.getStringId());
dao.setStoragevehicle_code(m3);
dao.setStoragevehicle_name("料箱");
dao.setCreate_id("1");
dao.setCreate_name("admin");
dao.setCreate_time(DateUtil.now());
dao.setUpdate_optid("1");
dao.setUpdate_optname("admin");
dao.setOccupystruct_qty(BigDecimal.valueOf(1L));
dao.setOverstruct_type("00");
dao.setUpdate_time(DateUtil.now());
dao.setIs_delete("0");
dao.setIs_used("1");
dao.setStoragevehicle_type("2");
iMdPbStoragevehicleinfoService.save(dao);
}
List<GroupPlate> groupPlateList = iMdPbGroupplateService.list(
new LambdaQueryWrapper<GroupPlate>()
.eq(GroupPlate::getStoragevehicle_code, mdPbStoragevehicleinfo.getStoragevehicle_code())
.eq(GroupPlate::getMaterial_id, mdMeMaterialbase.getMaterial_id())
.lt(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库"))
);
if (ObjectUtils.isNotEmpty(groupPlateList)) {
continue;
if (!ObjectUtil.isEmpty(mdPbStoragevehicleinfo)) {
List<GroupPlate> groupPlateList = iMdPbGroupplateService.list(
new LambdaQueryWrapper<GroupPlate>()
.eq(GroupPlate::getStoragevehicle_code, mdPbStoragevehicleinfo.get(0).getStoragevehicle_code())
.eq(GroupPlate::getMaterial_id, mdMeMaterialbase.getMaterial_id())
.lt(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库"))
);
if (ObjectUtils.isNotEmpty(groupPlateList)) {
continue;
}
}
//物料数量
Integer m4 = Integer.parseInt(String.valueOf(list.get(6)).trim());
JSONObject whereJson = new JSONObject();
JSONArray dataArray = new JSONArray();
JSONObject item = new JSONObject();
@@ -271,7 +307,7 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl<MdMeMaterialbaseMap
whereJson.put("pcsn", "");
whereJson.put("qty", m4);
whereJson.put("nonClear", "1");
whereJson.put("vehicle_code", mdPbStoragevehicleinfo.getStoragevehicle_code());
whereJson.put("vehicle_code", m3);
whereJson.put("groupStatus", IOSEnum.GROUP_PLATE_STATUS.code("入库"));
whereJson.put("remark", "该库存通过仓库数据初始化进行仓库盘点,手动导入库存。");
pdaIosInService.groupPlate(whereJson);
@@ -282,17 +318,18 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl<MdMeMaterialbaseMap
);
if (struct == null) {
iStructattrService.update(new LambdaUpdateWrapper<>(Structattr.class)
.set(Structattr::getStoragevehicle_code, mdPbStoragevehicleinfo.getStoragevehicle_code())
.set(Structattr::getStoragevehicle_code, m3)
.set(Structattr::getUpdate_optid, currentUserId)
.set(Structattr::getUpdate_optname, nickName)
.set(Structattr::getUpdate_time, now)
.set(Structattr::getIs_used, 1)
.eq(Structattr::getStruct_id, structattr.getStruct_id())
);
}
}
}
} catch (Exception ex) {
throw new BadRequestException("导入失败" + ex.getMessage());
throw new BadRequestException("导入失败" + ex.getMessage() + ":" + in);
}
}
@@ -498,9 +535,9 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl<MdMeMaterialbaseMap
/**
* 载具
*/
//@Override
// @Override
@Transactional
public void excelImport8(MultipartFile file, HttpServletRequest request, HttpServletResponse response) {
public void excelImport2122(MultipartFile file, HttpServletRequest request, HttpServletResponse response) {
try {
List<MdPbStoragevehicleinfo> insertList = new ArrayList<>();
InputStream inputStream = file.getInputStream();
@@ -510,10 +547,19 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl<MdMeMaterialbaseMap
for (int i = 1; i < read.size(); i++) {
List<Object> list = read.get(i);
String m1 = String.valueOf(list.get(0));
if (!m1.contains("LX")) {
m1 = "28LX" + m1;
}
List<MdPbStoragevehicleinfo> groupPlateList = iMdPbStoragevehicleinfoService.list(
new LambdaQueryWrapper<MdPbStoragevehicleinfo>()
.eq(MdPbStoragevehicleinfo::getStoragevehicle_code, m1));
if (ObjectUtils.isNotEmpty(groupPlateList)) {
continue;
}
MdPbStoragevehicleinfo dao = new MdPbStoragevehicleinfo();
dao.setStoragevehicle_id(IdUtil.getStringId());
dao.setStoragevehicle_code(m1);
dao.setStoragevehicle_name("货架");
dao.setStoragevehicle_name("料箱");
dao.setCreate_id("1");
dao.setCreate_name("admin");
dao.setCreate_time(DateUtil.now());
@@ -524,7 +570,7 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl<MdMeMaterialbaseMap
dao.setUpdate_time(DateUtil.now());
dao.setIs_delete("0");
dao.setIs_used("1");
dao.setStoragevehicle_type("01");
dao.setStoragevehicle_type("2");
insertList.add(dao);
}
iMdPbStoragevehicleinfoService.saveBatch(insertList);

View File

@@ -37,7 +37,7 @@ public class MdPbStoragevehicleinfoServiceImpl extends ServiceImpl<MdPbStorageve
public IPage<MdPbStoragevehicleinfo> queryAll(Map whereJson, PageQuery page) {
// 查询条件
LambdaQueryWrapper<MdPbStoragevehicleinfo> queryWrapper = new QueryWrapper<MdPbStoragevehicleinfo>().lambda();
String search = MapUtil.getStr(whereJson, "storagevehicle_code");
String search = MapUtil.getStr(whereJson, "vehicle_code");
String storagevehicle_type = MapUtil.getStr(whereJson, "storagevehicle_type");
if (ObjectUtil.isNotEmpty(search)) {

View File

@@ -447,7 +447,7 @@ public class StructattrServiceImpl extends ServiceImpl<StructattrMapper, Structa
record.setStruct_code(changeDto.getStructCode());
record.setStor_code(structattr.getStor_code());
record.setSect_code(structattr.getSect_code());
record.setGrowth(changeDto.getInBound());
record.setGrowth(!changeDto.getTaskType().contains("Out"));
records.add(record);
}
if (!CollectionUtils.isEmpty(records)){

View File

@@ -203,7 +203,7 @@ public class GateWayServiceImpl implements IGateWayService {
status = TaskStatus.CANCELED;
break;
case SEND_FAIL:
status = TaskStatus.UNFINISHED;
status = TaskStatus.CANCELED;
break;
case EXECUTE_FAIL:
status = TaskStatus.CANCELED;

View File

@@ -253,7 +253,7 @@ public class PdaIosOutController {
@PostMapping("transferConfirm")
@Log("转运确认")
public ResponseEntity<Object> transferConfirm(@RequestBody JSONObject whereJson) {
assertNotBlankJson(whereJson, "请求参数不能为空", "storagevehicle_code");
// assertNotBlankJson(whereJson, "请求参数不能为空", "storagevehicle_code");
RedissonUtils.lock(() -> {
pdaIosOutService.transferConfirm(whereJson);
}, "transferConfirm" + whereJson.getString("storagevehicle_code"), null);

View File

@@ -622,7 +622,7 @@ public class PdaIosInServiceImpl implements PdaIosInService {
} else {
//空载具入库
whereJson.put("qty", 1);
String materialCode = "1".equals(whereJson.getString("material_id")) ? StatusEnum.VEHICLE_TYPE.code("空托盘") : "2".equals(whereJson.getString("material_id")) ? StatusEnum.VEHICLE_TYPE.code("料箱") : StatusEnum.VEHICLE_TYPE.code("货架");
String materialCode = whereJson.getString("vehicle_code").contains("T") ? StatusEnum.VEHICLE_TYPE.code("空托盘") :whereJson.getString("vehicle_code").contains("H") ? StatusEnum.VEHICLE_TYPE.code("货架") : StatusEnum.VEHICLE_TYPE.code("料箱");
JSONArray dataArray = new JSONArray();
JSONObject item = new JSONObject();
whereJson.put("material_code",materialCode);

View File

@@ -38,6 +38,7 @@ import org.nl.wms.sch_manage.service.ISchBasePointService;
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
import org.nl.wms.sch_manage.service.impl.SchBaseTaskServiceImpl;
import org.nl.wms.sch_manage.service.util.AbstractTask;
import org.nl.wms.warehouse_management.enums.IOSConstant;
import org.nl.wms.warehouse_management.enums.IOSEnum;
@@ -123,6 +124,7 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
@Autowired
private ISchBaseTaskService iSchBaseTaskService;
/**
* 点位服务
*/
@@ -207,7 +209,7 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
List<JSONObject> result = mdPbGroupplateMapper.getVehicleMaterial(whereJson);
List<JSONObject> jsonObjectList = result.stream().filter(r -> r.getBigDecimal("qty").compareTo(BigDecimal.ZERO) > 0).collect(Collectors.toList());
if (CollectionUtils.isEmpty(jsonObjectList)) {
throw new BadRequestException("此载具无出库确认的任务!");
return PdaResponse.requestParamOk(list);
}
list.add(result.get(0));
return PdaResponse.requestParamOk(list);
@@ -262,7 +264,7 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
JSONObject taskForm = new JSONObject();
taskForm.put("task_type", IOSConstant.ST_OUT_TASK);
taskForm.put("config_code", IOSConstant.ST_OUT_TASK);
taskForm.put("TaskCode", CodeUtil.getNewCode("TASK_CODE"));
taskForm.put("TaskCode", IdUtil.getStringId());
taskForm.put("point_code1", json.getString("struct_code"));
taskForm.put("point_code2", whereJson.getString("siteCode"));
taskForm.put("vehicle_code", json.getString("storagevehicle_code"));
@@ -302,7 +304,7 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
JSONObject taskForm = new JSONObject();
taskForm.put("task_type", IOSConstant.PDA_POINT_TASK);
taskForm.put("config_code", IOSConstant.PDA_POINT_TASK);
taskForm.put("TaskCode", CodeUtil.getNewCode("TASK_CODE"));
taskForm.put("TaskCode",IdUtil.getStringId());
taskForm.put("point_code1", json.getString("struct_code"));
taskForm.put("point_code2", whereJson.getString("siteCode"));
taskForm.put("vehicle_code", json.getString("storagevehicle_code"));
@@ -333,12 +335,17 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
@Transactional
public PdaResponse vehicleOutConfirm(JSONObject whereJson) {
long qty = 1L;
String materialCode = StatusEnum.VEHICLE_TYPE.code("空托盘");
Sectattr sectattr = iSectattrService.getById(whereJson.getString("sect_id"));
if (ObjectUtil.isEmpty(sectattr)) {
throw new BadRequestException("该仓位所属的库区已禁用,请先启用该库区!");
}
String materialCode = "1".equals(sectattr.getExt_id()) ? "KT001" : "2".equals(sectattr.getExt_id()) ? "KL001" : "KH001";
//空料箱出库
if (StringUtils.isNotBlank(whereJson.getString("qty"))) {
qty = whereJson.getLongValue("qty");
if (qty > 6) {
throw new BadRequestException("一次性只能输入小于7以内的载具数量");
if (qty > 4) {
throw new BadRequestException("一次性只能输入小于4以内的载具数量");
}
materialCode = StatusEnum.VEHICLE_TYPE.code("空料箱");
}
@@ -349,10 +356,7 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
whereJson.put("pcsn", "1");
whereJson.put("material_id", materDao.getMaterial_id());
whereJson.put("material_code", materDao.getMaterial_code());
Sectattr sectattr = iSectattrService.getById(whereJson.getString("sect_id"));
if (ObjectUtil.isEmpty(sectattr)) {
throw new BadRequestException("该仓位所属的库区已禁用,请先启用该库区!");
}
BsrealStorattr storeDao = iSrealStorattrService.findByCode(sectattr.getStor_code());
whereJson.put("stor_code", storeDao.getStor_code());
whereJson.put("sect_code", sectattr.getSect_code());
@@ -360,7 +364,7 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
.ioType(whereJson.getString(StatusEnum.STRATEGY_TYPE.code("出库")))
.sect_code(whereJson.getString("sect_code"))
.stor_code(whereJson.getString("stor_code"))
.material_code(whereJson.getString("material_id"))
.material_id(whereJson.getString("material_id"))
.material_code(whereJson.getString("material_code"))
.qty(BigDecimal.valueOf(qty))
.build();
@@ -368,12 +372,15 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
if (CollectionUtils.isEmpty(structList)) {
throw new BadRequestException("无可用库存!");
}
if (structList.size()<qty) {
throw new BadRequestException("您选择出库的数量为:"+qty+",仓库库存数量为:"+structList.size()+",库存不足,请把出库数量调整小再出库!");
}
structList.forEach(r -> {
//创建任务
JSONObject taskForm = new JSONObject();
taskForm.put("task_type", IOSConstant.VEHICLE_OUT_TASK);
taskForm.put("config_code", IOSConstant.VEHICLE_OUT_TASK);
taskForm.put("TaskCode", CodeUtil.getNewCode("TASK_CODE"));
taskForm.put("TaskCode",IdUtil.getStringId());
taskForm.put("point_code1", r.getStruct_code());
taskForm.put("point_code2", whereJson.getString("siteCode"));
taskForm.put("vehicle_code", r.getStoragevehicle_code());
@@ -384,13 +391,13 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
Set<String> vehicleCodeSet = structList.stream()
.map(StrategyStructMaterialVO::getStoragevehicle_code)
.collect(Collectors.toSet());
mdPbGroupplateMapper.update(
new GroupPlate(),
new LambdaUpdateWrapper<GroupPlate>()
.set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库"))
.eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库"))
.in(GroupPlate::getStoragevehicle_code, vehicleCodeSet)
);
// mdPbGroupplateMapper.update(
// new GroupPlate(),
// new LambdaUpdateWrapper<GroupPlate>()
// .set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库"))
// .eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库"))
// .in(GroupPlate::getStoragevehicle_code, vehicleCodeSet)
// );
//锁定仓位
Set<String> structCodeSet = structList.stream()
.map(StrategyStructMaterialVO::getStruct_code)
@@ -527,9 +534,11 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
//校验是否有任务
List<SchBaseTask> activeTasks = iSchBaseTaskService.getTaskList(null, pointIds, null, null);
if (CollectionUtils.isNotEmpty(activeTasks)) {
throw new BadRequestException("检查到运输到这个点位的任务,任务号为:" + activeTasks.get(0).getTask_code() +
",起点为:" + activeTasks.get(0).getPoint_code1() + ",终点为:" + activeTasks.get(0).getPoint_code2() +
",载具号为:" + activeTasks.get(0).getVehicle_code() + ",请稍后操作,或在WMS任务列表中检查。");
if (!activeTasks.get(0).getVehicle_code().contains("LX")) {
throw new BadRequestException("检查到运输到这个点位的任务,任务号为:" + activeTasks.get(0).getTask_code() +
",起点为:" + activeTasks.get(0).getPoint_code1() + ",终点为:" + activeTasks.get(0).getPoint_code2() +
",载具号为:" + activeTasks.get(0).getVehicle_code() + ",请稍后操作,或在WMS任务列表中检查。");
}
}
} else {
//解绑
@@ -581,6 +590,7 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
}
wrapper.eq(SchBasePoint::getPoint_code, siteCode)
.set(SchBasePoint::getVehicle_code, shelfCode)
.set(SchBasePoint::getCan_material_type, shelfCode)
.set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("有货"))
.set(SchBasePoint::getUpdate_time, DateUtil.now())
.set(SchBasePoint::getUpdate_name, SecurityUtils.getCurrentNickName());
@@ -652,12 +662,17 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
//任务校验
SchBaseTask task = iSchBaseTaskService.getOne(new LambdaQueryWrapper<SchBaseTask>().eq(SchBaseTask::getVehicle_code, whereJson.getString("storagevehicle_code")).lt(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode()));
if (ObjectUtil.isNotEmpty(task)) {
throw new BadRequestException("该货架:" + whereJson.getString("storagevehicle_code") + "的运输任务,任务号为:" + task.getTask_code() + ",尚未完成,请等待任务完成,再取货确认。");
Map<String, Object> param =new HashMap<>();
param.put("task_code", task.getTask_code());
param.put("method_name", "forceFinish");
param.put("config_code", task.getConfig_code());
iSchBaseTaskService.operation(param);
//throw new BadRequestException("该货架:" + whereJson.getString("storagevehicle_code") + "的运输任务,任务号为:" + task.getTask_code() + ",尚未完成,请等待任务完成,再取货确认。");
}
//获取终点
SchBasePoint pointDao = iSchBasePointService.getOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getVehicle_code, whereJson.getString("storagevehicle_code")));
if (ObjectUtil.isEmpty(pointDao)) {
throw new BadRequestException("未找到载具所在的点位信息,请检查");
throw new BadRequestException("未找到载具所在的点位信息,无需确认");
}
//预装区与商用5号线点位需自动回空
if (pointDao.getRegion_code().equals(StatusEnum.REGION_INFO.code("商用线5号线"))) {
@@ -678,7 +693,7 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
// }
List<GroupPlate> groupPlates = iMdPbGroupplateService.list(new QueryWrapper<GroupPlate>()
.eq("storagevehicle_code", whereJson.getString("storagevehicle_code"))
.eq("status", IOSEnum.GROUP_PLATE_STATUS.code("")));
.lt("status", IOSEnum.GROUP_PLATE_STATUS.code("")));
for (GroupPlate vehicleMater : groupPlates) {
BigDecimal subtract = vehicleMater.getQty().subtract(vehicleMater.getFrozen_qty());
//100-出50 = 50
@@ -694,6 +709,7 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
//载具解绑
iSchBasePointService.update(new SchBasePoint(), new LambdaUpdateWrapper<>(SchBasePoint.class)
.set(SchBasePoint::getVehicle_code, null)
.set(SchBasePoint::getPoint_status, 0)
.set(SchBasePoint::getIos_id, BaseDataEnum.IS_YES_NOT.code(""))
.eq(SchBasePoint::getPoint_code, pointDao.getPoint_code())
);

View File

@@ -74,7 +74,7 @@ public enum StatusEnum {
TASK_TYPE(ForkMap.pushAll(IOBILL_TYPE_IN.code, IOBILL_TYPE_OUT.code, IOBILL_TYPE_MOVE.code, EXT_TASK_TYPE.code, OTHER_TASK_TYPE.code)),
ACS_TASK_TYPE(ForkMap.of(
"叉车", "1", "ccbyrw01", "CTU", "2", "ctubyrw01", "潜伏车", "3", "qfbyrw01", "桁架任务", "4", null
"叉车", "1", "ccbyrw01", "CTU入库", "2", "ctubyru01", "潜伏车", "3", "qfbyrw01", "CTU出库", "4", "ctubyru02"
)),
/**
@@ -96,7 +96,7 @@ public enum StatusEnum {
REGION_INFO(ForkMap.of("商用线5号线", "SYCX01", null, "预装暂存区", "YZZC01", null, "预装线货架区", "YZHJ01", null, "铜管仓", "TGCK01", null,
"烧焊车间", "SHCJ01", null, "来料检验区", "LLJY01", null, "空托存放区", "KTCF01", null, "两器货架区", "LQHJ01", null, "满托存放区", "MTCF01", null, "焊接货架区", "LQSH01", null, "原料入库区", "RKQ01", null)),
"烧焊车间", "SHCJ01", null, "来料检验区", "LLJY01", null, "空托存放区", "KTCF01", null, "两器货架区", "LQHJ01", null, "满托存放区", "MTCF01", null, "焊接货架区", "LQSH01", null, "原料入库区", "RKQ01", null,"CTU入库点", "CTU01", null,"CTU出库点", "CTU02", null)),
STOCK_INFO(ForkMap.of("托盘库", "FStockPallet", null, "料箱库", "FStockId", null, "虚拟库", "FicStockId", null, "二楼ctu缓存库", "CStockId", null,
@@ -108,8 +108,7 @@ public enum StatusEnum {
BIND_TYPE(ForkMap.of(
"解绑", "0", null, "绑定", "1", null, "不操作", "3", null
)),
VEHICLE_TYPE(ForkMap.of(
"空载具", "0", 0, "空托盘", "KT001", 1, "空料箱", "KL001", 2, "空货架", "KH001", 3
VEHICLE_TYPE(ForkMap.of("空载具", "0", 0, "空托盘", "KT001", 1, "空料箱", "KL001", 2, "空货架", "KH001", 3
)),
STORE_INFO(ForkMap.of(

View File

@@ -37,9 +37,9 @@ public enum TaskStatus {
/**
* 未完成
*/
UNFINISHED("7", "未完成", "未完成");
UNFINISHED("7", "未完成", "未完成"),
WAIT("10", "等待确认", "等待确认");
TaskStatus(String code, String name, String desc) {
this.code = code;
this.name = name;

View File

@@ -128,6 +128,7 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
updateWrapper.set(SchBasePoint::getRegion_name, baseRegion.getRegion_name());
if (StringUtils.isNotBlank(entity.getVehicle_code())) {
updateWrapper.set(SchBasePoint::getVehicle_code, entity.getVehicle_code());
updateWrapper.set(SchBasePoint::getCan_material_type, entity.getVehicle_code());
}else {
updateWrapper.set(SchBasePoint::getVehicle_code, null);
}
@@ -210,10 +211,18 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
@Override
public String getPointCode(String regionCode) {
String pointCode = "";
List<SchBasePoint> pointList = checkEndPointTask(
regionCode,
IOSEnum.LOCK_TYPE.code("未锁定"),
StatusEnum.SORT_TYPE.code("升序"), null, null, "true", false);
List<SchBasePoint> pointList;
if (regionCode.equals(StatusEnum.REGION_INFO.code("CTU出库点"))) {
LambdaQueryWrapper<SchBasePoint> queryWrapper = new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getIs_used, true);
queryWrapper.eq(SchBasePoint::getRegion_code, regionCode);
queryWrapper.orderByAsc(SchBasePoint::getPoint_code);
pointList = this.list(queryWrapper);
} else {
pointList = checkEndPointTask(
regionCode,
IOSEnum.LOCK_TYPE.code("未锁定"),
StatusEnum.SORT_TYPE.code("升序"), null, null, "true", false);
}
if (regionCode.equals(StatusEnum.REGION_INFO.code("预装线货架区"))) {
//可放空料架位置
pointCode = pointList.stream()

View File

@@ -2,7 +2,6 @@ package org.nl.wms.sch_manage.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
@@ -18,6 +17,7 @@ import org.nl.common.domain.query.PageQuery;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.CodeUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.config.IdUtil;
import org.nl.wms.basedata_manage.enums.BaseDataEnum;
import org.nl.wms.sch_manage.enums.StatusEnum;
import org.nl.wms.sch_manage.enums.TaskStatus;
@@ -51,6 +51,9 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
@Autowired
private ISchBasePointService iSchBasePointService;
@Autowired
private SchBaseTaskServiceImpl schBaseTaskServiceImpl;
@Autowired
private TaskFactory taskFactory;
@@ -102,8 +105,8 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
String nickName = SecurityUtils.getCurrentNickName();
String now = DateUtil.now();
Assert.notNull(entity.getTask_status(), "任务状态不能为空!");
entity.setTask_id(IdUtil.getSnowflake(1, 1).nextIdStr());
entity.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
entity.setTask_id(org.nl.config.IdUtil.getStringId());
entity.setTask_code(IdUtil.getStringId());
entity.setCreate_id(currentUserId);
entity.setCreate_name(nickName);
entity.setCreate_time(now);

View File

@@ -1,6 +1,8 @@
package org.nl.wms.sch_manage.service.util;
import com.alibaba.fastjson.JSONObject;
import org.nl.wms.sch_manage.enums.StatusEnum;
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
/**
* @Author: Liuxy
@@ -26,4 +28,17 @@ public class PointUtils {
// 设置
return statusArr.getString(label);
}
public static String getRcsTraceId(SchBaseTask task) {
if (task.getVehicle_code().contains("T")) {
return "ccbyrw01";
} else if (task.getVehicle_code().contains("LX")) {
return task.getConfig_code().contains("In") ?"ctubyru01":"ctubyru02";
} else {
return "qfbyrw01";
}
}
}

View File

@@ -23,6 +23,7 @@ import org.nl.wms.sch_manage.service.dao.SchBasePoint;
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
import org.nl.wms.sch_manage.service.util.AbstractTask;
import org.nl.wms.sch_manage.service.util.AcsTaskDto;
import org.nl.wms.sch_manage.service.util.PointUtils;
import org.nl.wms.sch_manage.service.util.TaskType;
import org.nl.wms.warehouse_management.enums.IOSEnum;
import org.nl.wms.warehouse_management.service.IMdPbGroupplateService;
@@ -86,18 +87,18 @@ public class BackInTask extends AbstractTask {
updateIvtUtils.checkTask(json);
SchBaseTask task = new SchBaseTask();
task.setTask_id(IdUtil.getStringId());
task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
task.setTask_code(IdUtil.getStringId());
task.setTask_status(TaskStatus.CREATE.getCode());
task.setConfig_code(json.getString("config_code"));
task.setPoint_code1(json.getString("point_code1"));
task.setPoint_code2(json.getString("point_code2"));
task.setVehicle_code(json.getString("vehicle_code"));
task.setVehicle_type(json.getString("vehicle_type"));
task.setAcs_trace_id(json.getString("acs_task_type"));
task.setCreate_id(SecurityUtils.getCurrentUserId());
task.setCreate_name(SecurityUtils.getCurrentNickName());
task.setCreate_time(DateUtil.now());
task.setRequest_param(json.toString());
task.setAcs_trace_id(PointUtils.getRcsTraceId(task));
taskService.save(task);
return task.getTask_id();
}

View File

@@ -21,6 +21,7 @@ import org.nl.wms.sch_manage.service.ISchBaseTaskService;
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
import org.nl.wms.sch_manage.service.util.AbstractTask;
import org.nl.wms.sch_manage.service.util.AcsTaskDto;
import org.nl.wms.sch_manage.service.util.PointUtils;
import org.nl.wms.sch_manage.service.util.TaskType;
import org.nl.wms.warehouse_management.enums.IOSConstant;
import org.nl.wms.warehouse_management.enums.IOSEnum;
@@ -138,6 +139,7 @@ public class CtuInTask extends AbstractTask {
task.setRequest_param(json.toString());
task.setVehicle_type(json.getString("vehicle_type"));
task.setConfig_code(IOSConstant.CTU_IN_TASK);
task.setAcs_trace_id(PointUtils.getRcsTraceId(task));
taskService.create(task);
return task.getTask_code();
}

View File

@@ -14,6 +14,7 @@ import org.nl.wms.sch_manage.service.ISchBaseTaskService;
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
import org.nl.wms.sch_manage.service.util.AbstractTask;
import org.nl.wms.sch_manage.service.util.AcsTaskDto;
import org.nl.wms.sch_manage.service.util.PointUtils;
import org.nl.wms.sch_manage.service.util.TaskType;
import org.nl.wms.warehouse_management.service.IStIvtMoveinvService;
import org.nl.wms.warehouse_management.service.IStIvtMoveinvdtlService;
@@ -59,7 +60,7 @@ public class MoveTask extends AbstractTask {
updateIvtUtils.checkTask(json);
SchBaseTask task = new SchBaseTask();
task.setTask_id(IdUtil.getStringId());
task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
task.setTask_code(IdUtil.getStringId());
task.setTask_status(TaskStatus.CREATE.getCode());
task.setConfig_code(json.getString("config_code"));
task.setPoint_code1(json.getString("point_code1"));
@@ -71,6 +72,7 @@ public class MoveTask extends AbstractTask {
task.setCreate_id(SecurityUtils.getCurrentUserId());
task.setCreate_name(SecurityUtils.getCurrentNickName());
task.setCreate_time(DateUtil.now());
task.setAcs_trace_id(PointUtils.getRcsTraceId(task));
taskService.save(task);
return task.getTask_id();
}

View File

@@ -22,6 +22,7 @@ import org.nl.wms.sch_manage.service.dao.SchBasePoint;
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
import org.nl.wms.sch_manage.service.util.AbstractTask;
import org.nl.wms.sch_manage.service.util.AcsTaskDto;
import org.nl.wms.sch_manage.service.util.PointUtils;
import org.nl.wms.sch_manage.service.util.TaskType;
import org.nl.wms.warehouse_management.enums.IOSEnum;
import org.nl.wms.warehouse_management.service.IOutBillService;
@@ -80,7 +81,7 @@ public class PdaPointTask extends AbstractTask {
updateIvtUtils.checkTask(json);
SchBaseTask task = new SchBaseTask();
task.setTask_id(IdUtil.getStringId());
task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
task.setTask_code(IdUtil.getStringId());
task.setTask_status(TaskStatus.CREATE.getCode());
task.setConfig_code(json.getString("config_code"));
task.setPoint_code1(json.getString("point_code1"));
@@ -94,6 +95,7 @@ public class PdaPointTask extends AbstractTask {
task.setCreate_id(SecurityUtils.getCurrentUserId());
task.setCreate_name(SecurityUtils.getCurrentNickName());
task.setCreate_time(DateUtil.now());
task.setAcs_trace_id(PointUtils.getRcsTraceId(task));
taskService.save(task);
return task.getTask_code();
}
@@ -174,6 +176,7 @@ public class PdaPointTask extends AbstractTask {
iSchBasePointService.update(new UpdateWrapper<SchBasePoint>().lambda()
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1())
.set(SchBasePoint::getVehicle_code, null)
.set(SchBasePoint::getCan_material_type, null)
.set(SchBasePoint::getIos_id, null)
.set(SchBasePoint::getIng_task_code, null)
.set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("无货"))

View File

@@ -14,6 +14,7 @@ import org.nl.wms.sch_manage.service.ISchBaseTaskService;
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
import org.nl.wms.sch_manage.service.util.AbstractTask;
import org.nl.wms.sch_manage.service.util.AcsTaskDto;
import org.nl.wms.sch_manage.service.util.PointUtils;
import org.nl.wms.sch_manage.service.util.TaskType;
import org.nl.wms.warehouse_management.enums.IOSEnum;
import org.nl.wms.warehouse_management.service.IRawAssistIStorService;
@@ -66,6 +67,7 @@ public class StInTask extends AbstractTask {
task.setCreate_id(SecurityUtils.getCurrentUserId());
task.setCreate_name(SecurityUtils.getCurrentNickName());
task.setCreate_time(DateUtil.now());
task.setAcs_trace_id(PointUtils.getRcsTraceId(task));
taskService.save(task);
return task.getTask_id();
}

View File

@@ -16,6 +16,7 @@ import org.nl.wms.sch_manage.service.ISchBaseTaskService;
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
import org.nl.wms.sch_manage.service.util.AbstractTask;
import org.nl.wms.sch_manage.service.util.AcsTaskDto;
import org.nl.wms.sch_manage.service.util.PointUtils;
import org.nl.wms.sch_manage.service.util.TaskType;
import org.nl.wms.warehouse_management.enums.IOSEnum;
import org.nl.wms.warehouse_management.service.IMdPbGroupplateService;
@@ -75,6 +76,7 @@ public class StOutTask extends AbstractTask {
task.setCreate_id(SecurityUtils.getCurrentUserId());
task.setCreate_name(SecurityUtils.getCurrentNickName());
task.setCreate_time(DateUtil.now());
task.setAcs_trace_id(PointUtils.getRcsTraceId(task));
taskService.save(task);
return task.getTask_id();
}

View File

@@ -19,6 +19,7 @@ import org.nl.wms.sch_manage.service.dao.SchBasePoint;
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
import org.nl.wms.sch_manage.service.util.AbstractTask;
import org.nl.wms.sch_manage.service.util.AcsTaskDto;
import org.nl.wms.sch_manage.service.util.PointUtils;
import org.nl.wms.sch_manage.service.util.TaskType;
import org.nl.wms.warehouse_management.enums.IOSEnum;
import org.nl.wms.warehouse_management.service.IMdPbGroupplateService;
@@ -70,7 +71,7 @@ public class VehicleInTask extends AbstractTask {
updateIvtUtils.checkTask(json);
SchBaseTask task = new SchBaseTask();
task.setTask_id(IdUtil.getStringId());
task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
task.setTask_code(IdUtil.getStringId());
task.setTask_status(TaskStatus.CREATE.getCode());
task.setConfig_code(json.getString("config_code"));
task.setPoint_code1(json.getString("point_code1"));
@@ -84,6 +85,7 @@ public class VehicleInTask extends AbstractTask {
task.setCreate_id(SecurityUtils.getCurrentUserId());
task.setCreate_name(SecurityUtils.getCurrentNickName());
task.setCreate_time(DateUtil.now());
task.setAcs_trace_id(PointUtils.getRcsTraceId(task));
taskService.save(task);
return task.getTask_id();
}

View File

@@ -18,6 +18,7 @@ import org.nl.wms.sch_manage.service.dao.SchBasePoint;
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
import org.nl.wms.sch_manage.service.util.AbstractTask;
import org.nl.wms.sch_manage.service.util.AcsTaskDto;
import org.nl.wms.sch_manage.service.util.PointUtils;
import org.nl.wms.sch_manage.service.util.TaskType;
import org.nl.wms.warehouse_management.enums.IOSEnum;
import org.nl.wms.warehouse_management.service.IMdPbGroupplateService;
@@ -82,6 +83,7 @@ public class VehicleOutTask extends AbstractTask {
task.setCreate_id(SecurityUtils.getCurrentUserId());
task.setCreate_name(SecurityUtils.getCurrentNickName());
task.setCreate_time(DateUtil.now());
task.setAcs_trace_id(PointUtils.getRcsTraceId(task));
taskService.save(task);
return task.getTask_id();
}

View File

@@ -1011,7 +1011,7 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv>
//创建任务
JSONObject task_form = new JSONObject();
task_form.put("task_type", "STOutTask");
task_form.put("TaskCode", CodeUtil.getNewCode("TASK_CODE"));
task_form.put("TaskCode",IdUtil.getStringId());
task_form.put("point_code1", ioStorInvDis.getStruct_code());
task_form.put("point_code2", pointCode);
task_form.put("vehicle_code", ioStorInvDis.getStoragevehicle_code());
@@ -1022,6 +1022,7 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv>
LambdaUpdateWrapper<SchBasePoint> wrapper = new LambdaUpdateWrapper<SchBasePoint>()
.eq(SchBasePoint::getPoint_code, pointCode)
.set(SchBasePoint::getVehicle_code, ioStorInvDis.getStoragevehicle_code())
.set(SchBasePoint::getCan_material_type, ioStorInvDis.getStoragevehicle_code())
.set(SchBasePoint::getIs_has_workder, BaseDataEnum.IS_YES_NOT.code(""))
.set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("有货"));
iSchBasePointService.update(new SchBasePoint(), wrapper);
@@ -1235,7 +1236,9 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv>
StructattrChangeDto changeDto = StructattrChangeDto.builder()
.inv(ioStorInvDis.getIostorinv_id())
.storagevehicleCode(ioStorInvDis.getStoragevehicle_code())
.structCode(ioStorInvDis.getStruct_code()).taskType(task.getConfig_code()).inBound(true).build();
.structCode(ioStorInvDis.getStruct_code())
.taskType(task.getConfig_code())
.inBound(!"qfbyrw01".equals(task.getAcs_trace_id())).build();
iStructattrService.changeStruct(changeDto);
int countDis = ioStorInvDisMapper.selectCount(new LambdaQueryWrapper<>(IOStorInvDis.class)
.eq(IOStorInvDis::getIostorinvdtl_id, ioStorInvDis.getIostorinvdtl_id())

View File

@@ -543,7 +543,7 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
//创建任务
JSONObject task_form = new JSONObject();
task_form.put("task_type", "STInTask");
task_form.put("TaskCode", CodeUtil.getNewCode("TASK_CODE"));
task_form.put("TaskCode", IdUtil.getStringId());
task_form.put("point_code1", point_code);
task_form.put("point_code2", ioStorInvDis.get(0).getStruct_code());
task_form.put("vehicle_code", map.get("storagevehicle_code"));

View File

@@ -1,20 +1,32 @@
package org.nl.wms.warehouse_management.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.CodeUtil;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.config.SpringContextHolder;
import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleinfoService;
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo;
import org.nl.wms.pda.ios_manage.service.impl.PdaIosInServiceImpl;
import org.nl.wms.sch_manage.enums.StatusEnum;
import org.nl.wms.warehouse_management.enums.IOSConstant;
import org.nl.wms.warehouse_management.enums.IOSEnum;
import org.nl.wms.warehouse_management.service.IMdPbGroupplateService;
import org.nl.wms.warehouse_management.service.IStIvtMoreorlessdtlService;
import org.nl.wms.warehouse_management.service.IStIvtMoreorlessmstService;
import org.nl.wms.warehouse_management.service.dao.GroupPlate;
import org.nl.wms.warehouse_management.service.dao.StIvtMoreorlessdtl;
import org.nl.wms.warehouse_management.service.dao.StIvtMoreorlessmst;
import org.nl.wms.warehouse_management.service.dao.mapper.StIvtMoreorlessmstMapper;
@@ -24,6 +36,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -44,7 +58,11 @@ public class StIvtMoreorlessmstServiceImpl extends ServiceImpl<StIvtMoreorlessms
*/
@Autowired
private IStIvtMoreorlessdtlService iStIvtMoreorlessdtlService;
@Autowired
private IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService;
@Resource
private IMdPbGroupplateService iMdPbGroupplateService;
/**
* 变更库存工具类
*/
@@ -135,6 +153,33 @@ public class StIvtMoreorlessmstServiceImpl extends ServiceImpl<StIvtMoreorlessms
);
// 更新库存
for (StIvtMoreorlessdtl dto : dtlDaoList) {
MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getByCode(dto.getStoragevehicle_code());
if (ObjectUtil.isEmpty(vehicleDao)) {
throw new BadRequestException("载具信息有误!");
}
// LambdaQueryWrapper<GroupPlate> query = new QueryWrapper<GroupPlate>().lambda()
// .eq(GroupPlate::getStoragevehicle_code,dto.getStoragevehicle_code())
// .eq(GroupPlate::getMaterial_id,dto.getMaterial_id())
// .eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库"));
// GroupPlate extDao = iMdPbGroupplateService.getOne(query);
// if (ObjectUtil.isEmpty(extDao)) {
// //组盘
// GroupPlate groupDao = GroupPlate.builder()
// .group_id(IdUtil.getStringId())
// .material_id(dto.getMaterial_id())
// .storagevehicle_code(vehicleDao.getStoragevehicle_code())
// .pcsn(org.nl.common.utils.DateUtil.getDateTimeFormatyMd())
// .qty_unit_id(dto.getQty_unit_id())
// .qty_unit_name(dto.getQty_unit_name())
// .qty(dto.getMol_qty())
// .status(IOSEnum.GROUP_PLATE_STATUS.code("入库"))
// .create_id(SecurityUtils.getCurrentUserId())
// .create_name(SecurityUtils.getCurrentNickName())
// .create_time(DateUtil.now())
// .remark("该物料由:"+SecurityUtils.getCurrentNickName()+"盘点后,更正载具物料的组盘信息。")
// .build();
// iMdPbGroupplateService.save(groupDao);
// }
JSONObject json = new JSONObject();
json.put("type", dao.getMol_type().equals(IOSEnum.MORE_TYPE.code(""))
? IOSConstant.UPDATE_IVT_TYPE_SUB_CANUSE_IVT : IOSConstant.UPDATE_IVT_TYPE_ADD_CANUSE_IVT);

View File

@@ -17,7 +17,6 @@ import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleinfoService;
import org.nl.wms.basedata_manage.service.ISectattrService;
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo;
import org.nl.wms.basedata_manage.service.dao.Sectattr;
import org.nl.wms.sch_manage.enums.StatusEnum;
import org.nl.wms.sch_manage.enums.TaskStatus;
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
@@ -135,23 +134,23 @@ public class UpdateIvtUtils {
Set<String> pointIds = new HashSet<>();
pointIds.add(where.getString("point_code1"));
pointIds.add(where.getString("point_code2"));
list = iSchBaseTaskService.getTaskList(pointIds, pointIds, null, null);
if (CollectionUtils.isNotEmpty(list)) {
throw new BadRequestException("当前起点或终点存在任务,起点:" + where.getString("point_code1") + ",终点:" + where.getString("point_code2") + ",请在WMS任务列表中检查!");
if (!where.getString("vehicle_code").contains("LX")) {
list = iSchBaseTaskService.getTaskList(pointIds, pointIds, null, null);
if (CollectionUtils.isNotEmpty(list)) {
throw new BadRequestException("当前起点或终点存在任务,起点:" + where.getString("point_code1") + ",终点:" + where.getString("point_code2") + ",请在WMS任务列表中检查!");
}
}
list = iSchBaseTaskService.list(new QueryWrapper<SchBaseTask>().eq("vehicle_code", where.getString("vehicle_code"))
.lt("task_status", TaskStatus.FINISHED.getCode()));
if (CollectionUtils.isNotEmpty(list)) {
throw new BadRequestException("当前载具存在任务:" + list.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(",")) + ",请在WMS任务列表中检查!");
}
MdPbStoragevehicleinfo mdPbStoragevehicleinfo = iMdPbStoragevehicleinfoService.getOne(new QueryWrapper<MdPbStoragevehicleinfo>().lambda().eq(MdPbStoragevehicleinfo::getStoragevehicle_code, where.getString("vehicle_code")));
if (mdPbStoragevehicleinfo == null) {
throw new BadRequestException("该载具不存在,请检查。");
if (StringUtils.isBlank(where.getString("isCheckVehicle"))) {
MdPbStoragevehicleinfo mdPbStoragevehicleinfo = iMdPbStoragevehicleinfoService.getOne(new QueryWrapper<MdPbStoragevehicleinfo>().lambda().eq(MdPbStoragevehicleinfo::getStoragevehicle_code, where.getString("vehicle_code")));
if (mdPbStoragevehicleinfo == null) {
throw new BadRequestException("该载具不存在,请检查。");
}
}
//根据载具类型判断RCS任务类型
String acsTaskType = StatusEnum.ACS_TASK_TYPE.getR(mdPbStoragevehicleinfo.getStoragevehicle_type());
where.put("acs_task_type", acsTaskType);
where.put("vehicle_type", mdPbStoragevehicleinfo.getStoragevehicle_type());
}
/**