opt:优化二楼扫码单据出库查询,任务申请失败返回400;

This commit is contained in:
2025-03-20 11:26:02 +08:00
parent 71daa15f32
commit 9cecbf1be5
11 changed files with 60 additions and 59 deletions

View File

@@ -56,7 +56,7 @@ public class InterationUtil {
}else { }else {
error = response.getString("msg"); error = response.getString("msg");
} }
throw new BadRequestException("acs申请任务失败"+error); throw new BadRequestException("acs返回错误"+error);
} }
return response.toJavaObject(TableDataInfo.class); return response.toJavaObject(TableDataInfo.class);
} catch (Exception ex) { } catch (Exception ex) {

View File

@@ -3,13 +3,12 @@ package org.nl.wms.decision_manage.handler.decisioner.impl.diy;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.wms.decision_manage.handler.decisioner.Decisioner; import org.nl.wms.decision_manage.handler.decisioner.Decisioner;
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr; import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -24,34 +23,36 @@ public class DepthPriorityHandler extends Decisioner<StIvtStructattr, JSONObject
//现场1/4排深位 //现场1/4排深位
@Override @Override
public List<StIvtStructattr> handler(List<StIvtStructattr> list, JSONObject param) { public List<StIvtStructattr> handler(List<StIvtStructattr> list, JSONObject param) {
//深货位 long startTime1 = System.currentTimeMillis();
List<StIvtStructattr> depCollect = list.stream().filter(a -> a.getRow_num() == 1 || a.getRow_num() == 4).collect(Collectors.toList()); // 深货位
//浅货位 List<StIvtStructattr> depCollect = list.stream()
List<StIvtStructattr> shallowCollect = list.stream().filter(a -> a.getRow_num() == 2 || a.getRow_num() == 3).collect(Collectors.toList()); .filter(a -> a.getRow_num() == 1 || a.getRow_num() == 4)
List<StIvtStructattr> matchingCollect = new ArrayList<>(); .collect(Collectors.toList());
depCollect.forEach(r -> { // 浅货位
shallowCollect.forEach(s -> { List<StIvtStructattr> shallowCollect = list.stream()
.filter(a -> a.getRow_num() == 2 || a.getRow_num() == 3)
.collect(Collectors.toList());
for (StIvtStructattr r : depCollect) {
for (StIvtStructattr s : shallowCollect) {
String depCode = r.getCol_num() + "-" + r.getLayer_num(); String depCode = r.getCol_num() + "-" + r.getLayer_num();
String shallowCode = s.getCol_num() + "-" + s.getLayer_num(); String shallowCode = s.getCol_num() + "-" + s.getLayer_num();
if (r.getRow_num() == 1 && s.getRow_num() == 2) { if ((r.getRow_num() == 1 && s.getRow_num() == 2) ||
(r.getRow_num() == 4 && s.getRow_num() == 3)) {
if (depCode.equals(shallowCode)) { if (depCode.equals(shallowCode)) {
matchingCollect.add(r); log.info("深位优先分配结果: 存在深位并对应浅位无货的库位,分配结果:" + r.getStruct_code());
} log.info("获取深货位且浅货位无货仓位耗时:{}", System.currentTimeMillis() - startTime1);
} else if (r.getRow_num() == 4 && s.getRow_num() == 3) { return Collections.singletonList(r);
if (depCode.equals(shallowCode)) {
matchingCollect.add(r);
} }
} }
}); }
}); }
if (!CollectionUtils.isEmpty(matchingCollect)) { if (!depCollect.isEmpty()) {
log.info("深位优先分配结果: 存在深位并对应浅位无货的库位,分配结果:" + matchingCollect.get(0).getStruct_code());
return matchingCollect;
} else if (!CollectionUtils.isEmpty(depCollect)) {
log.info("深位优先分配结果: 存在深位但对应浅位有货的库位,分配结果:" + depCollect.get(0).getStruct_code()); log.info("深位优先分配结果: 存在深位但对应浅位有货的库位,分配结果:" + depCollect.get(0).getStruct_code());
log.info("获取深货位且浅货位有货仓位耗时:{}", System.currentTimeMillis() - startTime1);
return depCollect; return depCollect;
} }
log.info("深位优先分配结果: 不存在深位库位,分配结果:" + list.get(0).getStruct_code()); log.info("深位优先分配结果: 不存在深位库位,分配结果:" + list.get(0).getStruct_code());
log.info("获取深货位有货且浅货位无货仓位:{}", System.currentTimeMillis() - startTime1);
return list; return list;
} }

View File

@@ -92,9 +92,9 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
} }
if (ObjectUtils.isNotEmpty(shelfCodePointList)) { if (ObjectUtils.isNotEmpty(shelfCodePointList)) {
if (!shelfCodePointList.get(0).getLock_type().equals(StatusEnum.LOCK.code("无锁"))) { if (!shelfCodePointList.get(0).getLock_type().equals(StatusEnum.LOCK.code("无锁"))) {
throw new BadRequestException("该货架正在执行输送任务,状态为锁定,请等任务完成再绑!"); throw new BadRequestException("该货架正在执行输送任务,状态为锁定,请等任务完成再绑");
} }
//解锁 //解锁货架,清空货架库存
LambdaUpdateWrapper<SchBasePoint> wrapper1 = new LambdaUpdateWrapper<SchBasePoint>() LambdaUpdateWrapper<SchBasePoint> wrapper1 = new LambdaUpdateWrapper<SchBasePoint>()
.eq(SchBasePoint::getVehicle_code, shelfCode) .eq(SchBasePoint::getVehicle_code, shelfCode)
.set(SchBasePoint::getVehicle_code, null) .set(SchBasePoint::getVehicle_code, null)
@@ -145,13 +145,13 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
if (StringUtils.isNotBlank(pointCode)) { if (StringUtils.isNotBlank(pointCode)) {
queryWrapper.eq(SchBasePoint::getCode, pointCode); queryWrapper.eq(SchBasePoint::getCode, pointCode);
} }
if (StringUtils.isNotEmpty(getLockType)) { if (StringUtils.isNotBlank(getLockType)) {
queryWrapper.eq(SchBasePoint::getLock_type, getLockType); queryWrapper.eq(SchBasePoint::getLock_type, getLockType);
} }
if (StringUtils.isNotEmpty(pointType)) { if (StringUtils.isNotBlank(pointType)) {
queryWrapper.eq(SchBasePoint::getPoint_type, pointType); queryWrapper.eq(SchBasePoint::getPoint_type, pointType);
} }
if (StringUtils.isNotEmpty(vehicleIsNull)) { if (StringUtils.isNotBlank(vehicleIsNull)) {
boolean isNull = Boolean.parseBoolean(vehicleIsNull); boolean isNull = Boolean.parseBoolean(vehicleIsNull);
if (isNull) { if (isNull) {
queryWrapper.isNull(SchBasePoint::getVehicle_code); queryWrapper.isNull(SchBasePoint::getVehicle_code);

View File

@@ -109,8 +109,8 @@ public class SecondFloorOutStorageTask extends AbstractTask {
// 分配料架起点 // 分配料架起点
List<StructattrVechielDto> starIvtList = iStIvtStructattrService.getStructFromBillCode(Arrays.asList(billCode.split(",")), vehicleCode); List<StructattrVechielDto> starIvtList = iStIvtStructattrService.getStructFromBillCode(Arrays.asList(billCode.split(",")), vehicleCode);
if (ObjectUtils.isEmpty(starIvtList)) { if (ObjectUtils.isEmpty(starIvtList)) {
log.error("CTU出库任务单据载具:{}的物料在CTU库找不到仓位信息,请检查", vehicleCode); log.error("CTU出库任务该物料在CTU库找不到料箱:{},请检查", vehicleCode);
throw new BadRequestException("CTU出库任务单据载具:" + vehicleCode + "的物料在CTU库查找不到仓位信息,请检查"); throw new BadRequestException("CTU出库任务物料在CTU库中找不到料箱:" + vehicleCode + ",请检查");
} }
StructattrVechielDto structattrVechielDto = starIvtList.get(0); StructattrVechielDto structattrVechielDto = starIvtList.get(0);
if (StringUtils.isBlank(structattrVechielDto.getStruct_code()) || Objects.equals(structattrVechielDto.getQty(), BigDecimal.ZERO)) { if (StringUtils.isBlank(structattrVechielDto.getStruct_code()) || Objects.equals(structattrVechielDto.getQty(), BigDecimal.ZERO)) {

View File

@@ -8,7 +8,6 @@ import org.nl.common.utils.MapOf;
import org.nl.common.utils.RedissonUtils; import org.nl.common.utils.RedissonUtils;
import org.nl.wms.base_manage.vehicle.service.IBmVehicleInfoService; import org.nl.wms.base_manage.vehicle.service.IBmVehicleInfoService;
import org.nl.wms.base_manage.vehicle.service.dao.BmVehicleInfo; import org.nl.wms.base_manage.vehicle.service.dao.BmVehicleInfo;
import org.nl.wms.dispatch_manage.task.handler.impl.SecondFloorOutStorageTask;
import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService; import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService;
import org.nl.wms.external_system.acs.service.AcsToWmsService; import org.nl.wms.external_system.acs.service.AcsToWmsService;
import org.nl.wms.external_system.dto.InteracteDto; import org.nl.wms.external_system.dto.InteracteDto;
@@ -41,10 +40,10 @@ public class GateWayService {
String service = param.getService(); String service = param.getService();
String type = param.getType(); String type = param.getType();
//根据服务拆分不同的业务 //根据服务拆分不同的业务
if (service.equals("InStorage")){ if (service.equals("InStorage")){
RedissonUtils.lock(()->{ RedissonUtils.lock(()->{
acsToWmsService.applyTask(param.getService(), type, jsonObject); String taskCode = acsToWmsService.applyTask(param.getService(), type, jsonObject);
result.put("taskCode", taskCode);
},param.getService() + param.getType(),null); },param.getService() + param.getType(),null);
} }
if (service.equals("Task")){ if (service.equals("Task")){

View File

@@ -1,27 +1,16 @@
package org.nl.wms.external_system.acs.service; package org.nl.wms.external_system.acs.service;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
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 org.nl.common.TableDataInfo;
import org.nl.common.domain.exception.BadRequestException; import org.nl.common.domain.exception.BadRequestException;
import org.nl.common.enums.StatusEnum; import org.nl.common.enums.StatusEnum;
import org.nl.common.utils.InterationUtil;
import org.nl.common.utils.SpringContextHolder;
import org.nl.wms.dispatch_manage.task.handler.AbstractTask; import org.nl.wms.dispatch_manage.task.handler.AbstractTask;
import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService; import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService;
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask; import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
import org.nl.wms.external_system.dto.InteracteDto;
import org.nl.wms.flow_manage.flow.framework.process.nodeType.source.impl.MappingSourceDataTypeHandler;
import org.nl.wms.sync_manage.service.form_mapping.ISyncFormMappingService;
import org.nl.wms.sync_manage.service.form_mapping.dao.SyncFormMapping;
import org.slf4j.MDC;
import org.springframework.beans.factory.InitializingBean;
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 java.util.List;
import java.util.Map; import java.util.Map;
/* /*
@@ -47,18 +36,23 @@ public class AcsToWmsService {
@Autowired @Autowired
private ISchBaseTaskService iSchBaseTaskService; private ISchBaseTaskService iSchBaseTaskService;
public void applyTask(String service,String type,JSONObject data){ public String applyTask(String service, String type, JSONObject data) {
if (service.equals("InStorage")){ if ("InStorage".equals(service)) {
applyTaskMap.get(type).createTask(data); JSONObject task = applyTaskMap.get(type).createTask(data);
if (task != null) {
return task.getString("task_code");
} else {
throw new BadRequestException("出现异常,任务申请失败,申请参数为:" + type + "" + JSON.toJSONString(data) + ",请查看错误日志");
}
} }
return null;
} }
public void updateTask(String type,JSONObject data){
public void updateTask(String type, JSONObject data) {
String task_code = data.getString("task_code"); String task_code = data.getString("task_code");
SchBaseTask task = iSchBaseTaskService.getOne(new QueryWrapper<SchBaseTask>().eq("task_code", task_code) SchBaseTask task = iSchBaseTaskService.getOne(new QueryWrapper<SchBaseTask>().eq("task_code", task_code)
.lt("status", StatusEnum.FORM_STATUS.code("完成"))); .lt("status", StatusEnum.FORM_STATUS.code("完成")));
if (task == null){ if (task == null) {
throw new BadRequestException("更新失败:当前执行中的任务不存在"); throw new BadRequestException("更新失败:当前执行中的任务不存在");
} }
applyTaskMap.get(task.getTask_type()).updateStatus(data); applyTaskMap.get(task.getTask_type()).updateStatus(data);

View File

@@ -194,7 +194,6 @@
LEFT JOIN LEFT JOIN
bm_measure_unit u ON v.unit_id = u.unit_id bm_measure_unit u ON v.unit_id = u.unit_id
<where> <where>
v.is_delete = '0'
<if test="query.bill_code != null and query.bill_code != ''"> <if test="query.bill_code != null and query.bill_code != ''">
AND v.prd_ppbom_no = #{query.bill_code} AND v.prd_ppbom_no = #{query.bill_code}
</if> </if>

View File

@@ -147,6 +147,11 @@ public class PmFormDataDto implements Serializable {
* 批次号 * 批次号
*/ */
private String product_area; private String product_area;
/**
* 是否删除
*/
private String is_delete;
/** /**
* 载具 * 载具
*/ */

View File

@@ -305,15 +305,18 @@ public class PmFormDataServiceImpl extends ServiceImpl<PmFormDataMapper, PmFormD
Page page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize()); Page page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize());
List<PmFormDataDto> pmFormDataList = this.baseMapper.queryCtuOrderList(query); List<PmFormDataDto> pmFormDataList = this.baseMapper.queryCtuOrderList(query);
pmFormDataList.forEach(r -> { pmFormDataList.forEach(r -> {
if (r.getQty().compareTo(BigDecimal.ZERO)<=0) { if (r.getQty().compareTo(BigDecimal.ZERO)<=0&& "1".equals(r.getIs_delete())) {
r.setStatus("3"); r.setStatus("3");
r.setMaterial_status("出库"); r.setMaterial_status("扫码从产线取走");
} else if (r.getFrozen_qty().compareTo(BigDecimal.ZERO) > 0) { } else if (r.getFrozen_qty().compareTo(BigDecimal.ZERO) > 0&& "0".equals(r.getIs_delete())) {
r.setStatus("2"); r.setStatus("2");
r.setMaterial_status("正在出库"); r.setMaterial_status("正在进行出库搬运");
} else { } else if (r.getQty().compareTo(BigDecimal.ZERO) > 0&& "0".equals(r.getIs_delete())) {
r.setStatus("1"); r.setStatus("1");
r.setMaterial_status("未出库"); r.setMaterial_status("物料未出库");
} else {
r.setStatus("4");
r.setMaterial_status("物料异常,请联系仓管员");
} }
}); });
com.baomidou.mybatisplus.extension.plugins.pagination.Page<PmFormDataDto> dtoPage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page.getPages(), page.getPageSize(), page.getTotal()); com.baomidou.mybatisplus.extension.plugins.pagination.Page<PmFormDataDto> dtoPage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page.getPages(), page.getPageSize(), page.getTotal());

View File

@@ -335,7 +335,7 @@ export default {
setDefaultDate() { setDefaultDate() {
const now = new Date() const now = new Date()
const lastWeek = new Date() const lastWeek = new Date()
lastWeek.setDate(now.getDate() - 3) lastWeek.setDate(now.getDate() - 1)
const format = (date, time) => { const format = (date, time) => {
const yyyy = date.getFullYear() const yyyy = date.getFullYear()
const mm = String(date.getMonth() + 1).padStart(2, '0') const mm = String(date.getMonth() + 1).padStart(2, '0')

View File

@@ -281,7 +281,7 @@ export default {
setDefaultDate() { setDefaultDate() {
const now = new Date() const now = new Date()
const lastWeek = new Date() const lastWeek = new Date()
lastWeek.setDate(now.getDate() - 3) lastWeek.setDate(now.getDate() - 1)
const format = (date, time) => { const format = (date, time) => {
const yyyy = date.getFullYear() const yyyy = date.getFullYear()
const mm = String(date.getMonth() + 1).padStart(2, '0') const mm = String(date.getMonth() + 1).padStart(2, '0')