fix:新增装箱桁架
This commit is contained in:
@@ -208,8 +208,7 @@ public class PdmBiSubpackagerelationController {
|
||||
//@SaCheckPermission("@el.check(updateEntityList)")
|
||||
public ResponseEntity<Object> getPointCode(@RequestBody JSONObject whereJson) {
|
||||
Integer num = whereJson.getInteger("num");
|
||||
pdmBiSubpackagerelationService.getPointCode(num);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
return new ResponseEntity<>(pdmBiSubpackagerelationService.getPointCode(num),HttpStatus.OK);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -216,15 +216,13 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
//调用MES接口判断是否是NG卷
|
||||
JSONObject result_jo = new JSONObject();
|
||||
result_jo.put("container_name", whereJson.get("container_name"));
|
||||
//todo S把注释去掉
|
||||
// JSONObject jsonObject = lmsToMesServiceImpl.GetChildWeightIsSamplePDA(result_jo);
|
||||
// if (ObjectUtils.isEmpty(jsonObject) || !jsonObject.containsKey("result")) {
|
||||
// throw new BadRequestException("反馈内容有误," + jsonObject.toString());
|
||||
// }
|
||||
// if (!jsonObject.getBoolean("result")) {
|
||||
// throw new BadRequestException("MES查询出当前子卷【" + whereJson.get("container_name") + "】检测结果不通过,无法进行装箱,MES反馈内容为:【" + jsonObject.getString("rtdat") + "】");
|
||||
// }
|
||||
//todo E把注释去掉
|
||||
JSONObject jsonObject = lmsToMesServiceImpl.GetChildWeightIsSamplePDA(result_jo);
|
||||
if (ObjectUtils.isEmpty(jsonObject) || !jsonObject.containsKey("result")) {
|
||||
throw new BadRequestException("反馈内容有误," + jsonObject.toString());
|
||||
}
|
||||
if (!jsonObject.getBoolean("result")) {
|
||||
throw new BadRequestException("MES查询出当前子卷【" + whereJson.get("container_name") + "】检测结果不通过,无法进行装箱,MES反馈内容为:【" + jsonObject.getString("rtdat") + "】");
|
||||
}
|
||||
// if (ivtList.stream().noneMatch(r -> r.getPoint_status().equals(PackageInfoIvtEnum.POINT_STATUS.code("待检区")))) {
|
||||
// throw new BadRequestException("该子卷不在待检区,请检查!");
|
||||
// }
|
||||
@@ -364,7 +362,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
.eq("status", "0")
|
||||
.in("container_name", split));
|
||||
if (CollectionUtils.isEmpty(subList)) {
|
||||
throw new BadRequestException("当前子卷还为组盘");
|
||||
throw new BadRequestException("当前子卷还未组盘");
|
||||
}
|
||||
if (subList.size() != split.length) {
|
||||
throw new BadRequestException("子卷包装信息与子卷不相符合");
|
||||
@@ -379,19 +377,10 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
if (StringUtils.isEmpty(containerName)) {
|
||||
throw new BadRequestException("子卷编码不能为空");
|
||||
}
|
||||
String deviceCode = "ZXQ_1_1";
|
||||
int count = taskService.count(new QueryWrapper<SchBaseTask>()
|
||||
.eq("task_type", "010908")
|
||||
.eq("is_delete", "0")
|
||||
.lt("task_status", TaskStatusEnum.FINISHED.getCode()));
|
||||
int count2 = packageinfoivtService.count(new QueryWrapper<BstIvtPackageinfoivt>()
|
||||
.eq("point_status", PackageInfoIvtEnum.POINT_STATUS.code("装箱区"))
|
||||
.eq("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("合格品")));
|
||||
if (count + count2 > 8) {
|
||||
throw new BadRequestException("当前装箱区木箱任务已满,稍后再试");
|
||||
}
|
||||
|
||||
String[] split = containerName.split(",");
|
||||
|
||||
String deviceCode = this.getPointCode(split.length);
|
||||
|
||||
//理论毛重
|
||||
List<PdmBiSubpackagerelation> subList = this.list(new QueryWrapper<PdmBiSubpackagerelation>()
|
||||
.eq("status", "0")
|
||||
@@ -448,23 +437,23 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
if (ObjectUtil.isEmpty(浅Attr)) {
|
||||
throw new BadRequestException(boxAttr.getString("struct_code") + "对应浅货位信息不正确");
|
||||
}
|
||||
List<SchBaseTask> list = taskService.list(new QueryWrapper<SchBaseTask>()
|
||||
.eq("is_delete", "0")
|
||||
.and(wq -> wq.eq("point_code1", 浅Attr.getString("struct_code")).or().eq("point_code2", 浅Attr.getString("struct_code")))
|
||||
.lt("task_status", TaskStatusEnum.FINISHED.getCode()));
|
||||
if (ObjectUtil.isEmpty(浅Attr.getString("storagevehicle_code"))) {
|
||||
if (!浅Attr.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
|
||||
throw new BadRequestException("木箱货位" + boxAttr.getString("struct_code") + "的浅货位存在正在执行的任务");
|
||||
if (!浅Attr.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("未锁定")) && ObjectUtil.isNotEmpty(list)) {
|
||||
throw new BadRequestException("木箱货位" + boxAttr.getString("struct_code") + "的浅货位存在正在执行的任务" + list.get(0).getTask_code());
|
||||
}
|
||||
} else {
|
||||
if (浅Attr.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
|
||||
// 判断浅货位木箱和深货位木箱是否相同规格
|
||||
task_group_id = outBoxManageService.createBoxMove(浅Attr);
|
||||
} else {
|
||||
List<SchBaseTask> list = taskService.list(new QueryWrapper<SchBaseTask>()
|
||||
.eq("is_delete", "0")
|
||||
.eq("point_code1", 浅Attr.getString("struct_code"))
|
||||
.lt("task_status", TaskStatusEnum.FINISHED.getCode()));
|
||||
if (!CollectionUtils.isEmpty(list)) {
|
||||
throw new BadRequestException("当前木箱所在货位" + boxAttr.getString("struct_code") + "对应浅货位" + 浅Attr.getString("struct_code") + "存在任务" + 浅Attr.getString("task_code"));
|
||||
throw new BadRequestException("当前木箱所在货位" + boxAttr.getString("struct_code") + "对应浅货位" + 浅Attr.getString("struct_code") + "存在任务" + list.get(0).getTask_code());
|
||||
}
|
||||
throw new BadRequestException("当前木箱所在货位" + boxAttr.getString("struct_code") + "对应浅货位" + 浅Attr.getString("struct_code") + "被锁定" + 浅Attr.getString("task_code"));
|
||||
throw new BadRequestException("当前木箱所在货位" + boxAttr.getString("struct_code") + "对应浅货位" + 浅Attr.getString("struct_code") + "被锁定" + 浅Attr.getString("storagevehicle_code"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -639,10 +628,77 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
if (ObjectUtils.isEmpty(bstIvtPackageinfoivtList)) {
|
||||
throw new BadRequestException("没有可用的装箱区对接位");
|
||||
}
|
||||
|
||||
bstIvtPackageinfoivtList.forEach(r -> {
|
||||
int count = taskService.count(new QueryWrapper<SchBaseTask>()
|
||||
.eq("task_type", "010908")
|
||||
.eq("is_delete", "0")
|
||||
.eq("vehicle_code2", r.getBlock())
|
||||
.lt("task_status", TaskStatusEnum.FINISHED.getCode()));
|
||||
int count2 = packageinfoivtService.count(new QueryWrapper<BstIvtPackageinfoivt>()
|
||||
.eq("point_status", PackageInfoIvtEnum.POINT_STATUS.code("装箱区"))
|
||||
.eq("block", r.getBlock())
|
||||
.eq("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("合格品")));
|
||||
if (count + count2 + entitySize > 8) {
|
||||
bstIvtPackageinfoivtList.remove(r);
|
||||
}
|
||||
});
|
||||
|
||||
if (ObjectUtils.isEmpty(bstIvtPackageinfoivtList)) {
|
||||
throw new BadRequestException("当前装箱区木箱任务已满,稍后再试");
|
||||
}
|
||||
|
||||
String pointCode = "";
|
||||
//装箱区任务数
|
||||
List<Map<String, Object>> zxTaskCount = bstIvtPackageinfoivtMapper.getZxqTaskCount();
|
||||
if (ObjectUtils.isNotEmpty(zxTaskCount)) {
|
||||
Set<String> packageCodeSet = bstIvtPackageinfoivtList.stream()
|
||||
.map(BstIvtPackageinfoivt::getPoint_code)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
// 从zxTaskCount中过滤出bstIvtPackageinfoivtList不包含的point_code,并按count和point_code2排序
|
||||
List<Map<String, Object>> filteredZxTaskCount = zxTaskCount.stream()
|
||||
.filter(map -> {
|
||||
Object pointCodeObj = map.get("point_code");
|
||||
String code = pointCodeObj != null ? pointCodeObj.toString() : null;
|
||||
// 过滤掉包含在packageCodeSet中的,只保留包含的
|
||||
return code != null && packageCodeSet.contains(code);
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
return filteredZxTaskCount.get(0).get("point_code").toString();
|
||||
} else {
|
||||
pointCode = bstIvtPackageinfoivtList.get(0).getPoint_code();
|
||||
}
|
||||
|
||||
return pointCode;
|
||||
}
|
||||
|
||||
public String getPointCode2(Integer entitySize) {
|
||||
//装箱区对接位
|
||||
List<BstIvtPackageinfoivt> bstIvtPackageinfoivtList = bstIvtPackageinfoivtMapper.selectList(new LambdaQueryWrapper<BstIvtPackageinfoivt>()
|
||||
.eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("装箱位"))
|
||||
.eq(BstIvtPackageinfoivt::getIs_used, IOSEnum.IS_NOTANDYES.code("是"))
|
||||
.orderByAsc(BstIvtPackageinfoivt::getPoint_code));
|
||||
if (ObjectUtils.isEmpty(bstIvtPackageinfoivtList)) {
|
||||
throw new BadRequestException("没有可用的装箱区对接位");
|
||||
}
|
||||
|
||||
String deviceCode = "ZXQ_1_1";
|
||||
int count = taskService.count(new QueryWrapper<SchBaseTask>()
|
||||
.eq("task_type", "010908")
|
||||
.eq("is_delete", "0")
|
||||
.lt("task_status", TaskStatusEnum.FINISHED.getCode()));
|
||||
int count2 = packageinfoivtService.count(new QueryWrapper<BstIvtPackageinfoivt>()
|
||||
.eq("point_status", PackageInfoIvtEnum.POINT_STATUS.code("装箱区"))
|
||||
.eq("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("合格品")));
|
||||
if (count + count2 > 8) {
|
||||
throw new BadRequestException("当前装箱区木箱任务已满,稍后再试");
|
||||
}
|
||||
Map<String, Integer> resultMap = new LinkedHashMap<>();
|
||||
Set<String> zxIvtSet = bstIvtPackageinfoivtList.stream().map(BstIvtPackageinfoivt::getBlock).collect(Collectors.toSet());
|
||||
//装箱区任务数
|
||||
List<Map<String, Object>> zxTaskCount = bstIvtPackageinfoivtMapper.getZxqTaskCount(zxIvtSet);
|
||||
List<Map<String, Object>> zxTaskCount = bstIvtPackageinfoivtMapper.getZxqTaskCount();
|
||||
if (ObjectUtils.isNotEmpty(zxTaskCount)) {
|
||||
for (Map<String, Object> map : zxTaskCount) {
|
||||
String pointCode = map.get("point_code2").toString();
|
||||
@@ -673,7 +729,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
//任务数量超过10个不满足装箱任务创建
|
||||
result.removeIf(map -> {
|
||||
Map.Entry<String, Integer> entry = map.entrySet().iterator().next();
|
||||
return entry.getValue() + entitySize > 10;
|
||||
return entry.getValue() + entitySize > 8;
|
||||
});
|
||||
//获取数量最少的点位
|
||||
Optional<String> minPointCode = result.stream()
|
||||
|
||||
@@ -27,7 +27,7 @@ public interface BstIvtPackageinfoivtMapper extends BaseMapper<BstIvtPackageinfo
|
||||
/**
|
||||
* 获取待检区到装箱区的任务数量
|
||||
*/
|
||||
List<Map<String, Object>> getZxqTaskCount(Set<String> groupIds);
|
||||
List<Map<String, Object>> getZxqTaskCount();
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -12,26 +12,22 @@
|
||||
</select>
|
||||
<select id="getZxqTaskCount" resultType="java.util.Map">
|
||||
SELECT
|
||||
CASE
|
||||
WHEN t.task_type = '010704' THEN t.point_code2
|
||||
WHEN t.task_type = '010908' THEN t.vehicle_code2
|
||||
END AS point_code2,
|
||||
COUNT(*) AS count
|
||||
FROM sch_base_task t
|
||||
bp.point_code,
|
||||
COALESCE(COUNT(DISTINCT t.task_id), 0) AS count
|
||||
FROM
|
||||
bst_ivt_packageinfoivt bp -- 你的所有点位基准表
|
||||
LEFT JOIN sch_base_task t ON bp.point_code = t.point_code2
|
||||
AND t.task_type = '010704'
|
||||
AND t.task_status <![CDATA[ < ]]> '07'
|
||||
AND t.is_delete = '0'
|
||||
LEFT JOIN bst_ivt_packageinfoivt p ON t.point_code2 = p.point_code
|
||||
AND p.point_status = '5'
|
||||
WHERE
|
||||
t.task_type IN ('010704', '010908')
|
||||
AND t.create_time >= DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%s')
|
||||
AND t.task_status <![CDATA[ < ]]> '07'
|
||||
<if test="groupIds != null and groupIds.size() > 0">
|
||||
AND (t.task_type != '010908' OR t.vehicle_code2 IN
|
||||
<foreach item="code" collection="groupIds" open="(" separator="," close=")">#{code}</foreach>
|
||||
)
|
||||
</if>
|
||||
bp.point_code IN ('ZXQ_1_1', 'ZXQ_2_1') -- 指定需要的点位
|
||||
GROUP BY
|
||||
CASE
|
||||
WHEN t.task_type = '010704' THEN t.point_code2
|
||||
WHEN t.task_type = '010908' THEN t.vehicle_code2
|
||||
END
|
||||
bp.point_code
|
||||
ORDER BY
|
||||
count, bp.point_code;
|
||||
</select>
|
||||
<select id="getTaskList1" resultType="org.nl.b_lms.sch.task.dao.SchBaseTask">
|
||||
SELECT
|
||||
|
||||
@@ -168,9 +168,17 @@ public class TwoOutBoxTask extends AbstractAcsTask {
|
||||
attrTab.update(jsonAttr);
|
||||
//更新木箱信息
|
||||
JSONObject packageInfo = packageinfoivt.query("point_code = '" + jsonTask.getString("point_code2") + "'").uniqueResult(0);
|
||||
packageInfo.put("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空载具"));
|
||||
packageInfo.put("container_name", jsonTask.getString("vehicle_code"));
|
||||
packageinfoivt.update(packageInfo);
|
||||
if (packageInfo.getString("plan").equals("0")) {
|
||||
packageInfo.put("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空载具"));
|
||||
packageInfo.put("container_name", jsonTask.getString("vehicle_code"));
|
||||
packageinfoivt.update(packageInfo);
|
||||
}else {
|
||||
//校验当前目的地的木箱号与任务中的木箱号是否一致
|
||||
if (!packageInfo.getString("container_name").equals(jsonTask.getString("vehicle_code"))) {
|
||||
log.info("目的地的木箱号与任务中的木箱号不一致");
|
||||
}
|
||||
}
|
||||
|
||||
RedissonUtils.lock(c->{
|
||||
if (status.equals(TaskStatusEnum.FINISHED.getCode())) {
|
||||
immediateNotifyAcs(null);
|
||||
|
||||
@@ -181,6 +181,7 @@ public class AutoSendZxToDjw extends Prun{
|
||||
//子卷号
|
||||
param.put("frpModel", paperSize);
|
||||
param.put("barcode", containerName);
|
||||
param.put("isHave", "0");
|
||||
jo.put("request_param", param.toString());
|
||||
zxDjwTask.createTask(jo);
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package org.nl.wms.ext.acs.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import org.nl.b_lms.sch.point.dao.mapper.BstIvtPackageinfoivtMapper;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
@@ -178,6 +179,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
@Resource
|
||||
private SsxDjwTask ssxDjwTask;
|
||||
|
||||
@Resource
|
||||
private IbstIvtPackageinfoivtService ibstIvtPackageinfoivtService;
|
||||
|
||||
|
||||
@Autowired
|
||||
private ISysParamService iSysParamService;
|
||||
@@ -3041,6 +3045,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
public JSONObject getIsUncap(JSONObject param) {
|
||||
String material_barcode = param.getString("material_barcode");
|
||||
String vehicle_code = param.getString("vehicle_code");
|
||||
String task_code = param.getString("task");
|
||||
//干燥剂模板
|
||||
String desiccantTemplate = "6";
|
||||
//是否开盖
|
||||
@@ -3098,6 +3103,22 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
jsonObject.put("isUncap", isUncap);
|
||||
jsonObject.put("heightLevel", height);
|
||||
jsonObject.put("status", HttpStatus.OK.value());
|
||||
|
||||
//判断该任务是否属于空木箱出库任务
|
||||
SchBaseTask one = taskService.getOne(new LambdaQueryWrapper<SchBaseTask>().eq(SchBaseTask::getTask_code, task_code));
|
||||
if (one.getHandle_class().equals("org.nl.b_lms.sch.tasks.TwoOutBoxTask")){
|
||||
|
||||
BstIvtPackageinfoivt packageinfoivt = ibstIvtPackageinfoivtService.getOne(new LambdaQueryWrapper<BstIvtPackageinfoivt>()
|
||||
.eq(BstIvtPackageinfoivt::getPoint_code, one.getPoint_code2()));
|
||||
if (packageinfoivt.getPlan().equals("1")){
|
||||
//往redis里面添加空木箱队列
|
||||
if (redisUtils.lGetListSize(one.getPoint_code2()) == 0 || !redisUtils.lGetIndex(one.getPoint_code2(), -1).equals(material_barcode)){
|
||||
redisUtils.lSet(one.getPoint_code2(),material_barcode);
|
||||
}else {
|
||||
log.info("reids队列中的最后一个木箱与当前木箱一致");
|
||||
}
|
||||
}
|
||||
}
|
||||
return jsonObject;
|
||||
}
|
||||
|
||||
|
||||
@@ -212,7 +212,7 @@
|
||||
>
|
||||
设置站点
|
||||
</el-button>-->
|
||||
<el-button
|
||||
<!-- <el-button
|
||||
v-if="this.mstrow.bill_type !== '1011' && mstrow.stor_id !== '1582991156504039455'"
|
||||
slot="left"
|
||||
class="filter-item"
|
||||
@@ -224,7 +224,7 @@
|
||||
@click="oneSetPoint2"
|
||||
>
|
||||
设置站点
|
||||
</el-button>
|
||||
</el-button>-->
|
||||
<el-button
|
||||
v-if="this.mstrow.bill_type !== '1011'"
|
||||
slot="left"
|
||||
|
||||
Reference in New Issue
Block a user