Browse Source

add:异常口、退货口入库流程

master
zhouz 6 days ago
parent
commit
0e06e20cec
  1. 94
      lms/nladmin-system/src/main/java/org/nl/b_lms/pda/service/impl/VehicleTwoServiceImpl.java
  2. 126
      lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoInBoxTrussTask.java
  3. 76
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/InBoxManageServiceImpl.java
  4. 10
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/InBussManageServiceImpl.java
  5. 2
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/TwoInBussManageServiceImpl.java
  6. 3
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/service/MaterialbaseService.java
  7. 3
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/service/impl/MaterialbaseServiceImpl.java
  8. 74
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/dao/mapper/StIvtStructattrMapper.xml

94
lms/nladmin-system/src/main/java/org/nl/b_lms/pda/service/impl/VehicleTwoServiceImpl.java

@ -3,6 +3,7 @@ package org.nl.b_lms.pda.service.impl;
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 lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@ -10,6 +11,10 @@ import org.nl.b_lms.pda.service.VehicleTwoService;
import org.nl.b_lms.pdm.info.dao.PdmBiContainerinbound;
import org.nl.b_lms.pdm.info.service.IPdmBiContainerinboundService;
import org.nl.b_lms.pdm.productSpec.service.impl.PdmProductSpecServiceImpl;
import org.nl.b_lms.pdm.storagevehicleext.dao.MdPbStoragevehicleext;
import org.nl.b_lms.pdm.storagevehicleext.service.IMdPbStoragevehicleextService;
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
import org.nl.b_lms.pdm.subpackagerelation.service.IpdmBiSubpackagerelationService;
import org.nl.b_lms.sch.point.dao.SchBasePoint;
import org.nl.b_lms.sch.point.service.IschBasePointService;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
@ -37,6 +42,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
@ -70,7 +76,8 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
@Autowired
private LmsToMesService lmsToMesService;
@Autowired
private IpdmBiSubpackagerelationService ipdmBiSubpackagerelationService;
/**
* 点位服务
*/
@ -79,8 +86,9 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
@Autowired
private InBussManageService inBussManageService;
@Autowired
private IPdmBiContainerinboundService iPdmBiContainerinboundService;
private IMdPbStoragevehicleextService mdPbStoragevehicleextService;
@Override
@Transactional(rollbackFor = Exception.class)
@ -183,9 +191,9 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
public JSONObject boxIn(JSONObject whereJson) {
// 调用接口
String startCode = whereJson.getString("point_code");
if ("MXRKW1".equals(startCode)){
if ("MXRKW1".equals(startCode)) {
inBoxManageService.boxBinVehicle(whereJson);
}else if ("THRKDJW1".equals(startCode)){
} else if ("THRKDJW1".equals(startCode)) {
inBoxManageService.boxBinVehicleByTHRK(whereJson);
}
JSONObject result = new JSONObject();
@ -211,39 +219,26 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
String a = JSONObject.toJSONString(msg);
List<String> list = JSONObject.parseObject(a, List.class);
Optional<String> 称重 = list.stream().filter(m -> m.contains("称重")).findAny();
if (称重.isPresent()){
if (称重.isPresent()) {
System.out.println(称重.get());
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public JSONObject reback(JSONObject whereJson) {
WQLObject extTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
String bill_type = whereJson.getString("bill_type");
whereJson.put("material_barcode", whereJson.getString("box_no"));
whereJson.put("device_code", whereJson.getString("point_code"));
if ("RK1002".equals(whereJson.getString("point_code"))){
if (IOSEnum.SPECIAL_POINTS.code("异常出库口").equals(whereJson.getString("point_code"))) {
List<SchBaseTask> list = ischBaseTaskService.list(new QueryWrapper<SchBaseTask>()
.select("task_id")
.eq("point_code2", "RK1004")
.eq("point_code2", IOSEnum.SPECIAL_POINTS.code("异常出库口"))
.eq("task_type", "010706")
.eq("is_delete", "0")
.lt("task_status", TaskStatusEnum.FINISHED.getCode()));
if (!CollectionUtils.isEmpty(list)){
throw new BadRequestException("稍后再试,异常口存在正在执行的任务"+ list.stream().map(SchBaseTask::getTask_id).collect(Collectors.joining(",")));
}
Param forceWeight = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("force_weight");
if (forceWeight!=null && "1".equals(forceWeight.getValue())){
PdmBiContainerinbound one = iPdmBiContainerinboundService.getOne(new QueryWrapper<PdmBiContainerinbound>()
.eq("box", whereJson.getString("box_no")));
if (one!=null && !StringUtils.isEmpty(one.getRemark())){
List<String> remark = JSONObject.parseObject(one.getRemark(), List.class);
Optional<String> 称重 = remark.stream().filter(m -> m.contains("称重")).findAny();
if (称重.isPresent()){
throw new BadRequestException("开启称重强制校验"+称重.get());
}
}
if (!CollectionUtils.isEmpty(list)) {
throw new BadRequestException("稍后再试,异常口存在正在执行的任务" + list.stream().map(SchBaseTask::getTask_id).collect(Collectors.joining(",")));
}
}
if (bill_type.equals("1")) {
@ -256,15 +251,17 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
whereJson.put("bill_type", IOSEnum.IN_TYPE.code("手工入库"));
}
whereJson.put("box_no", whereJson.getString("box_no"));
JSONArray resultJSONArray = WQLObject.getWQLObject("pdm_bi_subpackagerelation").query("package_box_sn = '" + whereJson.getString("material_barcode") + "' AND status in ('0','1')").getResultJSONArray(0);
if (ObjectUtil.isEmpty(resultJSONArray)) {
List<PdmBiSubpackagerelation> sub_list = ipdmBiSubpackagerelationService.list(new LambdaQueryWrapper<PdmBiSubpackagerelation>()
.eq(PdmBiSubpackagerelation::getPackage_box_sn, whereJson.getString("material_barcode"))
.in(PdmBiSubpackagerelation::getStatus, Arrays.asList('0', '1')));
if (ObjectUtil.isEmpty(sub_list)) {
throw new BadRequestException("未查询到子卷包装信息!");
}
String material_barcode = "";
List<String> subs = new ArrayList<>();
for (int i = 0; i < resultJSONArray.size(); i++) {
JSONObject resultObj = resultJSONArray.getJSONObject(i);
String containerName = resultObj.getString("container_name");
for (int i = 0; i < sub_list.size(); i++) {
PdmBiSubpackagerelation sub_jo = sub_list.get(i);
String containerName = sub_jo.getContainer_name();
subs.add(containerName);
if (i == 0) {
material_barcode = containerName;
@ -273,10 +270,10 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
}
}
whereJson.put("material_barcode", material_barcode);
if (StringUtils.isBlank(resultJSONArray.getJSONObject(0).getString("package_box_sn"))) {
if (StringUtils.isBlank(sub_list.get(0).getPackage_box_sn())) {
throw new BadRequestException("木箱号不能为空!");
}
String boxNo = resultJSONArray.getJSONObject(0).getString("package_box_sn");
String boxNo = sub_list.get(0).getPackage_box_sn();
BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.getOne(
new QueryWrapper<BstIvtBoxinfo>().lambda()
.eq(BstIvtBoxinfo::getBox_no, boxNo)
@ -286,46 +283,31 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
boxDao.setIs_packing("1");
iBstIvtBoxinfoService.updateById(boxDao);
} else {
//查询mes木箱信息,插入木箱信息表
try {
JSONObject jo = new JSONObject();
jo.put("box_no", boxNo);
lmsToMesService.momGetPackingInfo(jo);
} catch (Exception ex) {
throw new BadRequestException("MES系统未查询到木箱信息!");
}
BstIvtBoxinfo boxDao1 = iBstIvtBoxinfoService.getOne(
new QueryWrapper<BstIvtBoxinfo>().lambda()
.eq(BstIvtBoxinfo::getBox_no, boxNo)
);
boxDao1.setIs_packing("1");
iBstIvtBoxinfoService.updateById(boxDao1);
whereJson.put("vehicleType", boxDao1.getVehicle_type());
throw new BadRequestException("为查询到木箱【" + boxNo + "】相关信息");
}
// 更新载具对应木箱信息
JSONObject jsonExt = extTab.query("storagevehicle_code = '" + whereJson.getString("vehicle_code") + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(jsonExt)) {
throw new BadRequestException("载具不存在!"+whereJson.getString("vehicle_code"));
MdPbStoragevehicleext ext_jo = mdPbStoragevehicleextService.getOne(new LambdaQueryWrapper<MdPbStoragevehicleext>().eq(MdPbStoragevehicleext::getStoragevehicle_code, whereJson.getString("vehicle_code")));
if (ObjectUtil.isEmpty(ext_jo)) {
throw new BadRequestException("载具不存在!" + whereJson.getString("vehicle_code"));
}
int hasTask = ischBaseTaskService.count(new QueryWrapper<SchBaseTask>()
.eq("is_delete", "0")
.eq("vehicle_code2", whereJson.getString("vehicle_code"))
.lt("task_status", TaskStatusEnum.FINISHED.getCode()));
if (hasTask>0){
throw new BadRequestException("托盘"+whereJson.getString("vehicle_code")+"存在执行的任务");
if (hasTask > 0) {
throw new BadRequestException("托盘" + whereJson.getString("vehicle_code") + "存在执行的任务");
}
String pcsn = jsonExt.getString("pcsn");
if (StringUtils.isNotEmpty(pcsn)){
String pcsn = ext_jo.getPcsn();
if (StringUtils.isNotEmpty(pcsn)) {
JSONArray stIvtStructattr = WQLObject.getWQLObject("st_ivt_structattr").query("storagevehicle_code = '" + pcsn + "'").getResultJSONArray(0);
if (stIvtStructattr != null && stIvtStructattr.size() > 0) {
throw new BadRequestException("当前托盘"+whereJson.getString("vehicle_code")+"已经绑定木箱"+pcsn);
throw new BadRequestException("当前托盘" + whereJson.getString("vehicle_code") + "已经绑定木箱" + pcsn);
}
}
jsonExt.put("pcsn", whereJson.getString("box_no"));
extTab.update(jsonExt);
ext_jo.setPcsn(whereJson.getString("box_no"));
mdPbStoragevehicleextService.updateById(ext_jo);
inBussManageService.inTask(whereJson);
PdmProductSpecServiceImpl.doRecord(SpecEnum.RK_YC,null,Boolean.TRUE,null,subs);
JSONObject result = new JSONObject();
result.put("message", "入库成功!");
return result;

126
lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoInBoxTrussTask.java

@ -3,16 +3,25 @@ package org.nl.b_lms.sch.tasks;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import org.apache.commons.lang3.StringUtils;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.sch.task.dto.SchBaseTaskVO;
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -29,6 +38,9 @@ import static org.nl.wms.util.TaskUtil.getRoutePlanCode;
@Service
public class TwoInBoxTrussTask extends AbstractAcsTask {
@Autowired
private IschBaseTaskService ischBaseTaskService;
/**
* 处理类
*/
@ -39,29 +51,31 @@ public class TwoInBoxTrussTask extends AbstractAcsTask {
/*
* 下发给ACS时需要特殊处理
*/
JSONArray arr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0);
List<SchBaseTask> task_list = ischBaseTaskService.list(new LambdaQueryWrapper<SchBaseTask>()
.eq(SchBaseTask::getHandle_class, THIS_CLASS)
.eq(SchBaseTask::getTask_status, TaskStatusEnum.START_AND_POINT.getCode())
.eq(SchBaseTask::getIs_delete, "0"));
ArrayList<AcsTaskDto> resultList = new ArrayList<>();
for (int i = 0; i < arr.size(); i++) {
JSONObject json = arr.getJSONObject(i);
//JSONObject params = json.getJSONObject("params");
char dtl_type = json.getString("task_type").charAt(json.getString("task_type").length() - 1);
for (int i = 0; i < task_list.size(); i++) {
SchBaseTask task = task_list.get(i);
char dtl_type = task.getTask_type().charAt(task.getTask_type().length() - 1);
AcsTaskDto dto = AcsTaskDto.builder()
.ext_task_id(json.getString("task_id"))
.task_code(json.getString("task_code"))
.task_type(json.getString("acs_task_type"))
.start_device_code(json.getString("point_code1"))
.next_device_code(json.getString("point_code2"))
.route_plan_code(getRoutePlanCode(json.getString("point_code2")))
.vehicle_code(json.getString("vehicle_code"))
.priority(json.getString("priority"))
.ext_task_id(task.getTask_id())
.task_code(task.getTask_code())
.task_type(task.getAcs_task_type())
.start_device_code(task.getPoint_code1())
.next_device_code(task.getPoint_code2())
.route_plan_code(getRoutePlanCode(task.getPoint_code2()))
.vehicle_code(task.getVehicle_code())
.priority(task.getPriority())
.class_type(IOSEnum.ACS_TYPE.code("木箱入库行架任务"))
.dtl_type(String.valueOf(dtl_type))
.interaction_json(json.getJSONObject("request_param"))
.remark(json.getString("remark"))
.interaction_json((JSONObject) JSONObject.parse(task.getRequest_param()))
.remark(task.getRemark())
.product_area(IOSEnum.PRODUCT_AREA.code("BLK"))
.build();
dto.setClass_type(json.getString("point_code1").equals(IOSEnum.POINT_CODE.code("退货入库位"))
dto.setClass_type(task.getPoint_code1().equals(IOSEnum.POINT_CODE.code("退货入库位"))
? IOSEnum.ACS_TYPE.code("退货入库行架任务") : IOSEnum.ACS_TYPE.code("木箱入库行架任务")
);
@ -73,43 +87,34 @@ public class TwoInBoxTrussTask extends AbstractAcsTask {
@Override
@Transactional(rollbackFor = Exception.class)
public void updateTaskStatus(JSONObject taskObj, String status) {
// 任务表
WQLObject taskTab = WQLObject.getWQLObject("sch_base_task");
// 更新任务的参数
JSONObject map = new JSONObject();
SchBaseTask task = new SchBaseTask();
/*
* 1-执行中, 2-完成 ,0-acs取消
*/
// 执行中
if (status.equals(TaskStatusEnum.EXECUTING.getCode())) {
map.put("task_status", TaskStatusEnum.EXECUTING.getCode());
task.setTask_status(TaskStatusEnum.EXECUTING.getCode());
}
// 完成
if (status.equals(TaskStatusEnum.FINISHED.getCode())) {
map.put("task_status", TaskStatusEnum.FINISHED.getCode());
task.setTask_status(TaskStatusEnum.FINISHED.getCode());
}
// 取消
if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) {
if (taskObj.getIntValue("task_status") > Integer.valueOf(TaskStatusEnum.ISSUE.getCode())) {
throw new BadRequestException("任务已执行不能取消");
}
// 更新任务表删除字段
map.put("is_delete", IOSEnum.IS_NOTANDYES.code("是"));
task.setIs_delete(IOSEnum.IS_NOTANDYES.code("是"));
}
map.put("update_optid", SecurityUtils.getCurrentUserId());
map.put("update_optname", SecurityUtils.getCurrentNickName());
map.put("update_time", DateUtil.now());
WQLObject.getWQLObject("SCH_BASE_Task").update(map, "task_id = '" + taskObj.getString("task_id") + "'");
task.setUpdate_optid(SecurityUtils.getCurrentUserId());
task.setUpdate_optname(SecurityUtils.getCurrentNickName());
task.setUpdate_time(DateUtil.now());
ischBaseTaskService.update(task, new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getTask_id, task.getTask_id()));
}
@Override
@ -138,39 +143,44 @@ public class TwoInBoxTrussTask extends AbstractAcsTask {
throw new BadRequestException("终点不能为空!");
}
JSONObject json = new JSONObject();
json.put("task_id", IdUtil.getSnowflake(1, 1).nextId());
json.put("task_code", IdUtil.getSnowflake(1, 1).nextId());
json.put("task_type", form.getString("task_type"));
json.put("vehicle_code", form.getString("vehicle_code"));
json.put("vehicle_code2", form.getString("vehicle_code2"));
json.put("vehicle_type", form.getString("vehicle_type"));
json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
json.put("task_group_id", form.getLongValue("task_group_id"));
json.put("point_code1", form.getString("start_device_code"));
json.put("point_code2", form.getString("next_device_code"));
json.put("product_area", "BLK");
json.put("handle_class", this.getClass().getName());
json.put("create_id", SecurityUtils.getCurrentUserId());
json.put("create_name", SecurityUtils.getCurrentUsername());
json.put("create_time", DateUtil.now());
json.put("priority", "1");
json.put("acs_task_type", "6");
json.put("request_param", form.getString("request_param"));
WQLObject.getWQLObject("SCH_BASE_Task").insert(json);
return json.getString("task_id");
SchBaseTaskVO schBaseTaskVo = SchBaseTaskVO.builder()
.task_id(org.nl.common.utils.IdUtil.getStringId())
.task_code(org.nl.common.utils.IdUtil.getStringId())
.task_type(form.getString("task_type"))
.vehicle_code(form.getString("vehicle_code"))
//二次分配要用的类型
.vehicle_code2(form.getString("vehicle_code2"))
.vehicle_type(form.getString("vehicle_type"))
.task_status(TaskStatusEnum.START_AND_POINT.getCode())
.task_group_id(form.getString("task_group_id"))
.point_code1(form.getString("start_device_code"))
.point_code2(form.getString("next_device_code"))
.product_area("BLK")
.handle_class(THIS_CLASS)
.create_id(SecurityUtils.getCurrentUserId())
.create_name(SecurityUtils.getCurrentUsername())
.create_time(DateUtil.now())
.priority("1")
.acs_task_type(StrUtil.isEmpty(form.getString("acs_task_type")) ? PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务") : form.getString("acs_task_type"))
.request_param(form.getString("request_param"))
.build();
SchBaseTask task = new SchBaseTask();
BeanUtils.copyProperties(schBaseTaskVo, task);
ischBaseTaskService.save(task);
return task.getTask_id();
}
@Override
@Transactional(rollbackFor = Exception.class)
public void forceFinish(String task_id) {
JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0);
this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode());
SchBaseTask task_jo = ischBaseTaskService.getOne(new LambdaQueryWrapper<SchBaseTask>().eq(SchBaseTask::getTask_id, task_id));
updateTaskStatus(JSONObject.parseObject(JSON.toJSONString(task_jo)), TaskStatusEnum.FINISHED.getCode());
}
@Override
public void cancel(String task_id) {
JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0);
this.updateTaskStatus(taskObj, IOSEnum.ACS_RESULT.code("取消"));
SchBaseTask task_jo = ischBaseTaskService.getOne(new LambdaQueryWrapper<SchBaseTask>().eq(SchBaseTask::getTask_id, task_id));
updateTaskStatus(JSONObject.parseObject(JSON.toJSONString(task_jo)), IOSEnum.ACS_RESULT.code("取消"));
}
}

76
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/InBoxManageServiceImpl.java

@ -9,9 +9,14 @@ 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 lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.nl.b_lms.pdm.storagevehicleext.dao.MdPbStoragevehicleext;
import org.nl.b_lms.pdm.storagevehicleext.service.IMdPbStoragevehicleextService;
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
import org.nl.b_lms.pdm.subpackagerelation.service.IpdmBiSubpackagerelationService;
import org.nl.b_lms.sch.point.dao.SchBasePoint;
import org.nl.b_lms.sch.point.service.IschBasePointService;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
@ -37,6 +42,7 @@ import org.nl.wms.ext.mes.service.LmsToMesService;
import org.nl.wms.pda.mps.eum.RegionTypeEnum;
import org.nl.wms.pdm.bi.service.SubpackagerelationService;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.sch.service.TaskService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -91,6 +97,15 @@ public class InBoxManageServiceImpl implements InBoxManageService {
@Autowired
private InBussManageService inBussManageService;
@Autowired
private IMdPbStoragevehicleextService mdPbStoragevehicleextService;
@Autowired
private IpdmBiSubpackagerelationService ipdmBiSubpackagerelationService;
@Autowired
private IschBaseTaskService schBaseTaskService;
@Override
@Transactional(rollbackFor = Exception.class)
public void inBox(JSONObject whereJson) {
@ -115,11 +130,12 @@ public class InBoxManageServiceImpl implements InBoxManageService {
.eq("is_delete", "0")
.orderByDesc("task_id")
.last("limit 1"));
if (one!=null){
if (one != null) {
String vehicleCode2 = one.getVehicle_code2();
if (whereJson.getString("vehicle_code").equals(vehicleCode2)){
throw new BadRequestException("当前托盘"+whereJson.getString("vehicle_code")+"已经存在木箱入库任务"+one.getTask_code());
};
if (whereJson.getString("vehicle_code").equals(vehicleCode2)) {
throw new BadRequestException("当前托盘" + whereJson.getString("vehicle_code") + "已经存在木箱入库任务" + one.getTask_code());
}
;
}
//查询仓库是否存在相同木箱
JSONArray stIvtStructattr = WQLObject.getWQLObject("st_ivt_structattr").query("storagevehicle_code = '" + boxNo + "'").getResultJSONArray(0);
@ -370,7 +386,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
param.put("height", boxDao.getBox_high());
param.put("containerType", boxDao.getVehicle_type());
param.put("barcode", whereJson.getString("box_no") + "-9" );
param.put("barcode", whereJson.getString("box_no") + "-9");
//根据木箱高度,判断入库仓位的高度
String height = "";
String heightLevel1 = iSysParamService.findByCode("height_level_1").getValue();
@ -427,28 +443,18 @@ public class InBoxManageServiceImpl implements InBoxManageService {
.ge(SchBaseTask::getCreate_time, queryDate)
.le(SchBaseTask::getCreate_time, DateUtil.now())
);
if (hasCount>0) {
throw new BadRequestException("当前木箱【"+whereJson.getString("box_no")+"】在1个小时之内生成过行架任务!");
if (hasCount > 0) {
throw new BadRequestException("当前木箱【" + whereJson.getString("box_no") + "】在1个小时之内生成过行架任务!");
}
// 根据木箱号查询是否有托盘绑定关系,如果有则解绑
JSONObject jsonExt = WQLObject.getWQLObject("md_pb_storagevehicleext")
.query("pcsn = '" + whereJson.getString("box_no") + "'")
.uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonExt)) {
JSONObject param = new JSONObject();
param.put("pcsn", "");
WQLObject.getWQLObject("md_pb_storagevehicleext")
.update(param, "pcsn = '" + whereJson.getString("box_no") + "'");
MdPbStoragevehicleext ext_jo = mdPbStoragevehicleextService.getOne(new QueryWrapper<MdPbStoragevehicleext>().lambda().eq(MdPbStoragevehicleext::getPcsn, whereJson.getString("box_no")));
if (ObjectUtil.isNotEmpty(ext_jo)) {
mdPbStoragevehicleextService.update(
new UpdateWrapper<MdPbStoragevehicleext>().lambda().set(MdPbStoragevehicleext::getPcsn, "").eq(MdPbStoragevehicleext::getPcsn, whereJson.getString("box_no"))
);
}
// 更新子卷包装关系创建人
JSONObject param2 = new JSONObject();
param2.put("create_id", SecurityUtils.getCurrentUserId());
param2.put("create_name", SecurityUtils.getCurrentNickName());
WQLObject.getWQLObject("pdm_bi_subpackagerelation")
.update(param2, "package_box_sn = '" + whereJson.getString("box_no") + "'");
/*
* 查询mes木箱信息插入木箱信息表
*/
@ -457,14 +463,23 @@ public class InBoxManageServiceImpl implements InBoxManageService {
throw new BadRequestException("未查询到子卷包装信息!");
}
// 更新子卷包装关系创建人
ipdmBiSubpackagerelationService.update(new UpdateWrapper<PdmBiSubpackagerelation>().lambda()
.set(PdmBiSubpackagerelation::getCreate_id, SecurityUtils.getCurrentUserId())
.set(PdmBiSubpackagerelation::getCreate_name, SecurityUtils.getCurrentNickName())
.eq(PdmBiSubpackagerelation::getPackage_box_sn, whereJson.getString("box_no")));
//木箱信息从木箱表里维护
// lmsToMesService.momGetPackingInfo(whereJson);
//判断当前点位是否存在任务,如果存在则不生成任务
WQLObject wo_Task = WQLObject.getWQLObject("SCH_BASE_Task");
JSONObject jsonObject = wo_Task.query("point_code1 = '" + whereJson.getString("point_code") + "' AND task_status < '07' AND is_delete = '0'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonObject)) {
throw new BadRequestException("点位【" + jsonObject.getString("point_code1") + "】存在未完成的任务!");
SchBaseTask task_jo = schBaseTaskService.getOne(new LambdaQueryWrapper<SchBaseTask>()
.eq(SchBaseTask::getPoint_code1, whereJson.getString("point_code"))
.lt(SchBaseTask::getTask_status, "07")
.eq(SchBaseTask::getIs_delete, "0"));
if (ObjectUtil.isNotEmpty(task_jo)) {
throw new BadRequestException("点位【" + task_jo.getPoint_code1() + "】存在未完成的任务!");
}
@ -485,7 +500,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
JSONObject taskParam = new JSONObject();
taskParam.put("task_type", "010713");
taskParam.put("start_device_code", whereJson.getString("point_code"));
taskParam.put("next_device_code", "CK2005");
taskParam.put("next_device_code", IOSEnum.SPECIAL_POINTS.code("退货入库口"));
taskParam.put("vehicle_code", whereJson.getString("box_no"));
//taskParam.put("vehicle_code2", whereJson.getString("box_no"));
JSONObject param = new JSONObject();
@ -723,7 +738,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
// 如果是移库空并且仓位为空则报错
if (ObjectUtil.isNotEmpty(block_num) && ObjectUtil.isEmpty(jsonAttr)) {
throw new BadRequestException("转库任务巷道"+block_num+"仓位不足!");
throw new BadRequestException("转库任务巷道" + block_num + "仓位不足!");
}
// 为空则新找巷道
@ -767,6 +782,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
/**
* 同巷道移库查看库位
*
* @param jsonParam
* @return
*/
@ -778,7 +794,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
* 判断条件库区仓库是否启用是否删除未锁定没有载具
*/
String block_num = jsonParam.getString("move_block_num");
if (StringUtils.isEmpty(block_num)){
if (StringUtils.isEmpty(block_num)) {
throw new BadRequestException("同巷道分配库位巷道参数不能为空");
}
JSONArray structArray = attrTab.query("IFNULL(storagevehicle_code,'') = '' " +
@ -802,7 +818,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
// 为空则新找巷道
if (ObjectUtil.isEmpty(jsonAttr)) {
throw new BadRequestException("当前巷道"+block_num+"没有可用库位");
throw new BadRequestException("当前巷道" + block_num + "没有可用库位");
}
notInRowList.clear();

10
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/InBussManageServiceImpl.java

@ -304,16 +304,6 @@ public class InBussManageServiceImpl implements InBussManageService {
subs.add(pdmBiSubpackagerelation.getContainer_name());
}
String package_box_sn = (String) tableData.get(0).get("package_box_sn");
try {
JSONObject param_jo = new JSONObject();
param_jo.put("box_no", package_box_sn);
param_jo.put("box_weight", pdmBiSubpackagerelations.get(0).getBox_weight());
param_jo.put("container_name", subs);
lmsToMesServiceImpl.BoxDataCollectionSubmit2(param_jo);
} catch (Exception e) {
log.error("验箱回传MES异常,BoxDataCollectionSubmit2给MES传输子卷包装关系异常,木箱号为:" + package_box_sn + ",异常信息:" + e);
}
mst.put("tableData", tableData);
// 判断是否已经生成过入库单
JSONObject param = new JSONObject();

2
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/TwoInBussManageServiceImpl.java

@ -101,7 +101,7 @@ public class TwoInBussManageServiceImpl implements TwoInBussManageService {
structattrQuerry.setStor_id(jsonObject.getString("stor_id"));
structattrQuerry.setSect_id(jsonObject.getString("sect_id"));
structattrQuerry.setMaterial_id(jsonObject.getString("material_id"));
structattrQuerry.setStor_id(jsonObject.getString("vehicle_type"));
structattrQuerry.setVehicle_type(jsonObject.getString("vehicle_type"));
structattrQuerry.setHeight(result);

3
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/service/MaterialbaseService.java

@ -2,6 +2,7 @@ package org.nl.b_lms.storage_manage.md.service;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.b_lms.storage_manage.md.dao.MdMeMaterialBase;
import org.nl.wms.basedata.master.service.dto.MaterialbaseDto;
import org.springframework.data.domain.Pageable;
@ -14,7 +15,7 @@ import java.util.Map;
* @description 服务接口
* @date 2021-12-07
**/
public interface MaterialbaseService {
public interface MaterialbaseService extends IService<MdMeMaterialBase> {
/**
* 查询数据分页

3
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/service/impl/MaterialbaseServiceImpl.java

@ -11,6 +11,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.storage_manage.md.dao.MdMeMaterialBase;
@ -43,7 +44,7 @@ import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
@Slf4j
public class MaterialbaseServiceImpl implements MaterialbaseService {
public class MaterialbaseServiceImpl extends ServiceImpl<MdMeMaterialBaseMapper,MdMeMaterialBase> implements MaterialbaseService {
private final ClassstandardService classstandardService;
private final MdMeMaterialBaseMapper mdMeMaterialBaseMapper;

74
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/dao/mapper/StIvtStructattrMapper.xml

@ -14,11 +14,11 @@
AND attr.is_delete = '0'
AND attr.lock_type = '1'
AND IFNULL(attr.storagevehicle_code,'') = ''
AND attr.stor_id = param.stor_id
AND attr.sect_id = param.sect_id
AND attr.storagevehicle_type = param.vehicle_type
<if test="param.not_in_block_num != '' || param.not_in_block_num != null ">
AND attr.block_num != param.block_num
AND attr.stor_id = #{param.stor_id}
AND attr.sect_id = #{param.sect_id}
AND attr.storagevehicle_type = #{param.vehicle_type}
<if test="param.not_in_block_num != '' and param.not_in_block_num != null ">
AND attr.block_num != #{param.block_num}
</if>
<if test=" param.not_block != null ">
AND attr.block_num not in
@ -44,8 +44,8 @@
WHERE
attr.is_used = '1'
AND attr.is_delete = '0'
AND attr.stor_id = param.stor_id
AND attr.sect_id = param.sect_id
AND attr.stor_id = #{param.stor_id}
AND attr.sect_id = #{param.sect_id}
AND IFNULL(attr.storagevehicle_code,'') != ''
AND box.is_packing = '1'
@ -64,10 +64,10 @@
</if>
<if test="param.block_num != '' || param.block_num != null ">
AND attr.block_num == param.block_num
AND attr.block_num == #{param.block_num}
</if>
<if test="param.row_num != '' || param.row_num != null ">
AND attr.row_num != param.row_num
AND attr.row_num != #{param.row_num}
</if>
</select>
@ -84,35 +84,35 @@
WHERE
attr.is_used = '1'
AND attr.is_delete = '0'
AND attr.stor_id = param.stor_id
AND attr.sect_id = param.sect_id
AND attr.stor_id = #{param.stor_id}
AND attr.sect_id = #{param.sect_id}
AND IFNULL(attr.storagevehicle_code,'') != ''
AND box.is_packing = '1'
<if test="param.material_id != '' || param.material_id != null ">
AND mater.material_id == param.material_id
AND mater.material_id == #{param.material_id}
</if>
<if test="param.customer_name != '' || param.customer_name != null ">
AND sub.customer_name == param.customer_name
AND sub.customer_name == #{param.customer_name}
</if>
<if test="param.customer_name != '' || param.customer_name != null ">
AND sub.customer_name == param.customer_name
AND sub.customer_name == #{param.customer_name}
</if>
<if test="param.sale_order_name != '' || param.sale_order_name != null ">
AND sub.sale_order_name == param.sale_order_name
AND sub.sale_order_name == #{param.sale_order_name}
</if>
<if test="param.box_length != '' || param.box_length != null ">
AND sub.box_length == param.box_length
AND sub.box_length == #{param.box_length}
</if>
<if test="param.box_width != '' || param.box_width != null ">
AND sub.box_width == param.box_width
AND sub.box_width == #{param.box_width}
</if>
<if test="param.box_high != '' || param.box_high != null ">
AND sub.box_high == param.box_high
AND sub.box_high == #{param.box_high}
</if>
@ -145,10 +145,10 @@
AND attr.is_delete = '0'
AND attr.lock_type = '1'
AND IFNULL(attr.storagevehicle_code,'') != ''
AND attr.stor_id = param.stor_id
AND attr.sect_id = param.sect_id
AND attr.stor_id = #{param.stor_id}
AND attr.sect_id = #{param.sect_id}
AND attr.zdepth = '2'
AND attr.storagevehicle_type = param.vehicle_type
AND attr.storagevehicle_type = #{param.vehicle_type}
AND attr.height in
<foreach collection="param.height" open="(" close=")" separator="," index="height">
@ -156,23 +156,23 @@
</foreach>
<if test="param.block_num != '' || param.block_num != null ">
AND attr.block_num == param.block_num
AND attr.block_num == #{param.block_num}
</if>
<if test="param.product_name != '' || param.product_name != null ">
AND sub.product_name == param.product_name
AND sub.product_name == #{param.product_name}
</if>
<if test="param.sale_order_name != '' || param.sale_order_name != null ">
AND sub.sale_order_name == param.sale_order_name
AND sub.sale_order_name == #{param.sale_order_name}
</if>
<if test="param.box_length != '' || param.box_length != null ">
AND sub.box_length == param.box_length
AND sub.box_length == #{param.box_length}
</if>
<if test="param.box_width != '' || param.box_width != null ">
AND sub.box_width == param.box_width
AND sub.box_width == #{param.box_width}
</if>
<if test="param.box_high != '' || param.box_high != null ">
AND sub.box_high == param.box_high
AND sub.box_high == #{param.box_high}
</if>
order by attr.col_num,attr.layer_num ASC
@ -186,10 +186,10 @@
WHERE
attr.is_used = '1'
AND attr.is_delete = '0'
AND attr.sect_id = param.sect_id
AND attr.sect_id = #{param.sect_id}
<if test="param.block_num != '' || param.block_num != null ">
AND attr.block_num == param.block_num
AND attr.block_num == #{param.block_num}
</if>
</select>
@ -204,15 +204,15 @@
AND attr.is_delete = '0'
AND attr.lock_type = '1'
AND IFNULL(attr.storagevehicle_code,'') = ''
AND attr.stor_id = param.stor_id
AND attr.sect_id = param.sect_id
AND attr.storagevehicle_type = param.vehicle_type
AND attr.stor_id = #{param.stor_id}
AND attr.sect_id = #{param.sect_id}
AND attr.storagevehicle_type = #{param.vehicle_type}
AND attr.height in
<foreach collection="param.height" open="(" close=")" separator="," index="height">
#{height}
</foreach>
<if test="param.block_num != '' || param.block_num != null ">
AND attr.block_num == param.block_num
AND attr.block_num == #{param.block_num}
</if>
@ -238,16 +238,16 @@
WHERE
attr.is_used = '1'
AND attr.is_delete = '0'
AND attr.stor_id = param.stor_id
AND attr.sect_id = param.sect_id
AND attr.storagevehicle_type = param.vehicle_type
AND attr.stor_id = #{param.stor_id}
AND attr.sect_id = #{param.sect_id}
AND attr.storagevehicle_type = #{param.vehicle_type}
AND attr.height in
<foreach collection="param.height" open="(" close=")" separator="," index="height">
#{height}
</foreach>
<if test="param.block_num != '' || param.block_num != null ">
AND attr.block_num == param.block_num
AND attr.block_num == #{param.block_num}
</if>
</select>

Loading…
Cancel
Save