fix:异常出库、NG卷校验
This commit is contained in:
@@ -166,8 +166,8 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
/**
|
||||
* 查询待检区木箱规格
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @param query 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
*/
|
||||
@Override
|
||||
public Object queryBoxSpec(Map query, Pageable pageQuery) {
|
||||
@@ -186,9 +186,9 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 根据订单号查询子卷信息
|
||||
*
|
||||
* @param whereJson 查询条件
|
||||
*/
|
||||
@Override
|
||||
@@ -213,6 +213,16 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
if (ObjectUtils.isEmpty(ivtList)) {
|
||||
throw new BadRequestException("该子卷未质检或品质不符合要求,请扫码质检!");
|
||||
}
|
||||
//调用MES接口判断是否是NG卷
|
||||
JSONObject result_jo = new JSONObject();
|
||||
result_jo.put("container_name", whereJson.get("container_name"));
|
||||
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("该子卷不在待检区,请检查!");
|
||||
// }
|
||||
@@ -276,11 +286,11 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateEntityList(JSONObject whereJson) {
|
||||
String deviceCode = "ZXQ_1_1";
|
||||
List<PdmBiSubpackagerelation> packagerelationList = JSONObject.parseArray(whereJson.getJSONArray("tableMater").toJSONString(), PdmBiSubpackagerelation.class);
|
||||
List<PdmBiSubpackagerelation> packagerelationList = JSONObject.parseArray(whereJson.getJSONArray("tableMater").toJSONString(), PdmBiSubpackagerelation.class);
|
||||
//子卷信息校验
|
||||
checkEntityList(whereJson, packagerelationList);
|
||||
//均衡获取木箱出库装箱区对接位
|
||||
//= getPointCode(packagerelationList.size());
|
||||
//= getPointCode(packagerelationList.size());
|
||||
List<String> workIdList = JSONObject.parseArray(whereJson.getJSONArray("tableMater").toJSONString(), PdmBiSubpackagerelation.class).stream()
|
||||
.map(PdmBiSubpackagerelation::getWorkorder_id)
|
||||
.map(String::valueOf)
|
||||
@@ -295,13 +305,13 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
.in("container_name", containerNameList));
|
||||
|
||||
for (BstIvtPackageinfoivt ivtPackageinfoivt : ivtList) {
|
||||
if (!ivtPackageinfoivt.getIvt_status().equals(PackageInfoIvtEnum.IVT_STATUS.code("合格品"))){
|
||||
throw new BadRequestException("当前子卷未质检"+ivtPackageinfoivt.getContainer_name());
|
||||
if (!ivtPackageinfoivt.getIvt_status().equals(PackageInfoIvtEnum.IVT_STATUS.code("合格品"))) {
|
||||
throw new BadRequestException("当前子卷未质检" + ivtPackageinfoivt.getContainer_name());
|
||||
}
|
||||
}
|
||||
List<PdmBiSlittingproductionplan> planList = iPdmBiSlittingproductionplanService.list(new LambdaQueryWrapper<PdmBiSlittingproductionplan>()
|
||||
.in(PdmBiSlittingproductionplan::getContainer_name, containerNameList)
|
||||
.eq(PdmBiSlittingproductionplan::getIs_delete,IOSEnum.IS_NOTANDYES.code("否"))
|
||||
.eq(PdmBiSlittingproductionplan::getIs_delete, IOSEnum.IS_NOTANDYES.code("否"))
|
||||
);
|
||||
List<PdmBiSubpackagerelation> subpackagerelations = this.list(new QueryWrapper<PdmBiSubpackagerelation>().in("workorder_id", workIdList));
|
||||
if (ObjectUtils.isEmpty(planList)) {
|
||||
@@ -310,9 +320,9 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
Optional<PdmBiSubpackagerelation> any = subpackagerelations.stream()
|
||||
.filter(sub -> sub.getStatus().equals("0") && StringUtils.isNotEmpty(sub.getPackage_box_sn()))
|
||||
.findAny();
|
||||
if (any.isPresent()){
|
||||
if (any.isPresent()) {
|
||||
PdmBiSubpackagerelation subpackagerelation = any.get();
|
||||
throw new BadRequestException(subpackagerelation.getPackage_box_sn()+"包装关系已存在"+subpackagerelation.getPackage_box_sn()+",如重新生成请确认MES跟LMS包装关系已解绑定");
|
||||
throw new BadRequestException(subpackagerelation.getPackage_box_sn() + "包装关系已存在" + subpackagerelation.getPackage_box_sn() + ",如重新生成请确认MES跟LMS包装关系已解绑定");
|
||||
}
|
||||
|
||||
BigDecimal totalWeight;
|
||||
@@ -338,23 +348,23 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
List<Long> collect = ivtList.stream().map(a -> a.getIvt_id()).collect(Collectors.toList());
|
||||
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>()
|
||||
.set("update_time", DateUtil.now())
|
||||
.in("ivt_id",collect));
|
||||
.in("ivt_id", collect));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List zjInBound(JSONObject whereJson) {
|
||||
String containerName = whereJson.getString("container_name");
|
||||
if (StringUtils.isEmpty(containerName)){
|
||||
if (StringUtils.isEmpty(containerName)) {
|
||||
throw new BadRequestException("子卷编码不能为空");
|
||||
}
|
||||
String[] split = containerName.split(",");
|
||||
List<PdmBiSubpackagerelation> subList = this.list(new QueryWrapper<PdmBiSubpackagerelation>()
|
||||
.eq("status", "0")
|
||||
.in("container_name", split));
|
||||
if (CollectionUtils.isEmpty(subList)){
|
||||
if (CollectionUtils.isEmpty(subList)) {
|
||||
throw new BadRequestException("当前子卷还为组盘");
|
||||
}
|
||||
if (subList.size() != split.length){
|
||||
if (subList.size() != split.length) {
|
||||
throw new BadRequestException("子卷包装信息与子卷不相符合");
|
||||
}
|
||||
return subList;
|
||||
@@ -364,7 +374,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
@Transactional
|
||||
public void zjInBoundConfirm(JSONObject param) {
|
||||
String containerName = param.getString("search");
|
||||
if (StringUtils.isEmpty(containerName)){
|
||||
if (StringUtils.isEmpty(containerName)) {
|
||||
throw new BadRequestException("子卷编码不能为空");
|
||||
}
|
||||
String deviceCode = "ZXQ_1_1";
|
||||
@@ -373,9 +383,9 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
.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){
|
||||
.eq("point_status", PackageInfoIvtEnum.POINT_STATUS.code("装箱区"))
|
||||
.eq("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("合格品")));
|
||||
if (count + count2 > 8) {
|
||||
throw new BadRequestException("当前装箱区木箱任务已满,稍后再试");
|
||||
}
|
||||
|
||||
@@ -384,63 +394,63 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
List<PdmBiSubpackagerelation> subList = this.list(new QueryWrapper<PdmBiSubpackagerelation>()
|
||||
.eq("status", "0")
|
||||
.in("container_name", split));
|
||||
if (subList.size() != split.length){
|
||||
if (subList.size() != split.length) {
|
||||
throw new BadRequestException("子卷包装信息与子卷不相符合");
|
||||
}
|
||||
Set<String> collect = subList.stream().map(PdmBiSubpackagerelation::getPackage_box_sn).collect(Collectors.toSet());
|
||||
Set<String> containers = subList.stream().map(PdmBiSubpackagerelation::getContainer_name).collect(Collectors.toSet());
|
||||
List<String> containerList = subList.stream().map(PdmBiSubpackagerelation::getContainer_name).collect(Collectors.toList());
|
||||
if (collect.size() == 0){
|
||||
if (collect.size() == 0) {
|
||||
throw new BadRequestException("当前子卷还未进行装箱组盘操作");
|
||||
}
|
||||
if (collect.size()>1){
|
||||
throw new BadRequestException("当前子卷不属于同一组"+ collect);
|
||||
if (collect.size() > 1) {
|
||||
throw new BadRequestException("当前子卷不属于同一组" + collect);
|
||||
}
|
||||
if (subList.get(0).getQuanlity_in_box().intValue()!= split.length){
|
||||
throw new BadRequestException("当前木箱"+subList.get(0).getQuanlity_in_box()+"要装箱的子卷"+split.length+"未装完");
|
||||
if (subList.get(0).getQuanlity_in_box().intValue() != split.length) {
|
||||
throw new BadRequestException("当前木箱" + subList.get(0).getQuanlity_in_box() + "要装箱的子卷" + split.length + "未装完");
|
||||
}
|
||||
String boxSn = subList.get(0).getPackage_box_sn();
|
||||
//查询木箱所在货位
|
||||
WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr");
|
||||
JSONArray boxAttrs = attrTab.query("storagevehicle_code = '" + boxSn + "' and sect_id = '1748219897940414464'").getResultJSONArray(0);
|
||||
if (boxAttrs.size() == 0){
|
||||
throw new BadRequestException("当前木箱"+boxSn+"库存信息查询不到,请确认");
|
||||
if (boxAttrs.size() == 0) {
|
||||
throw new BadRequestException("当前木箱" + boxSn + "库存信息查询不到,请确认");
|
||||
}
|
||||
JSONObject boxAttr = boxAttrs.getJSONObject(0);
|
||||
JSONObject boxAttr = boxAttrs.getJSONObject(0);
|
||||
List<SchBaseTask> hasTask = taskService.list(new QueryWrapper<SchBaseTask>()
|
||||
.select("point_code2")
|
||||
.eq("is_delete", "0")
|
||||
.eq("point_code1", boxAttr.getString("struct_code"))
|
||||
.lt("task_status", TaskStatusEnum.FINISHED.getCode()));
|
||||
if (!CollectionUtils.isEmpty(hasTask)){
|
||||
if (!CollectionUtils.isEmpty(hasTask)) {
|
||||
boolean zxq = hasTask.stream().map(a -> a.getPoint_code2()).filter(a -> a.contains("ZXQ")).findAny().isPresent();
|
||||
if (zxq){
|
||||
if (zxq) {
|
||||
throw new BadRequestException("当前子卷正在执行装箱入库操作");
|
||||
}else{
|
||||
throw new BadRequestException("当前空木箱"+boxSn+"存在正在执行的任务,稍后再操作");
|
||||
} else {
|
||||
throw new BadRequestException("当前空木箱" + boxSn + "存在正在执行的任务,稍后再操作");
|
||||
}
|
||||
}
|
||||
// 查询木箱对应的托盘号
|
||||
JSONObject jsonVeExt = WQLObject.getWQLObject("md_pb_storagevehicleext").query("pcsn = '" + boxSn + "'")
|
||||
.uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(jsonVeExt)) {
|
||||
throw new BadRequestException("此木箱没有绑定托盘号!"+boxSn);
|
||||
throw new BadRequestException("此木箱没有绑定托盘号!" + boxSn);
|
||||
}
|
||||
//子卷到装箱区
|
||||
agvTransfer(containers, deviceCode, boxSn);
|
||||
String task_group_id = null;
|
||||
if (boxAttr.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("深"))) {
|
||||
JSONObject 浅Attr = attrTab
|
||||
.query("zdepth = '1' and row_num = '"+boxAttr.getString("row_num")+"' and col_num = '" + boxAttr.getString("col_num") + "' and layer_num = '"+boxAttr.getString("layer_num")+"'")
|
||||
.query("zdepth = '1' and row_num = '" + boxAttr.getString("row_num") + "' and col_num = '" + boxAttr.getString("col_num") + "' and layer_num = '" + boxAttr.getString("layer_num") + "'")
|
||||
.uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(浅Attr)){
|
||||
throw new BadRequestException(boxAttr.getString("struct_code")+"对应浅货位信息不正确");
|
||||
if (ObjectUtil.isEmpty(浅Attr)) {
|
||||
throw new BadRequestException(boxAttr.getString("struct_code") + "对应浅货位信息不正确");
|
||||
}
|
||||
if (ObjectUtil.isEmpty(浅Attr.getString("storagevehicle_code"))){
|
||||
if (ObjectUtil.isEmpty(浅Attr.getString("storagevehicle_code"))) {
|
||||
if (!浅Attr.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
|
||||
throw new BadRequestException("木箱货位"+boxAttr.getString("struct_code")+"的浅货位存在正在执行的任务");
|
||||
throw new BadRequestException("木箱货位" + boxAttr.getString("struct_code") + "的浅货位存在正在执行的任务");
|
||||
}
|
||||
}else {
|
||||
} else {
|
||||
if (浅Attr.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("未锁定"))) {
|
||||
// 判断浅货位木箱和深货位木箱是否相同规格
|
||||
task_group_id = outBoxManageService.createBoxMove(浅Attr);
|
||||
@@ -449,11 +459,11 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
.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("task_code"));
|
||||
if (!CollectionUtils.isEmpty(list)) {
|
||||
throw new BadRequestException("当前木箱所在货位" + boxAttr.getString("struct_code") + "对应浅货位存在任务" + 浅Attr.getString("task_code"));
|
||||
}
|
||||
}else {
|
||||
throw new BadRequestException("当前木箱所在货位"+boxAttr.getString("struct_code")+"对应浅货位存在任务"+浅Attr.getString("task_code"));
|
||||
} else {
|
||||
throw new BadRequestException("当前木箱所在货位" + boxAttr.getString("struct_code") + "对应浅货位存在任务" + 浅Attr.getString("task_code"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -462,7 +472,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
pdmBiContainerinbound.setContainer_name(containerName);
|
||||
pdmBiContainerinbound.setBox(boxSn);
|
||||
Boolean inbound = param.getBoolean("inbound");
|
||||
if (inbound!=null){
|
||||
if (inbound != null) {
|
||||
pdmBiContainerinbound.setInbound(inbound);
|
||||
}
|
||||
iPdmBiContainerinboundService.save(pdmBiContainerinbound);
|
||||
@@ -482,7 +492,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
attrTab.update(boxAttr);
|
||||
twoOutBoxTask.createTask(jsonTaskParam);
|
||||
twoOutBoxTask.immediateNotifyAcs(null);
|
||||
PdmProductSpecServiceImpl.doRecord(SpecEnum.ZXRK,null,Boolean.TRUE,null,containerList);
|
||||
PdmProductSpecServiceImpl.doRecord(SpecEnum.ZXRK, null, Boolean.TRUE, null, containerList);
|
||||
|
||||
}
|
||||
|
||||
@@ -490,7 +500,8 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
JSONArray jsonArray = whereJson.getJSONArray("tableMater");
|
||||
if (jsonArray == null || jsonArray.size() == 0) {
|
||||
throw new BadRequestException("无选中子卷信息");
|
||||
} if (jsonArray == null || jsonArray.size() == 0) {
|
||||
}
|
||||
if (jsonArray == null || jsonArray.size() == 0) {
|
||||
throw new BadRequestException("无选中子卷信息");
|
||||
}
|
||||
if (ObjectUtils.isEmpty(packagerelationList)) {
|
||||
@@ -526,8 +537,6 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 空木箱绑定
|
||||
*/
|
||||
@@ -561,7 +570,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
updateWrapper.in("workorder_id", workIdList);
|
||||
pdmBiSubpackagerelationMapper.update(null, updateWrapper);
|
||||
//给MES传输子卷包装关系
|
||||
PdmProductSpecServiceImpl.doRecord(SpecEnum.BZ,null,Boolean.TRUE,null,containerNameList.stream().collect(Collectors.toList()));
|
||||
PdmProductSpecServiceImpl.doRecord(SpecEnum.BZ, null, Boolean.TRUE, null, containerNameList.stream().collect(Collectors.toList()));
|
||||
CompletableFuture.runAsync(() -> {
|
||||
try {
|
||||
log.error("----回传子卷包装关系----");
|
||||
@@ -670,7 +679,6 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 多选删除
|
||||
*
|
||||
@@ -749,13 +757,13 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
List<BstIvtPackageinfoivt> djqPointList = packageinfoivtService
|
||||
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
|
||||
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
|
||||
.in(BstIvtPackageinfoivt::getContainer_name,containerNameList));
|
||||
if (CollectionUtils.isEmpty(djqPointList)){
|
||||
throw new BadRequestException(containerNameList+"子卷信息不存在");
|
||||
.in(BstIvtPackageinfoivt::getContainer_name, containerNameList));
|
||||
if (CollectionUtils.isEmpty(djqPointList)) {
|
||||
throw new BadRequestException(containerNameList + "子卷信息不存在");
|
||||
}
|
||||
boolean hasNo = djqPointList.stream().anyMatch(a -> !a.getIvt_status().equals(PackageInfoIvtEnum.IVT_STATUS.code("合格品")));
|
||||
if (hasNo){
|
||||
throw new BadRequestException(containerNameList+"子卷未质检合格");
|
||||
if (hasNo) {
|
||||
throw new BadRequestException(containerNameList + "子卷未质检合格");
|
||||
}
|
||||
List<BstIvtPackageinfoivt> djqPoints = djqPointList.stream().filter(a -> a.getPoint_status().equals(PackageInfoIvtEnum.POINT_STATUS.code("待检区"))).collect(Collectors.toList());
|
||||
//任务组id
|
||||
@@ -767,14 +775,14 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
|
||||
.eq(SchBaseTask::getVehicle_code, item.getContainer_name()).eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("待检区->装箱区"))
|
||||
.eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否")).lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()));
|
||||
if (CollectionUtils.isEmpty(taskList)){
|
||||
if (CollectionUtils.isEmpty(taskList)) {
|
||||
JSONObject jo = new JSONObject();
|
||||
//确定搬运任务不执行
|
||||
jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("待检区->装箱区"));
|
||||
jo.put("vehicle_code", item.getContainer_name());
|
||||
jo.put("point_code1", item.getPoint_code());
|
||||
jo.put("date",now);
|
||||
jo.put("task_step",i1);
|
||||
jo.put("date", now);
|
||||
jo.put("task_step", i1);
|
||||
jo.put("task_status", TaskStatusEnum.SURE_START.getCode());
|
||||
jo.put("vehicle_code2", groupId);
|
||||
zxqTask.createTaskReturnTask(jo);
|
||||
@@ -786,39 +794,39 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
@Override
|
||||
public Map toEndSubpackagerelation(String code) {
|
||||
HashMap result = MapOf.of("status", HttpStatus.OK.value());
|
||||
result.put("message", code+"子卷包装解除成功");
|
||||
if (StringUtils.isEmpty(code)){
|
||||
result.put("message", code + "子卷包装解除成功");
|
||||
if (StringUtils.isEmpty(code)) {
|
||||
throw new BadRequestException("子卷编码不能为空");
|
||||
}
|
||||
PdmBiSubpackagerelation containerName = this.getOne(new QueryWrapper<PdmBiSubpackagerelation>().eq("container_name", code));
|
||||
if (containerName==null){
|
||||
throw new BadRequestException("当前子卷"+code+"还未生成子卷包装");
|
||||
if (containerName == null) {
|
||||
throw new BadRequestException("当前子卷" + code + "还未生成子卷包装");
|
||||
}
|
||||
if (SUBEnum.STATUS.code("入库").equals(containerName.getStatus())
|
||||
||SUBEnum.STATUS.code("出库").equals(containerName.getStatus())){
|
||||
throw new BadRequestException("当前子卷"+code+"已完成出入库不允许手动解除");
|
||||
|| SUBEnum.STATUS.code("出库").equals(containerName.getStatus())) {
|
||||
throw new BadRequestException("当前子卷" + code + "已完成出入库不允许手动解除");
|
||||
}
|
||||
if (StringUtils.isNotEmpty(containerName.getPackage_box_sn())){
|
||||
if (StringUtils.isNotEmpty(containerName.getPackage_box_sn())) {
|
||||
String packageBoxSn = containerName.getPackage_box_sn();
|
||||
WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr");
|
||||
JSONObject attr = attrTab.query("storagevehicle_code = '" + packageBoxSn + "'").uniqueResult(0);
|
||||
if (ObjectUtils.isNotEmpty(attr)){
|
||||
if (ObjectUtils.isNotEmpty(attr)) {
|
||||
String structCode = attr.getString("struct_code");
|
||||
int count = taskService.count(new QueryWrapper<SchBaseTask>()
|
||||
.eq("task_type", "010704")
|
||||
.eq("is_delete", "0")
|
||||
.eq("point_code1", structCode)
|
||||
.lt("task_status", TaskStatusEnum.FINISHED.getCode()));
|
||||
if (count>0){
|
||||
if (count > 0) {
|
||||
throw new BadRequestException("当前子卷已经生成装箱入库任务,不允许直接解绑");
|
||||
}
|
||||
attr.put("lock_type","1");
|
||||
attr.put("lock_type", "1");
|
||||
attrTab.update(attr);
|
||||
}
|
||||
}
|
||||
this.removeById(containerName.getWorkorder_id());
|
||||
result.put("message", code+"子卷包装解除成功,同时确认MES装箱以解绑定");
|
||||
PdmProductSpecServiceImpl.doRecord(SpecEnum.BZ_REMOVE,MapOf.of("子卷编号",code),Boolean.TRUE,null,code);
|
||||
result.put("message", code + "子卷包装解除成功,同时确认MES装箱以解绑定");
|
||||
PdmProductSpecServiceImpl.doRecord(SpecEnum.BZ_REMOVE, MapOf.of("子卷编号", code), Boolean.TRUE, null, code);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -836,12 +844,12 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
public void boxReturn(JSONObject whereJson) {
|
||||
String deviceCode = whereJson.getString("device_code");
|
||||
String box = whereJson.getString("box");
|
||||
if (StringUtils.isEmpty(deviceCode)||StringUtils.isEmpty(box)){
|
||||
if (StringUtils.isEmpty(deviceCode) || StringUtils.isEmpty(box)) {
|
||||
throw new BadRequestException("参数不全");
|
||||
}
|
||||
PdmBiSubpackagerelation one = this.getOne(new QueryWrapper<PdmBiSubpackagerelation>()
|
||||
.eq("container_name", whereJson.getString("container_name")));
|
||||
if (one!=null){
|
||||
if (one != null) {
|
||||
throw new BadRequestException("包装关系存在,请先在MES和LMS解绑包装关系");
|
||||
}
|
||||
BstIvtBoxinfo bstIvtBoxinfo = bstIvtBoxinfoMapper.selectOne(new LambdaQueryWrapper<BstIvtBoxinfo>()
|
||||
@@ -861,16 +869,16 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
} else {
|
||||
height = "3";
|
||||
}
|
||||
acsParam.put("device_code",deviceCode);
|
||||
acsParam.put("sub_volume","BR"+box);
|
||||
acsParam.put("height_level",height);
|
||||
acsParam.put("product_area","BLK");
|
||||
AcsUtil.notifyAcsObject("api/wms/returnBox", acsParam);
|
||||
acsParam.put("device_code", deviceCode);
|
||||
acsParam.put("sub_volume", "BR" + box);
|
||||
acsParam.put("height_level", height);
|
||||
acsParam.put("product_area", "BLK");
|
||||
AcsUtil.notifyAcsObject("api/wms/returnBox", acsParam);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void downloadData(Integer day, HttpServletResponse response) {
|
||||
if (day>3){
|
||||
if (day > 3) {
|
||||
throw new BadRequestException("只能导出前三天数据");
|
||||
}
|
||||
Date time = DateUtil.offsetDay(new Date(), -day);
|
||||
@@ -884,57 +892,57 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
JSONObject logPage = luceneLogService.query(query);
|
||||
//forcedFeedShaft
|
||||
int total = logPage.getIntValue("total");
|
||||
List<Map<String,String>> log = new ArrayList<>();
|
||||
if (total>0){
|
||||
PageResult<LogRepositoryDTO> page = (PageResult)logPage.get("page");
|
||||
List<Map<String, String>> log = new ArrayList<>();
|
||||
if (total > 0) {
|
||||
PageResult<LogRepositoryDTO> page = (PageResult) logPage.get("page");
|
||||
for (LogRepositoryDTO dto : page) {
|
||||
String message = dto.getMessage();
|
||||
if (!StringUtils.isEmpty(message)){
|
||||
if (!StringUtils.isEmpty(message)) {
|
||||
String requestTime = dto.getRequestTime();
|
||||
int start = message.indexOf("{");
|
||||
int end = message.lastIndexOf("}");
|
||||
if (start>0 && end>start){
|
||||
if (start > 0 && end > start) {
|
||||
String substring = message.substring(start, end + 1);
|
||||
JSONObject object = JSONObject.parseObject(substring);
|
||||
String deviceCode = object.getString("device_code");
|
||||
log.add(MapOf.of("呼叫时间",requestTime,"设备",deviceCode));
|
||||
log.add(MapOf.of("呼叫时间", requestTime, "设备", deviceCode));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
List<Map<String,String>> databases = this.baseMapper.downloadData(time.toString());
|
||||
List<Map<String, String>> databases = this.baseMapper.downloadData(time.toString());
|
||||
List<Map<String, String>> ioData = new ArrayList<>();
|
||||
int max = Math.max(databases.size(), log.size());
|
||||
for (int i = 0; i < max; i++) {
|
||||
Map<String, String> item = new HashMap<>();
|
||||
if (databases.size()>i){
|
||||
if (databases.size() > i) {
|
||||
Map<String, String> item1 = databases.get(i);
|
||||
item.putAll(item1);
|
||||
}else {
|
||||
item.put("下卷设备","");
|
||||
item.put("下卷开始","");
|
||||
item.put("下卷结束","");
|
||||
} else {
|
||||
item.put("下卷设备", "");
|
||||
item.put("下卷开始", "");
|
||||
item.put("下卷结束", "");
|
||||
}
|
||||
if (log.size()>i){
|
||||
if (log.size() > i) {
|
||||
Map<String, String> item2 = log.get(i);
|
||||
item.putAll(item2);
|
||||
}else {
|
||||
item.put("设备","");
|
||||
item.put("呼叫时间","");
|
||||
} else {
|
||||
item.put("设备", "");
|
||||
item.put("呼叫时间", "");
|
||||
}
|
||||
item.put("分割","");
|
||||
if (item.keySet().size()==6){
|
||||
item.put("分割", "");
|
||||
if (item.keySet().size() == 6) {
|
||||
ioData.add(item);
|
||||
}
|
||||
}
|
||||
String[] strings = new String[6];
|
||||
strings[0] = "下卷设备";
|
||||
strings[1] ="下卷开始";
|
||||
strings[2] ="下卷结束";
|
||||
strings[1] = "下卷开始";
|
||||
strings[2] = "下卷结束";
|
||||
strings[3] = "分割";
|
||||
strings[4] = "设备";
|
||||
strings[5] = "呼叫时间";
|
||||
new FileUtil().downloadExcelIO(ioData,strings,response);
|
||||
new FileUtil().downloadExcelIO(ioData, strings, response);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -36,5 +36,6 @@ public interface BstIvtPackageinfoivtMapper extends BaseMapper<BstIvtPackageinfo
|
||||
List<SchBaseTask> getTaskList(Set<String> pointCodes1, Set<String> pointCodes2, Set<String> pointCodes3, Set<String> pointCodes4);
|
||||
|
||||
List<BstIvtPackageinfoivt> selectNoTaskPoint(@Param("pointStatus") String pointStatus, @Param("ivtStatus")String ivtStatus);
|
||||
List<BstIvtPackageinfoivt> selectNoTaskPoint2(@Param("pointStatus") String pointStatus, @Param("ivtStatus")String ivtStatus);
|
||||
List<BstIvtPackageinfoivt> selectNoTargetTaskPoint(@Param("pointStatus") String pointStatus, @Param("ivtStatus")String ivtStatus);
|
||||
}
|
||||
|
||||
@@ -90,6 +90,15 @@
|
||||
AND (t.point_code1 = p.point_code OR t.point_code2 = p.point_code OR t.point_code3 = p.point_code OR t.point_code4 = p.point_code)
|
||||
AND t.is_delete = '0')
|
||||
</select>
|
||||
<select id="selectNoTaskPoint2" resultType="org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt">
|
||||
select p.*
|
||||
from bst_ivt_packageinfoivt p
|
||||
where point_status = #{pointStatus}
|
||||
AND ivt_status = #{ivtStatus}
|
||||
AND 0 = (SELECT COUNT(*) FROM sch_base_task t WHERE t.task_status <![CDATA[ < ]]> '07'
|
||||
AND (t.point_code1 = p.point_code OR t.point_code2 = p.point_code OR t.point_code3 = p.point_code OR t.point_code4 = p.point_code)
|
||||
AND t.is_delete = '0')
|
||||
</select>
|
||||
|
||||
<select id="selectNoTargetTaskPoint" resultType="org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt">
|
||||
select p.*
|
||||
|
||||
@@ -92,7 +92,6 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
|
||||
private IpdmBiSubpackagerelationService subpackagerelationService;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 查询数据分页
|
||||
*
|
||||
@@ -100,7 +99,7 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
|
||||
* @param page 分页参数
|
||||
*/
|
||||
@Override
|
||||
public IPage queryAll(Map whereJson, PageQuery page) {
|
||||
public IPage queryAll(Map whereJson, PageQuery page) {
|
||||
LambdaQueryWrapper<BstIvtPackageinfoivt> queryWrapper = new QueryWrapper<BstIvtPackageinfoivt>().lambda();
|
||||
String isUsed = MapUtil.getStr(whereJson, "is_used");
|
||||
String pointCode = MapUtil.getStr(whereJson, "point_code");
|
||||
@@ -124,20 +123,20 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
|
||||
}
|
||||
Page selectPage = bstIvtPackageinfoivtMapper.selectPage(new Page<>(page.getPage() + 1, page.getSize()), queryWrapper);
|
||||
List<BstIvtPackageinfoivt> records = selectPage.getRecords();
|
||||
Set<String> containers = records.stream().map(BstIvtPackageinfoivt::getContainer_name).filter(a->StringUtils.isNotEmpty(a)).collect(Collectors.toSet());
|
||||
Map<String,PdmBiSlittingproductionplan> listMap = new HashMap();
|
||||
if (!CollectionUtils.isEmpty(containers)){
|
||||
Set<String> containers = records.stream().map(BstIvtPackageinfoivt::getContainer_name).filter(a -> StringUtils.isNotEmpty(a)).collect(Collectors.toSet());
|
||||
Map<String, PdmBiSlittingproductionplan> listMap = new HashMap();
|
||||
if (!CollectionUtils.isEmpty(containers)) {
|
||||
List<PdmBiSlittingproductionplan> containerInfo = iPdmBiSlittingproductionplanService.list(new QueryWrapper<PdmBiSlittingproductionplan>()
|
||||
.in("container_name", containers)
|
||||
.select("container_name", "weight", "paper_weight","split_breadth","split_height"));
|
||||
listMap = containerInfo.stream().collect(HashMap::new,(m, o) -> m.put(o.getContainer_name(),o), HashMap::putAll);
|
||||
.select("container_name", "weight", "paper_weight", "split_breadth", "split_height"));
|
||||
listMap = containerInfo.stream().collect(HashMap::new, (m, o) -> m.put(o.getContainer_name(), o), HashMap::putAll);
|
||||
}
|
||||
List<BstIvtPackageinfoivtVO> voRecords = new ArrayList<>();
|
||||
for (BstIvtPackageinfoivt record : records) {
|
||||
BstIvtPackageinfoivtVO vo = new BstIvtPackageinfoivtVO();
|
||||
BeanUtils.copyProperties(record,vo);
|
||||
BeanUtils.copyProperties(record, vo);
|
||||
PdmBiSlittingproductionplan planInfo = listMap.get(record.getContainer_name());
|
||||
if (planInfo!=null){
|
||||
if (planInfo != null) {
|
||||
vo.setWeight(planInfo.getWeight());
|
||||
vo.setPaper_weight(planInfo.getPaper_weight());
|
||||
vo.setSplit_breadth(planInfo.getSplit_breadth().intValue());
|
||||
@@ -159,8 +158,11 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
|
||||
public Map<String, Object> secondaryAllocationPoint(String taskCode, String actionType) {
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("status", HttpStatus.BAD_REQUEST.value());
|
||||
RedissonUtils.lock(c-> {
|
||||
try {Thread.sleep(1000);} catch (InterruptedException e) {}
|
||||
RedissonUtils.lock(c -> {
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException e) {
|
||||
}
|
||||
String pointCode = "";
|
||||
String action = "";
|
||||
switch (actionType) {
|
||||
@@ -184,7 +186,7 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
|
||||
}
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
return null;
|
||||
},"sendProductToFirstFloor"+actionType,null);
|
||||
}, "sendProductToFirstFloor" + actionType, null);
|
||||
log.info("一楼装箱区点位二次分配" + taskCode + "---------------------------------------------" + result);
|
||||
return result;
|
||||
}
|
||||
@@ -221,7 +223,7 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
|
||||
.eq("is_delete", "0")
|
||||
.lt("task_status", TaskStatusEnum.FINISHED.getCode()));
|
||||
//检查是否满足二次分配条件
|
||||
if (count>0){
|
||||
if (count > 0) {
|
||||
throw new BadRequestException("正在执行行架任务");
|
||||
}
|
||||
checkTaskInfo(baseTask);
|
||||
@@ -247,13 +249,13 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
|
||||
updateWrapper.set(SchBaseTask::getPoint_code1, newPoint.getPoint_code());
|
||||
if (StringUtils.isNotBlank(newPoint.getContainer_name())) {
|
||||
//更新子卷号
|
||||
updateWrapper.set(SchBaseTask::getVehicle_code,newPoint.getContainer_name());
|
||||
updateWrapper.set(SchBaseTask::getVehicle_code, newPoint.getContainer_name());
|
||||
}
|
||||
} else if (PackageInfoIvtEnum.TASK_ACTION_TYPE.code("放货分配").equals(actionType)) {
|
||||
updateWrapper.set(SchBaseTask::getPoint_code2,newPoint.getPoint_code());
|
||||
updateWrapper.set(SchBaseTask::getPoint_code2, newPoint.getPoint_code());
|
||||
}
|
||||
//标记二次分配已分配过点位
|
||||
updateWrapper.set(SchBaseTask::getResponse_param,IOSEnum.IS_NOTANDYES.code("是"));
|
||||
updateWrapper.set(SchBaseTask::getResponse_param, IOSEnum.IS_NOTANDYES.code("是"));
|
||||
taskService.update(null, updateWrapper);
|
||||
log.info("一楼装箱区二次分配" + taskCode + ",接口返回最新点位:---------------------------------------------" + newPoint.getPoint_code());
|
||||
return newPoint.getPoint_code();
|
||||
@@ -605,8 +607,6 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 更新点位状态
|
||||
*
|
||||
@@ -653,8 +653,7 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
|
||||
String pointCode = baseTask.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务")) ? baseTask.getPoint_code3() : baseTask.getPoint_code1();
|
||||
upDateIvtOrTask(baseTask, pointCode);
|
||||
}
|
||||
}
|
||||
else if ((baseTask.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("待检区->装箱区")) ||
|
||||
} else if ((baseTask.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("待检区->装箱区")) ||
|
||||
baseTask.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("待检区移库任务"))
|
||||
|| baseTask.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("管制区移库任务"))
|
||||
)) {
|
||||
@@ -769,7 +768,7 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
|
||||
UpdateWrapper<SchBaseTask> updateWrapper1 = new UpdateWrapper<>();
|
||||
updateWrapper1.eq("task_id", baseTask.getTask_id());
|
||||
updateWrapper1.set("request_param", PackageInfoIvtEnum.TASK_ACTION_TYPE.code("取货完成"));
|
||||
taskService.update(null,updateWrapper1);
|
||||
taskService.update(null, updateWrapper1);
|
||||
log.info("一楼装箱区二次分配取货完成" + baseTask.getTask_code() + ",取货完成信号接收成功,点位:" + pointCode + "子卷号:" + baseTask.getVehicle_code());
|
||||
|
||||
|
||||
@@ -828,7 +827,7 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
|
||||
/**
|
||||
* 判断点位是否有外层阻挡
|
||||
*/
|
||||
private static BstIvtPackageinfoivt getBstIvtPackageinfoivt(List<BstIvtPackageinfoivt> vehicleList,List<BstIvtPackageinfoivt> kzjIvtList) {
|
||||
private static BstIvtPackageinfoivt getBstIvtPackageinfoivt(List<BstIvtPackageinfoivt> vehicleList, List<BstIvtPackageinfoivt> kzjIvtList) {
|
||||
boolean hasEmptyVehicle;
|
||||
BstIvtPackageinfoivt newPoint = new BstIvtPackageinfoivt();
|
||||
if (ObjectUtils.isNotEmpty(vehicleList)) {
|
||||
@@ -850,11 +849,11 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
|
||||
* 根据库存和空载具返回空点位
|
||||
*/
|
||||
private static BstIvtPackageinfoivt getSecondaryIvt(List<BstIvtPackageinfoivt> vehicleList, List<BstIvtPackageinfoivt> kzjIvtList) {
|
||||
List<BstIvtPackageinfoivt> emptyVehicleList;
|
||||
List<BstIvtPackageinfoivt> emptyVehicleList;
|
||||
BstIvtPackageinfoivt newPoint = new BstIvtPackageinfoivt();
|
||||
if (ObjectUtils.isNotEmpty(vehicleList)) {
|
||||
emptyVehicleList = vehicleList.stream()
|
||||
.filter(r -> r.getSort_seq().compareTo(kzjIvtList.get(0).getSort_seq()) < 0 ).collect(Collectors.toList());
|
||||
.filter(r -> r.getSort_seq().compareTo(kzjIvtList.get(0).getSort_seq()) < 0).collect(Collectors.toList());
|
||||
//有空位匹配
|
||||
if (ObjectUtils.isNotEmpty(emptyVehicleList)) {
|
||||
return emptyVehicleList.get(0);
|
||||
@@ -951,8 +950,6 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 创建
|
||||
*
|
||||
@@ -994,130 +991,158 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
|
||||
UpdateWrapper<BstIvtPackageinfoivt> updateWrapper = new UpdateWrapper<>();
|
||||
//LMS获取MES称重后子卷信息
|
||||
JSONObject jo = new JSONObject();
|
||||
//子卷质检合格品和管制品
|
||||
if (StringUtils.isNotBlank(whereJson.getString("container_name")) && StringUtils.isBlank(whereJson.getString("pointCode"))) {
|
||||
if (whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("空")) || whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("空载具")) || whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("有子卷"))) {
|
||||
throw new BadRequestException("质检结果只能为合格品或管制品");
|
||||
}
|
||||
if (whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("管制品"))) {
|
||||
PdmBiSubpackagerelation one = subpackagerelationService.getOne(new QueryWrapper<PdmBiSubpackagerelation>()
|
||||
.eq("container_name", whereJson.getString("container_name")));
|
||||
if (one!=null){
|
||||
throw new BadRequestException("包装关系存在,请先解绑MES及LMS包装关系");
|
||||
}
|
||||
}
|
||||
dtoList = bstIvtPackageinfoivtMapper.selectList(new LambdaQueryWrapper<BstIvtPackageinfoivt>().eq(BstIvtPackageinfoivt::getContainer_name, whereJson.getString("container_name")));
|
||||
if (ObjectUtils.isEmpty(dtoList)) {
|
||||
throw new BadRequestException("子卷号或点位信息有误,请核对是否存在!");
|
||||
}
|
||||
if (dtoList.size() > 1) {
|
||||
result.put("status", org.springframework.http.HttpStatus.BAD_REQUEST.value());
|
||||
result.put("message", "存在多个相同子卷号或点位信息有误,请核对是否存在!");
|
||||
return result;
|
||||
}
|
||||
BstIvtPackageinfoivt packageinfoivt = dtoList.get(0);
|
||||
if (packageinfoivt.getPoint_status().equals("4")) {
|
||||
throw new BadRequestException("管制点设置子卷状态时需要选择点位");
|
||||
}
|
||||
if (whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("合格品"))) {
|
||||
if (packageinfoivt.getIvt_status().equals(PackageInfoIvtEnum.IVT_STATUS.code("管制品"))){
|
||||
throw new BadRequestException("当前子卷已设置为管制品");
|
||||
}
|
||||
//获取子卷最新信息
|
||||
jo.put("container_name", whereJson.getString("container_name"));
|
||||
lmsToMesService.getInspectionResult(jo);
|
||||
//子卷下料信息MES传递给LMS
|
||||
iPdmBiContainerinfoService.createSubInfoByContainer(whereJson.getString("container_name"));
|
||||
/*
|
||||
* 自动打标
|
||||
*/
|
||||
// 判断是否自动打标
|
||||
String auto_table = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("AUTO_PRINT_TABLE").getValue();
|
||||
if (auto_table.equals(IOSEnum.IS_NOTANDYES.code("是"))) {
|
||||
// 内标默认打印机
|
||||
String within_table = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("WITHIN_PEINT_TWO").getValue();
|
||||
JSONObject within_print = WQLObject.getWQLObject("pdm_bi_printinfo")
|
||||
.query("print_name = '" + within_table + "'")
|
||||
.uniqueResult(0);
|
||||
// 管标默认打印机
|
||||
String pipe_table = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("PIPE_PEINT_TWO").getValue();
|
||||
JSONObject pipe_print = WQLObject.getWQLObject("pdm_bi_printinfo")
|
||||
.query("print_name = '" + pipe_table + "'")
|
||||
.uniqueResult(0);
|
||||
// 组织数据
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("pcsn", whereJson.getString("container_name"));
|
||||
param.put("print_code", pipe_print.getString("print_id"));
|
||||
printTableTwoService.pipeTable(param);
|
||||
|
||||
param.put("print_code", within_print.getString("print_id"));
|
||||
printTableTwoService.withinTable(param);
|
||||
String is_error = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("is_error").getValue();
|
||||
String point_code = whereJson.getString("pointCode");
|
||||
if ("1".equals(is_error) && "ZXQ_137,ZXQ_138".contains(point_code) && ObjectUtils.isNotEmpty(point_code)) {
|
||||
String ivt_status = whereJson.getString("ivt_status");
|
||||
String container_name = whereJson.getString("container_name");
|
||||
if (point_code.equals("ZXQ_137")) {
|
||||
//只能进行绑定空
|
||||
if (!whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("空"))) {
|
||||
throw new BadRequestException("该点位只能设置为空!");
|
||||
}
|
||||
|
||||
packageinfoivtService.update(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
|
||||
.set(BstIvtPackageinfoivt::getIvt_status, ivt_status)
|
||||
.eq(BstIvtPackageinfoivt::getPoint_code, point_code));
|
||||
}
|
||||
PdmProductSpecServiceImpl.doRecord(SpecEnum.ZJ,MapOf.of("质检结果",whereJson.getString("ivt_status")),Boolean.TRUE,null, packageinfoivt.getContainer_name());
|
||||
updateWrapper.set("container_name", packageinfoivt.getContainer_name());
|
||||
updateWrapper.set("ivt_status", whereJson.getString("ivt_status"));
|
||||
}
|
||||
//复称
|
||||
else if (StringUtils.isNotBlank(whereJson.getString("container_name")) && StringUtils.isNotBlank(whereJson.getString("pointCode"))) {
|
||||
dtoList = bstIvtPackageinfoivtMapper.selectList(new LambdaQueryWrapper<BstIvtPackageinfoivt>().eq(BstIvtPackageinfoivt::getPoint_code, whereJson.getString("pointCode")));
|
||||
if (whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("合格品"))) {
|
||||
//获取子卷最新信息
|
||||
jo.put("container_name", whereJson.getString("container_name"));
|
||||
lmsToMesService.getInspectionResult(jo);
|
||||
//子卷下料信息MES传递给LMS
|
||||
iPdmBiContainerinfoService.createSubInfoByContainer(whereJson.getString("container_name"));
|
||||
updateWrapper.set("container_name", whereJson.getString("container_name"));
|
||||
updateWrapper.set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("合格品"));
|
||||
if (point_code.equals("ZXQ_138")) {
|
||||
//只能进行绑定空
|
||||
if (!whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("合格品"))) {
|
||||
throw new BadRequestException("该点位只能绑定合格品!");
|
||||
}
|
||||
packageinfoivtService.update(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
|
||||
.set(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("有子卷"))
|
||||
.set(BstIvtPackageinfoivt::getContainer_name, container_name)
|
||||
.eq(BstIvtPackageinfoivt::getPoint_code, point_code));
|
||||
}
|
||||
|
||||
} else {
|
||||
//子卷质检合格品和管制品
|
||||
if (StringUtils.isNotBlank(whereJson.getString("container_name")) && StringUtils.isBlank(whereJson.getString("pointCode"))) {
|
||||
if (whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("空")) || whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("空载具")) || whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("有子卷"))) {
|
||||
throw new BadRequestException("质检结果只能为合格品或管制品");
|
||||
}
|
||||
if (whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("管制品"))) {
|
||||
PdmBiSubpackagerelation one = subpackagerelationService.getOne(new QueryWrapper<PdmBiSubpackagerelation>()
|
||||
.eq("container_name", whereJson.getString("container_name")));
|
||||
if (one != null) {
|
||||
throw new BadRequestException("包装关系存在,请先解绑MES及LMS包装关系");
|
||||
}
|
||||
}
|
||||
dtoList = bstIvtPackageinfoivtMapper.selectList(new LambdaQueryWrapper<BstIvtPackageinfoivt>().eq(BstIvtPackageinfoivt::getContainer_name, whereJson.getString("container_name")));
|
||||
if (ObjectUtils.isEmpty(dtoList)) {
|
||||
throw new BadRequestException("子卷号或点位信息有误,请核对是否存在!");
|
||||
}
|
||||
if (dtoList.size() > 1) {
|
||||
result.put("status", org.springframework.http.HttpStatus.BAD_REQUEST.value());
|
||||
result.put("message", "存在多个相同子卷号或点位信息有误,请核对是否存在!");
|
||||
return result;
|
||||
}
|
||||
BstIvtPackageinfoivt packageinfoivt = dtoList.get(0);
|
||||
if (packageinfoivt.getPoint_status().equals("4")) {
|
||||
throw new BadRequestException("管制点设置子卷状态时需要选择点位");
|
||||
}
|
||||
if (whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("合格品"))) {
|
||||
if (packageinfoivt.getIvt_status().equals(PackageInfoIvtEnum.IVT_STATUS.code("管制品"))) {
|
||||
throw new BadRequestException("当前子卷已设置为管制品");
|
||||
}
|
||||
//获取子卷最新信息
|
||||
jo.put("container_name", whereJson.getString("container_name"));
|
||||
lmsToMesService.getInspectionResult(jo);
|
||||
//子卷下料信息MES传递给LMS
|
||||
iPdmBiContainerinfoService.createSubInfoByContainer(whereJson.getString("container_name"));
|
||||
/*
|
||||
* 自动打标
|
||||
*/
|
||||
// 判断是否自动打标
|
||||
String auto_table = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("AUTO_PRINT_TABLE").getValue();
|
||||
if (auto_table.equals(IOSEnum.IS_NOTANDYES.code("是"))) {
|
||||
// 内标默认打印机
|
||||
String within_table = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("WITHIN_PEINT_TWO").getValue();
|
||||
JSONObject within_print = WQLObject.getWQLObject("pdm_bi_printinfo")
|
||||
.query("print_name = '" + within_table + "'")
|
||||
.uniqueResult(0);
|
||||
// 管标默认打印机
|
||||
String pipe_table = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("PIPE_PEINT_TWO").getValue();
|
||||
JSONObject pipe_print = WQLObject.getWQLObject("pdm_bi_printinfo")
|
||||
.query("print_name = '" + pipe_table + "'")
|
||||
.uniqueResult(0);
|
||||
// 组织数据
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("pcsn", whereJson.getString("container_name"));
|
||||
param.put("print_code", pipe_print.getString("print_id"));
|
||||
printTableTwoService.pipeTable(param);
|
||||
|
||||
param.put("print_code", within_print.getString("print_id"));
|
||||
printTableTwoService.withinTable(param);
|
||||
}
|
||||
|
||||
}
|
||||
PdmProductSpecServiceImpl.doRecord(SpecEnum.ZJ, MapOf.of("质检结果", whereJson.getString("ivt_status")), Boolean.TRUE, null, packageinfoivt.getContainer_name());
|
||||
updateWrapper.set("container_name", packageinfoivt.getContainer_name());
|
||||
updateWrapper.set("ivt_status", whereJson.getString("ivt_status"));
|
||||
}
|
||||
//复称
|
||||
else if (StringUtils.isNotBlank(whereJson.getString("container_name")) && StringUtils.isNotBlank(whereJson.getString("pointCode"))) {
|
||||
dtoList = bstIvtPackageinfoivtMapper.selectList(new LambdaQueryWrapper<BstIvtPackageinfoivt>().eq(BstIvtPackageinfoivt::getPoint_code, whereJson.getString("pointCode")));
|
||||
if (whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("合格品"))) {
|
||||
//获取子卷最新信息
|
||||
jo.put("container_name", whereJson.getString("container_name"));
|
||||
lmsToMesService.getInspectionResult(jo);
|
||||
//子卷下料信息MES传递给LMS
|
||||
iPdmBiContainerinfoService.createSubInfoByContainer(whereJson.getString("container_name"));
|
||||
updateWrapper.set("container_name", whereJson.getString("container_name"));
|
||||
updateWrapper.set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("合格品"));
|
||||
} else {
|
||||
result.put("status", org.springframework.http.HttpStatus.BAD_REQUEST.value());
|
||||
result.put("message", "该点位只能放复称的合格品!");
|
||||
return result;
|
||||
}
|
||||
}
|
||||
//取放空载具
|
||||
else if (StringUtils.isNotBlank(whereJson.getString("pointCode")) && StringUtils.isBlank(whereJson.getString("container_name"))) {
|
||||
if (whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("合格品")) || whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("管制品"))) {
|
||||
throw new BadRequestException("人工管制点只能设置空载具或空点位");
|
||||
}
|
||||
String pointCode = whereJson.getString("pointCode");
|
||||
if (StringUtils.isEmpty(pointCode)) {
|
||||
throw new BadRequestException("人工管制点不能为空");
|
||||
}
|
||||
JSONObject task = new JSONObject();
|
||||
task.put("point_code1", pointCode);
|
||||
int count = taskService.count(new QueryWrapper<SchBaseTask>()
|
||||
.eq("is_delete", "0")
|
||||
.eq("point_code1", pointCode)
|
||||
.lt("task_status", TaskStatusEnum.FINISHED.getCode()));
|
||||
if (count > 0) {
|
||||
throw new BadRequestException("当前人工管制点存在任务,稍后操作");
|
||||
}
|
||||
if (whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("管制品"))) {
|
||||
autoSendVehicleToDjq.getPointCode(task, PackageInfoIvtEnum.TASK_TYPE.code("补空(装箱区->待检区)"));
|
||||
}
|
||||
dtoList = bstIvtPackageinfoivtMapper.selectList(new LambdaQueryWrapper<BstIvtPackageinfoivt>().eq(BstIvtPackageinfoivt::getPoint_code, whereJson.getString("pointCode")));
|
||||
updateWrapper.set("container_name", null);
|
||||
updateWrapper.set("ivt_status", whereJson.getString("ivt_status"));
|
||||
} else {
|
||||
result.put("status", org.springframework.http.HttpStatus.BAD_REQUEST.value());
|
||||
result.put("message", "该点位只能放复称的合格品!");
|
||||
result.put("message", "请输入子卷号或管制点位信息!");
|
||||
return result;
|
||||
}
|
||||
}
|
||||
//取放空载具
|
||||
else if (StringUtils.isNotBlank(whereJson.getString("pointCode")) && StringUtils.isBlank(whereJson.getString("container_name"))) {
|
||||
if (whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("合格品")) || whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("管制品"))) {
|
||||
throw new BadRequestException("人工管制点只能设置空载具或空点位");
|
||||
String pointCode = dtoList.get(0).getPoint_code();
|
||||
if (dtoList.get(0).getPoint_status().equals(PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位"))) {
|
||||
throw new BadRequestException("满轴缓存位无法设置子卷状态");
|
||||
}
|
||||
String pointCode = whereJson.getString("pointCode");
|
||||
if (StringUtils.isEmpty(pointCode)){
|
||||
throw new BadRequestException("人工管制点不能为空");
|
||||
List<SchBaseTask> schBaseTasks = taskService.checkHaveTask(pointCode);
|
||||
if (!CollectionUtils.isEmpty(schBaseTasks)) {
|
||||
throw new BadRequestException("当前点位" + dtoList.get(0).getPoint_name() + "正在执行搬运任务" + schBaseTasks.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(",")));
|
||||
}
|
||||
JSONObject task = new JSONObject();
|
||||
task.put("point_code1", pointCode);
|
||||
int count = taskService.count(new QueryWrapper<SchBaseTask>()
|
||||
.eq("is_delete", "0")
|
||||
.eq("point_code1", pointCode)
|
||||
.lt("task_status", TaskStatusEnum.FINISHED.getCode()));
|
||||
if (count>0){
|
||||
throw new BadRequestException("当前人工管制点存在任务,稍后操作");
|
||||
}
|
||||
if (whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("管制品"))){
|
||||
autoSendVehicleToDjq.getPointCode(task,PackageInfoIvtEnum.TASK_TYPE.code("补空(装箱区->待检区)"));
|
||||
}
|
||||
dtoList = bstIvtPackageinfoivtMapper.selectList(new LambdaQueryWrapper<BstIvtPackageinfoivt>().eq(BstIvtPackageinfoivt::getPoint_code, whereJson.getString("pointCode")));
|
||||
updateWrapper.set("container_name", null);
|
||||
updateWrapper.set("ivt_status", whereJson.getString("ivt_status"));
|
||||
} else {
|
||||
result.put("status", org.springframework.http.HttpStatus.BAD_REQUEST.value());
|
||||
result.put("message", "请输入子卷号或管制点位信息!");
|
||||
return result;
|
||||
updateWrapper.eq("point_code", pointCode);
|
||||
updateWrapper.set("update_optid", Long.valueOf(SecurityUtils.getCurrentUserId()));
|
||||
updateWrapper.set("update_optname", SecurityUtils.getCurrentNickName());
|
||||
updateWrapper.set("update_time", DateUtil.now());
|
||||
bstIvtPackageinfoivtMapper.update(null, updateWrapper);
|
||||
}
|
||||
String pointCode = dtoList.get(0).getPoint_code();
|
||||
if (dtoList.get(0).getPoint_status().equals(PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位"))){
|
||||
throw new BadRequestException("满轴缓存位无法设置子卷状态");
|
||||
}
|
||||
List<SchBaseTask> schBaseTasks = taskService.checkHaveTask(pointCode);
|
||||
if (!CollectionUtils.isEmpty(schBaseTasks)){
|
||||
throw new BadRequestException("当前点位"+dtoList.get(0).getPoint_name()+"正在执行搬运任务"+schBaseTasks.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(",")));
|
||||
}
|
||||
updateWrapper.eq("point_code", pointCode);
|
||||
updateWrapper.set("update_optid", Long.valueOf(SecurityUtils.getCurrentUserId()));
|
||||
updateWrapper.set("update_optname", SecurityUtils.getCurrentNickName());
|
||||
updateWrapper.set("update_time", DateUtil.now());
|
||||
bstIvtPackageinfoivtMapper.update(null, updateWrapper);
|
||||
result.put("status", org.springframework.http.HttpStatus.OK.value());
|
||||
result.put("message", "检验成功!");
|
||||
return result;
|
||||
@@ -1202,15 +1227,16 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
|
||||
|
||||
@Override
|
||||
public List<BstIvtPackageinfoivt> selectEmpPoints(String point_status, String ivt_status) {
|
||||
if (StringUtils.isEmpty(point_status)||StringUtils.isEmpty(ivt_status)){
|
||||
if (StringUtils.isEmpty(point_status) || StringUtils.isEmpty(ivt_status)) {
|
||||
throw new BadRequestException("点位类型或状态不能为空");
|
||||
}
|
||||
return this.baseMapper.selectNoTaskPoint(point_status, ivt_status);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<BstIvtPackageinfoivt> selectNoTargetTaskPoints(String point_status, String ivt_status) {
|
||||
if (StringUtils.isEmpty(point_status)||StringUtils.isEmpty(ivt_status)){
|
||||
if (StringUtils.isEmpty(point_status) || StringUtils.isEmpty(ivt_status)) {
|
||||
throw new BadRequestException("点位类型或状态不能为空");
|
||||
}
|
||||
return this.baseMapper.selectNoTargetTaskPoint(point_status, ivt_status);
|
||||
|
||||
@@ -189,7 +189,7 @@ public class TwoOutTask extends AbstractAcsTask {
|
||||
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
|
||||
RedissonUtils.lock(c -> {
|
||||
StIvtIostorinvOutServiceImpl bean = SpringContextHolder.getBean(StIvtIostorinvOutServiceImpl.class);
|
||||
bean.finishTask(jsonTask);
|
||||
// bean.finishTask(jsonTask);
|
||||
// 判断是否有异常货位的需要更新
|
||||
JSONObject jsonExt = attrTab.query("inv_code = '" + jsonTask.getString("vehicle_code") + "' AND lock_type = '"+IOSEnum.LOCK_TYPE.code("出库异常锁")+"'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(jsonExt)) {
|
||||
|
||||
@@ -26,6 +26,7 @@ import org.nl.wms.util.TaskUtil;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -48,6 +49,7 @@ public class GzqTask extends AbstractAcsTask {
|
||||
private IbstIvtPackageinfoivtService packageinfoivtService;
|
||||
@Resource
|
||||
private ShiftingTask shiftingTask;
|
||||
|
||||
@Override
|
||||
public List<AcsTaskDto> addTask() {
|
||||
ArrayList<AcsTaskDto> resultList = new ArrayList<>();
|
||||
@@ -83,7 +85,7 @@ public class GzqTask extends AbstractAcsTask {
|
||||
public void updateTaskStatus(JSONObject taskObj, String status) {
|
||||
String now = DateUtil.now();
|
||||
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getTask_id, taskObj.getString("task_id")), false);
|
||||
if (TaskUtil.checkParams(schBaseTask, THIS_CLASS,TaskStatusEnum.FINISHED.getCode())) return;
|
||||
if (TaskUtil.checkParams(schBaseTask, THIS_CLASS, TaskStatusEnum.FINISHED.getCode())) return;
|
||||
LambdaUpdateWrapper<SchBaseTask> updateWrapper = new LambdaUpdateWrapper<SchBaseTask>()
|
||||
.eq(SchBaseTask::getTask_id, taskObj.getString("task_id"))
|
||||
.set(SchBaseTask::getUpdate_optid, SecurityUtils.getCurrentUserId())
|
||||
@@ -94,17 +96,23 @@ public class GzqTask extends AbstractAcsTask {
|
||||
if (TaskUtil.checkParams(schBaseTask, THIS_CLASS, TaskStatusEnum.EXECUTING.getCode())) return;
|
||||
updateWrapper.set(SchBaseTask::getTask_status, TaskStatusEnum.EXECUTING.getCode());
|
||||
}
|
||||
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
|
||||
log.info("任务编号为:" + schBaseTask.getTask_code() + "的任务完成接口在" + now + "被调用---------------------------------------------");
|
||||
//1.改变起点点位状态
|
||||
packageinfoivtService.update(null, new UpdateWrapper<BstIvtPackageinfoivt>().set("update_time", now).set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1()));
|
||||
//2.更新库存记录
|
||||
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
|
||||
log.info("任务编号为:" + schBaseTask.getTask_code() + "的任务完成接口在" + now + "被调用---------------------------------------------");
|
||||
//1.改变起点点位状态
|
||||
packageinfoivtService.update(null, new UpdateWrapper<BstIvtPackageinfoivt>().set("update_time", now).set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1()));
|
||||
//2.更新库存记录
|
||||
if (schBaseTask.getTask_type().equals("010999")) {
|
||||
packageinfoivtService.update(null, new UpdateWrapper<BstIvtPackageinfoivt>().set("update_time", now).set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空载具")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2()));
|
||||
} else if (schBaseTask.getTask_type().equals("010998")) {
|
||||
packageinfoivtService.update(null, new UpdateWrapper<BstIvtPackageinfoivt>().set("update_time", now).set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("有子卷")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2()));
|
||||
} else {
|
||||
packageinfoivtService.update(null, new UpdateWrapper<BstIvtPackageinfoivt>().set("update_time", now).set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("管制品")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2()));
|
||||
//3.更改任务状态为完成
|
||||
updateWrapper.set(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode());
|
||||
//4.判断是否存在任务组任务
|
||||
packageinfoivtService.handleGroupTask(schBaseTask);
|
||||
}
|
||||
//3.更改任务状态为完成
|
||||
updateWrapper.set(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode());
|
||||
//4.判断是否存在任务组任务
|
||||
packageinfoivtService.handleGroupTask(schBaseTask);
|
||||
}
|
||||
// 取消
|
||||
if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) {
|
||||
if (Integer.parseInt(schBaseTask.getTask_status()) > Integer.parseInt(TaskStatusEnum.ISSUE.getCode())) {
|
||||
@@ -113,9 +121,9 @@ public class GzqTask extends AbstractAcsTask {
|
||||
//任务被标记为取消
|
||||
updateWrapper.set(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("是"));
|
||||
updateWrapper.set(SchBaseTask::getTask_status, TaskStatusEnum.CANCEL.getCode());
|
||||
updateWrapper.set(SchBaseTask::getRemark,"任务被ACS在:" + schBaseTask.getUpdate_time() + "调用接口强制取消。");
|
||||
updateWrapper.set(SchBaseTask::getRemark, "任务被ACS在:" + schBaseTask.getUpdate_time() + "调用接口强制取消。");
|
||||
}
|
||||
taskService.update(null,updateWrapper);
|
||||
taskService.update(null, updateWrapper);
|
||||
}
|
||||
|
||||
private void sendTask(SchBaseTask schBaseTask, SchBaseTask groupTask) {
|
||||
@@ -188,13 +196,11 @@ public class GzqTask extends AbstractAcsTask {
|
||||
public void forceFinish(String taskId) {
|
||||
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>()
|
||||
.eq(SchBaseTask::getTask_id, taskId), false);
|
||||
if (TaskUtil.checkParams(schBaseTask, THIS_CLASS,TaskStatusEnum.FINISHED.getCode())) return;
|
||||
if (TaskUtil.checkParams(schBaseTask, THIS_CLASS, TaskStatusEnum.FINISHED.getCode())) return;
|
||||
updateTaskStatus(JSONObject.parseObject(JSON.toJSONString(schBaseTask)), TaskStatusEnum.FINISHED.getCode());
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void cancel(String taskId) {
|
||||
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>()
|
||||
@@ -210,12 +216,9 @@ public class GzqTask extends AbstractAcsTask {
|
||||
//任务被标记为取消
|
||||
updateWrapper.set(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("是"));
|
||||
updateWrapper.set(SchBaseTask::getTask_status, TaskStatusEnum.CANCEL.getCode());
|
||||
updateWrapper.set(SchBaseTask::getRemark,"任务被用户:" + schBaseTask.getUpdate_optname() + "在:" +DateUtil.now() + "强制取消。");
|
||||
taskService.update(null,updateWrapper);
|
||||
updateWrapper.set(SchBaseTask::getRemark, "任务被用户:" + schBaseTask.getUpdate_optname() + "在:" + DateUtil.now() + "强制取消。");
|
||||
taskService.update(null, updateWrapper);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.nl.b_lms.sch.tasks.first_floor_area.auto;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -7,17 +8,25 @@ import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
|
||||
import org.nl.b_lms.sch.point.dao.mapper.BstIvtPackageinfoivtMapper;
|
||||
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
|
||||
import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
|
||||
import org.nl.b_lms.sch.tasks.first_floor_area.DjqTask;
|
||||
import org.nl.b_lms.sch.tasks.first_floor_area.GzqTask;
|
||||
import org.nl.b_lms.sch.tasks.first_floor_area.ShiftingTask;
|
||||
import org.nl.b_lms.sch.tasks.first_floor_area.ZxqTask;
|
||||
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
|
||||
import org.nl.common.enums.PackageInfoIvtEnum;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.wql.util.SpringContextHolder;
|
||||
import org.nl.system.service.param.impl.SysParamServiceImpl;
|
||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
import org.redisson.api.RLock;
|
||||
import org.redisson.api.RedissonClient;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
@@ -40,6 +49,10 @@ public class AutoSendMzToDjq {
|
||||
private RedissonClient redissonClient;
|
||||
@Resource
|
||||
private DjqTask djqTask;
|
||||
@Resource
|
||||
private GzqTask gzqTask;
|
||||
@Resource
|
||||
private BstIvtPackageinfoivtMapper bstIvtPackageinfoivtMapper;
|
||||
|
||||
@Resource
|
||||
private ShiftingTask shiftingTask;
|
||||
@@ -51,17 +64,21 @@ public class AutoSendMzToDjq {
|
||||
//满轴->待检区agv自动搬运任务
|
||||
public void run() {
|
||||
try {
|
||||
this.sendMzqToDjq();
|
||||
}catch (Exception ex){
|
||||
String is_error = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("is_error").getValue();
|
||||
if ("1".equals(is_error)) {
|
||||
this.sendErrorPointCode();
|
||||
} else {
|
||||
this.sendMzqToDjq();
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
log.error(ex.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@SneakyThrows
|
||||
public void sendMzqToDjq() {
|
||||
log.info(THIS_CLASS+"-满轴->待检区定时任务开始执行扫描。");
|
||||
log.info(THIS_CLASS + "-满轴->待检区定时任务开始执行扫描。");
|
||||
RLock lock = redissonClient.getLock("todjq");
|
||||
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
|
||||
try {
|
||||
@@ -81,7 +98,7 @@ public class AutoSendMzToDjq {
|
||||
//待检区有库位为空位且过滤未完成任务
|
||||
List<BstIvtPackageinfoivt> selectEmpPoints = packageinfoivtService.selectEmpPoints(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空"));
|
||||
if (ObjectUtils.isEmpty(selectEmpPoints)) {
|
||||
log.error(THIS_CLASS+"满轴->待检区agv自动搬运任务暂无可用空位,子卷号为:" + mzqPackageinfoivtList.get(0).getContainer_name());
|
||||
log.error(THIS_CLASS + "满轴->待检区agv自动搬运任务暂无可用空位,子卷号为:" + mzqPackageinfoivtList.get(0).getContainer_name());
|
||||
return;
|
||||
}
|
||||
task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("取货二次分配"));
|
||||
@@ -102,4 +119,59 @@ public class AutoSendMzToDjq {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
public void sendErrorPointCode() {
|
||||
log.info(THIS_CLASS + "-异常点位定时任务开始执行扫描。");
|
||||
RLock lock = redissonClient.getLock("todjq");
|
||||
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
|
||||
try {
|
||||
if (tryLock) {
|
||||
List<BstIvtPackageinfoivt> mzqPackageinfoivtList = bstIvtPackageinfoivtMapper.selectNoTaskPoint2(PackageInfoIvtEnum.POINT_STATUS.code("管制区"), PackageInfoIvtEnum.IVT_STATUS.code("有子卷"))
|
||||
.stream().filter(row -> row.getPoint_code().equals("ZXQ_138")).collect(Collectors.toList());
|
||||
List<BstIvtPackageinfoivt> kzjPackageinfoivtList = bstIvtPackageinfoivtMapper.selectNoTaskPoint2(PackageInfoIvtEnum.POINT_STATUS.code("管制区"), PackageInfoIvtEnum.IVT_STATUS.code("空"))
|
||||
.stream().filter(row -> row.getPoint_code().equals("ZXQ_137")).collect(Collectors.toList());
|
||||
//如果异常满轴点有货,创建任务搬运到待检区
|
||||
if (ObjectUtils.isNotEmpty(mzqPackageinfoivtList)) {
|
||||
//待检区有库位为空位且过滤未完成任务
|
||||
List<BstIvtPackageinfoivt> selectEmpPoints = packageinfoivtService.selectEmpPoints(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空"));
|
||||
if (ObjectUtils.isNotEmpty(selectEmpPoints)) {
|
||||
//校验重复任务
|
||||
List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
|
||||
.eq(SchBaseTask::getVehicle_code, mzqPackageinfoivtList.get(0).getContainer_name()).eq(SchBaseTask::getTask_type, "010998")
|
||||
.eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否")).lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()));
|
||||
if (CollectionUtils.isEmpty(taskList)) {
|
||||
JSONObject task = new JSONObject();
|
||||
task.put("point_code1", "ZXQ_138");
|
||||
task.put("point_code2", selectEmpPoints.get(0).getPoint_code());
|
||||
task.put("task_type", "010998");
|
||||
task.put("vehicle_code", mzqPackageinfoivtList.get(0).getContainer_name());
|
||||
task.put("is_send", "1");
|
||||
gzqTask.createTask(task);
|
||||
}
|
||||
}
|
||||
}
|
||||
//如果异常空载具点为空,创建任务搬运待检区空载具到异常空载具点
|
||||
if (ObjectUtils.isNotEmpty(kzjPackageinfoivtList)) {
|
||||
List<BstIvtPackageinfoivt> vehiclePoints = this.packageinfoivtService.selectEmpPoints(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"));
|
||||
if (ObjectUtils.isNotEmpty(vehiclePoints)) {
|
||||
|
||||
JSONObject task = new JSONObject();
|
||||
task.put("point_code1", vehiclePoints.get(0).getPoint_code());
|
||||
task.put("point_code2", "ZXQ_137");
|
||||
task.put("task_type", "010999");
|
||||
task.put("vehicle_code", "kzj");
|
||||
task.put("is_send", "1");
|
||||
gzqTask.createTask(task);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
log.info("满轴->待检区agv自动搬运任务正在创建被锁住。");
|
||||
}
|
||||
} finally {
|
||||
if (lock.isLocked() && lock.isHeldByCurrentThread()) {
|
||||
lock.unlock();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,7 +121,7 @@ public class LashManageServiceImpl implements LashManageService {
|
||||
.query("package_box_sn = '" + boxDao.getBox_no() + "'")
|
||||
.uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(jsonSub)) {
|
||||
throw new BadRequestException("子卷包装关系不存在:【"+boxDao.getBox_no()+"】");
|
||||
throw new BadRequestException("子卷包装关系不存在:【" + boxDao.getBox_no() + "】");
|
||||
}
|
||||
|
||||
//查询木箱对应的托盘绑定关系,并清除
|
||||
@@ -270,30 +270,63 @@ public class LashManageServiceImpl implements LashManageService {
|
||||
Map<String, List<JSONObject>> groupPointMap = executeArr.stream()
|
||||
.collect(Collectors.groupingBy(row -> row.getString("point_code2")));
|
||||
|
||||
|
||||
// 终点: 如果是异常口则直接生成到异常口的任务
|
||||
String next_device_code = IOSEnum.OUT_HANGER.code("行架位1");
|
||||
|
||||
String TWO_EXCEP = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("TWO_EXCEP").getValue();
|
||||
if (TWO_EXCEP.equals(IOSEnum.IS_NOTANDYES.code("是"))) {
|
||||
next_device_code = IOSEnum.EXCEP_OUT.code("异常出库口");
|
||||
} else {
|
||||
// 判断是否是启用状态
|
||||
List<JSONObject> jsonList = pointTab.query("region_code = 'BLKCK' AND is_used = '1'")
|
||||
.getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||
|
||||
if (ObjectUtil.isEmpty(jsonList)) {
|
||||
throw new BadRequestException("请检查CK2012/CK2017是否启用!");
|
||||
}
|
||||
if (jsonList.size() == 2) {
|
||||
List<JSONObject> heapOne = Optional.ofNullable(groupPointMap.get(IOSEnum.OUT_HANGER.code("行架位1"))).orElse(new ArrayList<>());
|
||||
List<JSONObject> heapTwo = Optional.ofNullable(groupPointMap.get(IOSEnum.OUT_HANGER.code("行架位2"))).orElse(new ArrayList<>());
|
||||
|
||||
|
||||
if (heapOne.size() > heapTwo.size()) {
|
||||
next_device_code = IOSEnum.OUT_HANGER.code("行架位2");
|
||||
String TWO_EXC_OUT_TYPE = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("TWO_EXC_OUT_TYPE").getValue();
|
||||
if (TWO_EXC_OUT_TYPE.equals("1") || TWO_EXC_OUT_TYPE.equals("2")) {
|
||||
//1-大托盘全部出到异常口;2-大托盘负载到异常口和正常出库口
|
||||
if (whereJson.getString("device_code").equals("CK2038")) {
|
||||
if (TWO_EXC_OUT_TYPE.equals("1")) {
|
||||
next_device_code = IOSEnum.EXCEP_OUT.code("异常出库口");
|
||||
}
|
||||
if (TWO_EXC_OUT_TYPE.equals("2")) {
|
||||
// 判断是否是启用状态
|
||||
List<JSONObject> jsonList = pointTab.query("region_code = 'BLKCK' AND is_used = '1'")
|
||||
.getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||
int min_task_num = 999;
|
||||
next_device_code = IOSEnum.EXCEP_OUT.code("异常出库口");
|
||||
|
||||
for (int i = 0; i < jsonList.size(); i++) {
|
||||
String point_code = jsonList.get(i).getString("point_code");
|
||||
int task_num = Optional.ofNullable(groupPointMap.get(point_code)).orElse(new ArrayList<>()).size();
|
||||
if (task_num < min_task_num) {
|
||||
next_device_code = point_code;
|
||||
min_task_num = task_num;
|
||||
}
|
||||
}
|
||||
int exc_task_num = Integer.parseInt(SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("TWO_EXC_OUT_TASK_NUM").getValue());
|
||||
List<JSONObject> heapExc = Optional.ofNullable(groupPointMap.get(IOSEnum.EXCEP_OUT.code("异常出库口"))).orElse(new ArrayList<>());
|
||||
if (heapExc.size() < min_task_num && exc_task_num > heapExc.size()) {
|
||||
next_device_code = IOSEnum.EXCEP_OUT.code("异常出库口");
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
String TWO_EXCEP = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("TWO_EXCEP").getValue();
|
||||
if (TWO_EXCEP.equals(IOSEnum.IS_NOTANDYES.code("是"))) {
|
||||
next_device_code = IOSEnum.EXCEP_OUT.code("异常出库口");
|
||||
} else {
|
||||
next_device_code = jsonList.get(0).getString("point_code");
|
||||
// 判断是否是启用状态
|
||||
List<JSONObject> jsonList = pointTab.query("region_code = 'BLKCK' AND is_used = '1'")
|
||||
.getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||
|
||||
if (ObjectUtil.isEmpty(jsonList)) {
|
||||
throw new BadRequestException("请检查CK2012/CK2017是否启用!");
|
||||
}
|
||||
if (jsonList.size() == 2) {
|
||||
List<JSONObject> heapOne = Optional.ofNullable(groupPointMap.get(IOSEnum.OUT_HANGER.code("行架位1"))).orElse(new ArrayList<>());
|
||||
List<JSONObject> heapTwo = Optional.ofNullable(groupPointMap.get(IOSEnum.OUT_HANGER.code("行架位2"))).orElse(new ArrayList<>());
|
||||
|
||||
|
||||
if (heapOne.size() > heapTwo.size()) {
|
||||
next_device_code = IOSEnum.OUT_HANGER.code("行架位2");
|
||||
}
|
||||
} else {
|
||||
next_device_code = jsonList.get(0).getString("point_code");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -338,7 +371,7 @@ public class LashManageServiceImpl implements LashManageService {
|
||||
//判断木箱信息是否为空
|
||||
String box_no = vehicle_ext.getString("pcsn");
|
||||
if (StrUtil.isEmpty(box_no)) {
|
||||
throw new BadRequestException("未查询到托盘:"+vehicle_code+"绑定了相关木箱!");
|
||||
throw new BadRequestException("未查询到托盘:" + vehicle_code + "绑定了相关木箱!");
|
||||
}
|
||||
// 查询木箱信息
|
||||
BstIvtBoxinfo boxinfo = iBstIvtBoxinfoService.getOne(
|
||||
@@ -391,7 +424,6 @@ public class LashManageServiceImpl implements LashManageService {
|
||||
result.put("isBinding", isBinding);
|
||||
|
||||
|
||||
|
||||
// TODO 是否贴标
|
||||
result.put("isLabeling", IOSEnum.IS_SEND.code("否"));
|
||||
// TODO 贴标数量
|
||||
@@ -415,7 +447,7 @@ public class LashManageServiceImpl implements LashManageService {
|
||||
result.put("labelingTemplate", labelingTemplate);
|
||||
Param label_num = null;
|
||||
//CK2019,CK2015
|
||||
if(device_code.equals("CK2019") || device_code.equals("CK2015")){
|
||||
if (device_code.equals("CK2019") || device_code.equals("CK2015")) {
|
||||
label_num = iSysParamService.findMinByCode(device_code);
|
||||
String print_code = label_num.getCode();
|
||||
JSONObject print_info = WQLObject.getWQLObject("pdm_bi_printinfo").query("print_name = '" + print_code + "'").uniqueResult(0);
|
||||
@@ -423,7 +455,7 @@ public class LashManageServiceImpl implements LashManageService {
|
||||
print_jo.put("box_no", box_no);
|
||||
print_jo.put("print_type", print_info.getString("print_id"));
|
||||
int times = Integer.parseInt(labelingTemplateNum);
|
||||
for(int i=0;i<times;i++){
|
||||
for (int i = 0; i < times; i++) {
|
||||
new PrintServiceImpl().customerPrintBY2(print_jo);
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
@@ -446,8 +478,8 @@ public class LashManageServiceImpl implements LashManageService {
|
||||
if (Integer.valueOf(label_num_down) >= Integer.valueOf(now_num)) {
|
||||
result.put("message", "标签纸数量过低,请更换!");
|
||||
}
|
||||
}else{
|
||||
throw new BadRequestException("贴标请求设备点位异常:"+device_code);
|
||||
} else {
|
||||
throw new BadRequestException("贴标请求设备点位异常:" + device_code);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
|
||||
@@ -97,7 +97,7 @@ import java.util.stream.Collectors;
|
||||
@Slf4j
|
||||
public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
|
||||
private static Map<String,String> Task_Status_Convers = MapOf.of("1",TaskStatusEnum.EXECUTING.getCode(),"2",TaskStatusEnum.FINISHED.getCode(),"3","0");
|
||||
private static Map<String, String> Task_Status_Convers = MapOf.of("1", TaskStatusEnum.EXECUTING.getCode(), "2", TaskStatusEnum.FINISHED.getCode(), "3", "0");
|
||||
|
||||
|
||||
private final RawAssistIStorService rawAssistIStorService;
|
||||
@@ -115,7 +115,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
private final ISysNoticeService noticeService;
|
||||
|
||||
@Autowired
|
||||
private IPdmBiContainerinboundService iPdmBiContainerinboundService;
|
||||
private IPdmBiContainerinboundService iPdmBiContainerinboundService;
|
||||
|
||||
/**
|
||||
* 入库处理类服务
|
||||
@@ -176,7 +176,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
|
||||
private final IPdmBiSlittingproductionplanService slittingproductionplanService;
|
||||
|
||||
private final OutBussManageService outBussManageService;
|
||||
private final OutBussManageService outBussManageService;
|
||||
|
||||
@Autowired
|
||||
private ProductOutTwoService productOutTwoService;
|
||||
@@ -214,39 +214,39 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
JSONObject task = WQLObject.getWQLObject("SCH_BASE_Task")
|
||||
.query("task_id = '" + task_id + "'")
|
||||
.uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(task)){
|
||||
throw new BadRequestException("未找到任务标识为:" + task_id + "的任务!");
|
||||
if (ObjectUtil.isEmpty(task)) {
|
||||
throw new BadRequestException("未找到任务标识为:" + task_id + "的任务!");
|
||||
}
|
||||
if ("1".equals(task.getString("is_delete"))){
|
||||
log.debug(task_id+"当前LMS任务已删除,不需要再次反馈更新!");
|
||||
if ("1".equals(task.getString("is_delete"))) {
|
||||
log.debug(task_id + "当前LMS任务已删除,不需要再次反馈更新!");
|
||||
continue;
|
||||
}
|
||||
if ("08,07".contains(task.getString("task_status"))){
|
||||
log.debug(task_id+"当前LMS任务完成或取消,不需要再次反馈更新!");
|
||||
if ("08,07".contains(task.getString("task_status"))) {
|
||||
log.debug(task_id + "当前LMS任务完成或取消,不需要再次反馈更新!");
|
||||
continue;
|
||||
}
|
||||
if (StrUtil.isNotEmpty(row.getString("car_no"))) {
|
||||
WQLObject.getWQLObject("SCH_BASE_Task")
|
||||
.update(MapOf.of("car_no",row.getString("car_no")),"task_id = '" + task_id + "'");
|
||||
.update(MapOf.of("car_no", row.getString("car_no")), "task_id = '" + task_id + "'");
|
||||
}
|
||||
String handleClassName = task.getString("handle_class");
|
||||
if (StrUtil.isEmpty(handleClassName)) {
|
||||
throw new BadRequestException("当前任务的处理类未找到!");
|
||||
}
|
||||
AbstractAcsTask abstractTask = (AbstractAcsTask)SpringContextHolder.getBean(Class.forName(task.getString("handle_class")));
|
||||
abstractTask.updateTaskStatus(row,Task_Status_Convers.get(row.getString("task_status")));
|
||||
AbstractAcsTask abstractTask = (AbstractAcsTask) SpringContextHolder.getBean(Class.forName(task.getString("handle_class")));
|
||||
abstractTask.updateTaskStatus(row, Task_Status_Convers.get(row.getString("task_status")));
|
||||
} else {
|
||||
throw new BadRequestException("任务标识为:" + task_id + "的任务正在操作中!");
|
||||
}
|
||||
}catch (BadRequestException ex){
|
||||
log.error(task_id+"acs更新任务失败:{}", ex);
|
||||
WQLObject.getWQLObject("SCH_BASE_Task").update(MapOf.of("remark",DateUtil.now()+"更新"+row.getString("task_status")+"失败:"+ex.getMessage()),"task_id = '" + task_id + "'");
|
||||
} catch (BadRequestException ex) {
|
||||
log.error(task_id + "acs更新任务失败:{}", ex);
|
||||
WQLObject.getWQLObject("SCH_BASE_Task").update(MapOf.of("remark", DateUtil.now() + "更新" + row.getString("task_status") + "失败:" + ex.getMessage()), "task_id = '" + task_id + "'");
|
||||
throw ex;
|
||||
}catch (Exception ex){
|
||||
log.error(task_id+"acs更新任务失败:{}", ex);
|
||||
WQLObject.getWQLObject("SCH_BASE_Task").update(MapOf.of("remark",DateUtil.now()+"更新"+row.getString("task_status")+"失败,系统异常"),"task_id = '" + task_id + "'");
|
||||
} catch (Exception ex) {
|
||||
log.error(task_id + "acs更新任务失败:{}", ex);
|
||||
WQLObject.getWQLObject("SCH_BASE_Task").update(MapOf.of("remark", DateUtil.now() + "更新" + row.getString("task_status") + "失败,系统异常"), "task_id = '" + task_id + "'");
|
||||
throw ex;
|
||||
}finally {
|
||||
} finally {
|
||||
if (lock.isLocked() && lock.isHeldByCurrentThread()) {
|
||||
lock.unlock();
|
||||
}
|
||||
@@ -543,7 +543,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
} else {
|
||||
struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("lock_type = '1' AND block_num = '" + block_num + "'AND placement_type = '" + placement_type + "' AND row_num = '" + row_num + "' AND is_delete = '0' AND is_used = '1' AND IFNULL(storagevehicle_code,'') <> '' order by out_order_seq desc").uniqueResult(0);
|
||||
}
|
||||
if (!ObjectUtil.isEmpty(struct_jo)){
|
||||
if (!ObjectUtil.isEmpty(struct_jo)) {
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
@@ -1629,7 +1629,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "反馈成功,ACS上报无货且此时LMS该点位没有任何任务!");
|
||||
return result;
|
||||
}else {
|
||||
} else {
|
||||
boolean need_clean = false;
|
||||
for (int i = 0; i < left_arr.size(); i++) {
|
||||
JSONObject left_jo = left_arr.getJSONObject(i);
|
||||
@@ -1654,7 +1654,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "反馈成功,ACS上报无货且此时LMS该点位没有任何任务!");
|
||||
return result;
|
||||
}else {
|
||||
} else {
|
||||
boolean need_clean = false;
|
||||
for (int i = 0; i < right_arr.size(); i++) {
|
||||
JSONObject right_jo = right_arr.getJSONObject(i);
|
||||
@@ -1853,62 +1853,69 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
@Override
|
||||
public JSONObject sendProductToFirstFloor(JSONObject whereJson) {
|
||||
log.info("sendProductToFirstFloor被调用--------------------------:" + whereJson.toString());
|
||||
if (StringUtils.isBlank(whereJson.getString("device_code")) || StringUtils.isBlank(whereJson.getString("material_barcode"))) {
|
||||
throw new BadRequestException("接口sendProductToFirstFloor,目标站点或子卷号参数为空!");
|
||||
}
|
||||
if (whereJson.getString("device_code").equals("null") || whereJson.getString("material_barcode").equals("null")) {
|
||||
throw new BadRequestException("接口sendProductToFirstFloor,目标站点或子卷号参数为null!");
|
||||
}
|
||||
String is_error = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("is_error").getValue();
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("status", HttpStatus.BAD_REQUEST.value());
|
||||
result.put("data", whereJson.getString("material_barcode"));
|
||||
RedissonUtils.lock(c->{
|
||||
//1.查询满轴缓存位是否有空位
|
||||
List<BstIvtPackageinfoivt> MzPoints = packageinfoivtService
|
||||
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
|
||||
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
|
||||
.eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位"))
|
||||
.eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空"))
|
||||
.orderByDesc(BstIvtPackageinfoivt::getSort_seq));
|
||||
if (CollectionUtils.isEmpty(MzPoints)){
|
||||
result.put("message", "满轴位无可用位置");
|
||||
return result;
|
||||
}
|
||||
List<BstIvtPackageinfoivt> empPoints = packageinfoivtService
|
||||
.selectNoTargetTaskPoints(PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"));
|
||||
if (CollectionUtils.isEmpty(empPoints)){
|
||||
result.put("message", "空轴位无可用位置");
|
||||
return result;
|
||||
}
|
||||
// 创建前先判断是否有已创建相同任务
|
||||
List<String> taskTypes = new ArrayList<>(Arrays.asList(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"), PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"), PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"), PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)"), PackageInfoIvtEnum.TASK_TYPE.code("补空(管制区->空载具缓存位)")));
|
||||
List<SchBaseTask> existTaskList1 = taskService.getExistTasks(taskTypes);
|
||||
List<SchBaseTask> existTaskList2 = existTaskList1.stream().filter(r -> r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"))||r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"))||r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"))).collect(Collectors.toList());
|
||||
List<SchBaseTask> existTaskList3 = existTaskList1.stream().filter(r -> StringUtils.isNotBlank(r.getResponse_param())).collect(Collectors.toList());
|
||||
if (!CollectionUtils.isEmpty(existTaskList2) ||!CollectionUtils.isEmpty(existTaskList3) ){
|
||||
result.put("message", "存在正在执行的输送线行架任务");
|
||||
return result;
|
||||
}
|
||||
List<BstIvtPackageinfoivt> sortEmpPoint = empPoints.stream().sorted(Comparator.comparing(BstIvtPackageinfoivt::getSort_seq)).collect(Collectors.toList());
|
||||
JSONObject taskParam = new JSONObject();
|
||||
taskParam.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
|
||||
taskParam.put("vehicle_code", whereJson.getString("material_barcode"));
|
||||
taskParam.put("point_code1", whereJson.getString("device_code"));
|
||||
taskParam.put("point_code2", MzPoints.get(0).getPoint_code());
|
||||
taskParam.put("point_code3", sortEmpPoint.get(0).getPoint_code());
|
||||
taskParam.put("point_code4", whereJson.getString("device_code"));
|
||||
taskParam.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"));
|
||||
taskParam.put("is_send", true);
|
||||
mzhcwTask.createTask(taskParam);
|
||||
PdmProductSpecServiceImpl.doRecord(SpecEnum.XX,null,Boolean.TRUE,null,whereJson.getString("material_barcode"));
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException e) {
|
||||
}
|
||||
if ("1".equals(is_error)) {
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "反馈成功!");
|
||||
return result;
|
||||
},"sendProductToFirstFloor",null);
|
||||
} else {
|
||||
if (StringUtils.isBlank(whereJson.getString("device_code")) || StringUtils.isBlank(whereJson.getString("material_barcode"))) {
|
||||
throw new BadRequestException("接口sendProductToFirstFloor,目标站点或子卷号参数为空!");
|
||||
}
|
||||
if (whereJson.getString("device_code").equals("null") || whereJson.getString("material_barcode").equals("null")) {
|
||||
throw new BadRequestException("接口sendProductToFirstFloor,目标站点或子卷号参数为null!");
|
||||
}
|
||||
result.put("status", HttpStatus.BAD_REQUEST.value());
|
||||
result.put("data", whereJson.getString("material_barcode"));
|
||||
RedissonUtils.lock(c -> {
|
||||
//1.查询满轴缓存位是否有空位
|
||||
List<BstIvtPackageinfoivt> MzPoints = packageinfoivtService
|
||||
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
|
||||
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
|
||||
.eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位"))
|
||||
.eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空"))
|
||||
.orderByDesc(BstIvtPackageinfoivt::getSort_seq));
|
||||
if (CollectionUtils.isEmpty(MzPoints)) {
|
||||
result.put("message", "满轴位无可用位置");
|
||||
return result;
|
||||
}
|
||||
List<BstIvtPackageinfoivt> empPoints = packageinfoivtService
|
||||
.selectNoTargetTaskPoints(PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"));
|
||||
if (CollectionUtils.isEmpty(empPoints)) {
|
||||
result.put("message", "空轴位无可用位置");
|
||||
return result;
|
||||
}
|
||||
// 创建前先判断是否有已创建相同任务
|
||||
List<String> taskTypes = new ArrayList<>(Arrays.asList(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"), PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"), PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"), PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)"), PackageInfoIvtEnum.TASK_TYPE.code("补空(管制区->空载具缓存位)")));
|
||||
List<SchBaseTask> existTaskList1 = taskService.getExistTasks(taskTypes);
|
||||
List<SchBaseTask> existTaskList2 = existTaskList1.stream().filter(r -> r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务")) || r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位")) || r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"))).collect(Collectors.toList());
|
||||
List<SchBaseTask> existTaskList3 = existTaskList1.stream().filter(r -> StringUtils.isNotBlank(r.getResponse_param())).collect(Collectors.toList());
|
||||
if (!CollectionUtils.isEmpty(existTaskList2) || !CollectionUtils.isEmpty(existTaskList3)) {
|
||||
result.put("message", "存在正在执行的输送线行架任务");
|
||||
return result;
|
||||
}
|
||||
List<BstIvtPackageinfoivt> sortEmpPoint = empPoints.stream().sorted(Comparator.comparing(BstIvtPackageinfoivt::getSort_seq)).collect(Collectors.toList());
|
||||
JSONObject taskParam = new JSONObject();
|
||||
taskParam.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
|
||||
taskParam.put("vehicle_code", whereJson.getString("material_barcode"));
|
||||
taskParam.put("point_code1", whereJson.getString("device_code"));
|
||||
taskParam.put("point_code2", MzPoints.get(0).getPoint_code());
|
||||
taskParam.put("point_code3", sortEmpPoint.get(0).getPoint_code());
|
||||
taskParam.put("point_code4", whereJson.getString("device_code"));
|
||||
taskParam.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"));
|
||||
taskParam.put("is_send", true);
|
||||
mzhcwTask.createTask(taskParam);
|
||||
PdmProductSpecServiceImpl.doRecord(SpecEnum.XX, null, Boolean.TRUE, null, whereJson.getString("material_barcode"));
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException e) {
|
||||
}
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "反馈成功!");
|
||||
return result;
|
||||
}, "sendProductToFirstFloor", null);
|
||||
}
|
||||
|
||||
log.info("sendProductToFirstFloor调用成功--------------------------:" + result);
|
||||
return result;
|
||||
}
|
||||
@@ -1923,13 +1930,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
// 创建前先判断是否有已创建相同任务
|
||||
List<String> taskTypes = new ArrayList<>(Arrays.asList(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"), PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"), PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"), PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)"), PackageInfoIvtEnum.TASK_TYPE.code("补空(管制区->空载具缓存位)")));
|
||||
List<SchBaseTask> existTaskList1 = taskService.getExistTasks(taskTypes);
|
||||
List<SchBaseTask> existTaskList2 = existTaskList1.stream().filter(r -> r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"))||r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"))||r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"))).collect(Collectors.toList());
|
||||
List<SchBaseTask> existTaskList2 = existTaskList1.stream().filter(r -> r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务")) || r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位")) || r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"))).collect(Collectors.toList());
|
||||
List<SchBaseTask> existTaskList3 = existTaskList1.stream().filter(r -> StringUtils.isNotBlank(r.getResponse_param())).collect(Collectors.toList());
|
||||
if (ObjectUtils.isEmpty(existTaskList2)&&ObjectUtils.isEmpty(existTaskList3)) {
|
||||
if (ObjectUtils.isEmpty(existTaskList2) && ObjectUtils.isEmpty(existTaskList3)) {
|
||||
jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"));
|
||||
jo.put("is_send", true);
|
||||
mzhcwTask.createTask(jo);
|
||||
PdmProductSpecServiceImpl.doRecord(SpecEnum.XX,null,Boolean.TRUE,null,containerName);
|
||||
PdmProductSpecServiceImpl.doRecord(SpecEnum.XX, null, Boolean.TRUE, null, containerName);
|
||||
|
||||
//不确定起点的空载具缓存位->输送线任务
|
||||
createTask3(containerName);
|
||||
@@ -1965,16 +1972,16 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
// 创建前先判断是否有已创建相同任务
|
||||
List<String> taskTypes = new ArrayList<>(Arrays.asList(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"), PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"), PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"), PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)"), PackageInfoIvtEnum.TASK_TYPE.code("补空(管制区->空载具缓存位)")));
|
||||
List<SchBaseTask> existTaskList1 = taskService.getExistTasks(taskTypes);
|
||||
List<SchBaseTask> existTaskList2 = existTaskList1.stream().filter(r -> r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"))||r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"))||r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"))).collect(Collectors.toList());
|
||||
List<SchBaseTask> existTaskList2 = existTaskList1.stream().filter(r -> r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务")) || r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位")) || r.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"))).collect(Collectors.toList());
|
||||
List<SchBaseTask> existTaskList3 = existTaskList1.stream().filter(r -> StringUtils.isNotBlank(r.getResponse_param())).collect(Collectors.toList());
|
||||
if (ObjectUtils.isEmpty(existTaskList2)&&ObjectUtils.isEmpty(existTaskList3)) {
|
||||
if (ObjectUtils.isEmpty(existTaskList2) && ObjectUtils.isEmpty(existTaskList3)) {
|
||||
jo.put("point_code3", pointCode3);
|
||||
//终点为输送线点位
|
||||
jo.put("point_code4", pointCode4);
|
||||
jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"));
|
||||
jo.put("is_send", true);
|
||||
mzhcwTask.createTask(jo);
|
||||
PdmProductSpecServiceImpl.doRecord(SpecEnum.XX,null,Boolean.TRUE,null,containerName);
|
||||
PdmProductSpecServiceImpl.doRecord(SpecEnum.XX, null, Boolean.TRUE, null, containerName);
|
||||
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "反馈成功!");
|
||||
@@ -2023,11 +2030,11 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
}
|
||||
// 5-木箱入库.木箱回库
|
||||
String materialBarcode = whereJson.getString("material_barcode");
|
||||
if (materialBarcode.contains("BRMX")){
|
||||
if (materialBarcode.contains("BRMX")) {
|
||||
String brBox = Arrays.asList(materialBarcode.split(",")).get(0);
|
||||
whereJson.put("box_no", brBox.replace("BR", ""));
|
||||
inBoxManageService.inBox(whereJson);
|
||||
}else {
|
||||
} else {
|
||||
if (whereJson.getIntValue("weight") <= 0) {
|
||||
throw new BadRequestException("上报的重量不能为0!");
|
||||
}
|
||||
@@ -2046,39 +2053,39 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
.lt("task_status", TaskStatusEnum.EXECUTING.getCode()));
|
||||
JSONObject jsonExt = WQLObject.getWQLObject("md_pb_storagevehicleext").query("storagevehicle_code = '" + whereJson.getString("vehicle_code") + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(jsonExt)) {
|
||||
errorMsg.add("载具无数据"+whereJson.getString("vehicle_code"));
|
||||
}else {
|
||||
errorMsg.add("载具无数据" + whereJson.getString("vehicle_code"));
|
||||
} else {
|
||||
String pcsn = jsonExt.getString("pcsn");
|
||||
if (StringUtils.isNotEmpty(pcsn)){
|
||||
if (StringUtils.isNotEmpty(pcsn)) {
|
||||
JSONArray stIvtStructattr = WQLObject.getWQLObject("st_ivt_structattr").query("storagevehicle_code = '" + pcsn + "'").getResultJSONArray(0);
|
||||
if (stIvtStructattr != null && stIvtStructattr.size() > 0) {
|
||||
errorMsg.add("载具"+whereJson.getString("vehicle_code")+"已绑定"+pcsn);
|
||||
errorMsg.add("载具" + whereJson.getString("vehicle_code") + "已绑定" + pcsn);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!compaerResult){
|
||||
errorMsg.add("称重"+current_weight+"不匹配"+box_weight);
|
||||
if (!compaerResult) {
|
||||
errorMsg.add("称重" + current_weight + "不匹配" + box_weight);
|
||||
Param notify = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("weight_notify");
|
||||
if (notify!=null && StringUtils.isNotEmpty(notify.getValue())){
|
||||
AutoSendFeiShu.sendFeiShuMsg(notify.getValue(),box_no+"称重"+current_weight+",理论"+box_weight,"二期称重异常提醒");
|
||||
if (notify != null && StringUtils.isNotEmpty(notify.getValue())) {
|
||||
AutoSendFeiShu.sendFeiShuMsg(notify.getValue(), box_no + "称重" + current_weight + ",理论" + box_weight, "二期称重异常提醒");
|
||||
}
|
||||
}
|
||||
if (!inbound){
|
||||
if (!inbound) {
|
||||
errorMsg.add("手动至异常口");
|
||||
}
|
||||
if (count>0){
|
||||
errorMsg.add(whereJson.getString("vehicle_code")+"存在任务");
|
||||
if (count > 0) {
|
||||
errorMsg.add(whereJson.getString("vehicle_code") + "存在任务");
|
||||
}
|
||||
//"material_barcode":"C1101,","device_code":"RK1018","weight":500.95,"vehicle_code":"B01401","type":"1"
|
||||
if (CollectionUtils.isEmpty(errorMsg)) {
|
||||
whereJson.put("bill_type", IOSEnum.IN_TYPE.code("生产入库"));
|
||||
inBussManageService.inTask(whereJson);
|
||||
PdmProductSpecServiceImpl.doRecord(SpecEnum.RK,null,Boolean.TRUE,null,containers);
|
||||
PdmProductSpecServiceImpl.doRecord(SpecEnum.RK, null, Boolean.TRUE, null, containers);
|
||||
} else {
|
||||
iPdmBiContainerinboundService
|
||||
.update(new UpdateWrapper<PdmBiContainerinbound>()
|
||||
.set("remark",JSONObject.toJSONString(errorMsg))
|
||||
.eq("box",box_no));
|
||||
.set("remark", JSONObject.toJSONString(errorMsg))
|
||||
.eq("box", box_no));
|
||||
//更新子卷入库备注信息
|
||||
JSONObject jsonTaskParam = new JSONObject();
|
||||
//创建异常任务去异常入库口
|
||||
@@ -2100,14 +2107,14 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("status", IOSEnum.IS_NOTANDYES.code("否"));
|
||||
WQLObject.getWQLObject("pdm_bi_subpackagerelation")
|
||||
.update(param,"package_box_sn = '"+jsonObject.getString("box_no")+"'");
|
||||
.update(param, "package_box_sn = '" + jsonObject.getString("box_no") + "'");
|
||||
|
||||
jsonTaskParam.put("request_param", request_param);
|
||||
TwoExceptionInTask bean = SpringContextHolder.getBean(TwoExceptionInTask.class);
|
||||
bean.createTask(jsonTaskParam);
|
||||
bean.immediateNotifyAcs(null);
|
||||
PdmProductSpecServiceImpl.doRecord(SpecEnum.TYCK,null,Boolean.FALSE,errorMsg.toString(),containers);
|
||||
}
|
||||
PdmProductSpecServiceImpl.doRecord(SpecEnum.TYCK, null, Boolean.FALSE, errorMsg.toString(), containers);
|
||||
}
|
||||
}
|
||||
|
||||
} else if (type.equals(IOSEnum.ACSTOLMS_TYPE.code("空盘入库"))) {
|
||||
@@ -2139,20 +2146,20 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
inBoxManageService.inBox(whereJson);
|
||||
} else if (type.equals(IOSEnum.ACSTOLMS_TYPE.code("退货入库"))) {
|
||||
String materialBarcode = whereJson.getString("material_barcode");
|
||||
if(StrUtil.isEmpty(materialBarcode)){
|
||||
if (StrUtil.isEmpty(materialBarcode)) {
|
||||
throw new BadRequestException("当前木箱号不能为空!");
|
||||
}
|
||||
String[] box_arr = materialBarcode.split("-");
|
||||
if (box_arr.length < 2) {
|
||||
// 处理分割结果不足的情况
|
||||
throw new BadRequestException("当前木箱号数据异常!"+box_arr.toString());
|
||||
throw new BadRequestException("当前木箱号数据异常!" + box_arr.toString());
|
||||
}
|
||||
if (box_arr[1].equals("9")){
|
||||
if (box_arr[1].equals("9")) {
|
||||
//空木箱入库
|
||||
// -{"material_barcode":"MX250324000091-1","device_code":"CK2005","vehicle_code":"B00165","type":"6"}
|
||||
whereJson.put("box_no", box_arr[0]);
|
||||
inBoxManageService.inBox(whereJson);
|
||||
}else {
|
||||
} else {
|
||||
//退货入库
|
||||
WQLObject vehicleTab = WQLObject.getWQLObject("md_pb_storagevehicleinfo");
|
||||
// 载具扩展属性表
|
||||
@@ -2183,8 +2190,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
.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") + "存在执行的任务");
|
||||
}
|
||||
JSONObject ext_jo = veExtTab.query("storagevehicle_code = '" + jsonVehicle.getString("storagevehicle_code") + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(ext_jo)) {
|
||||
@@ -2199,10 +2206,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
veExtTab.insert(jsonVeExt);
|
||||
} else {
|
||||
String pcsn = ext_jo.getString("pcsn");
|
||||
if (StringUtils.isNotEmpty(pcsn)){
|
||||
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);
|
||||
}
|
||||
}
|
||||
ext_jo.put("pcsn", whereJson.getString("box_no"));
|
||||
@@ -2515,7 +2522,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
updateWrapper.set(PdmBiSlittingproductionplan::getWeight, NumberUtil.round(weight, 2).toString())
|
||||
.eq(PdmBiSlittingproductionplan::getContainer_name, subVolume);
|
||||
boolean update = slittingproductionplanService.update(updateWrapper);
|
||||
PdmProductSpecServiceImpl.doRecord(SpecEnum.FQ_WG,param,Boolean.TRUE,null,subVolume);
|
||||
PdmProductSpecServiceImpl.doRecord(SpecEnum.FQ_WG, param, Boolean.TRUE, null, subVolume);
|
||||
if (update) {
|
||||
res.put("code", cn.hutool.http.HttpStatus.HTTP_OK);
|
||||
res.put("message", "更新成功!");
|
||||
@@ -2534,33 +2541,33 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
@Override
|
||||
public JSONObject getBoxInfo(JSONObject param) {
|
||||
String material_barcode = param.getString("material_barcode");
|
||||
if (StringUtils.isEmpty(material_barcode)){
|
||||
if (StringUtils.isEmpty(material_barcode)) {
|
||||
throw new BadRequestException("material_barcode参数不能为空");
|
||||
}
|
||||
String isUncap = "1";
|
||||
String boxOr子卷 = material_barcode.split("-")[0];
|
||||
BstIvtBoxinfo boxNo;
|
||||
String desiccantTemplate = null;
|
||||
if (boxOr子卷.contains("MX")){
|
||||
if (boxOr子卷.contains("MX")) {
|
||||
BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.getOne(
|
||||
new QueryWrapper<BstIvtBoxinfo>().lambda()
|
||||
.eq(BstIvtBoxinfo::getBox_no, boxOr子卷)
|
||||
);
|
||||
if (boxDao==null){
|
||||
throw new BadRequestException("当前木箱码在木箱表不存在"+boxOr子卷);
|
||||
if (boxDao == null) {
|
||||
throw new BadRequestException("当前木箱码在木箱表不存在" + boxOr子卷);
|
||||
}
|
||||
boxNo=boxDao;
|
||||
}else {
|
||||
boxNo = boxDao;
|
||||
} else {
|
||||
JSONObject sub_jo = WQLObject.getWQLObject("pdm_bi_subpackagerelation")
|
||||
.query("container_name = '" + boxOr子卷 + "' order by create_time desc").uniqueResult(0);
|
||||
if (sub_jo==null || StringUtils.isEmpty(sub_jo.getString("package_box_sn"))){
|
||||
throw new BadRequestException("当前子卷不存在子卷包装关系"+boxOr子卷);
|
||||
if (sub_jo == null || StringUtils.isEmpty(sub_jo.getString("package_box_sn"))) {
|
||||
throw new BadRequestException("当前子卷不存在子卷包装关系" + boxOr子卷);
|
||||
}
|
||||
BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.getOne(
|
||||
new QueryWrapper<BstIvtBoxinfo>().lambda()
|
||||
.eq(BstIvtBoxinfo::getBox_no, sub_jo.getString("package_box_sn"))
|
||||
);
|
||||
boxNo=boxDao;
|
||||
boxNo = boxDao;
|
||||
String material_type = sub_jo.getString("material_type");
|
||||
if (material_type.equals("FG1")) {
|
||||
desiccantTemplate = "6";
|
||||
@@ -2732,7 +2739,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
JSONObject vehicle_info = WQLObject.getWQLObject("md_pb_storagevehicleext").query("storagevehicle_code = '" + material_barcode + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(vehicle_info)) {
|
||||
vehicle_info = WQLObject.getWQLObject("md_pb_storagevehicleext").query("storagevehicle_code = '" + vehicle_code + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(vehicle_info)){
|
||||
if (ObjectUtil.isEmpty(vehicle_info)) {
|
||||
throw new BadRequestException("未查询到载具号【" + vehicle_code + "】对应的载具信息!");
|
||||
}
|
||||
}
|
||||
@@ -2748,18 +2755,18 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
if (ObjectUtil.isNotEmpty(sub_jo)) {
|
||||
//木箱类型
|
||||
String box_type = sub_jo.getString("box_type");
|
||||
if(ObjectUtil.isEmpty(box_type)){
|
||||
if (ObjectUtil.isEmpty(box_type)) {
|
||||
throw new BadRequestException("未查询到木箱号【" + material_barcode + "】对应的包装关系缺少木箱类型信息!");
|
||||
}
|
||||
//查询木箱类型数据
|
||||
LambdaQueryWrapper<MdpbBoxtype> queryWrapper = new QueryWrapper<MdpbBoxtype>().lambda();
|
||||
queryWrapper.eq(MdpbBoxtype::getBox_type,box_type);
|
||||
queryWrapper.eq(MdpbBoxtype::getBox_type, box_type);
|
||||
MdpbBoxtype boxType = iMdpbBoxtypeService.getOne(queryWrapper);
|
||||
if(ObjectUtil.isEmpty(boxType)){
|
||||
if (ObjectUtil.isEmpty(boxType)) {
|
||||
throw new BadRequestException("未查询到木箱类型【" + box_type + "】信息!");
|
||||
}
|
||||
desiccantTemplate = String.valueOf(boxType.getDesiccant_num());
|
||||
}else{
|
||||
} else {
|
||||
throw new BadRequestException("未查询到木箱号【" + material_barcode + "】对应的包装关系!");
|
||||
}
|
||||
//根据木箱高度,判断入库仓位的高度
|
||||
@@ -2888,13 +2895,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
if (ObjectUtil.isEmpty(qzzSize)) {
|
||||
throw new BadRequestException("气涨轴规格不能为空!");
|
||||
}
|
||||
String qzz= qzzSize.substring(qzzSize.length() - 3);
|
||||
String qzz = qzzSize.substring(qzzSize.length() - 3);
|
||||
String[] split = qzz.split("-");
|
||||
String size = split[0];
|
||||
String qzz_generation = split[1];
|
||||
|
||||
// 获取空位
|
||||
List<BstIvtShafttubeivt> shafttubeivts = shafttubeivtService.getNotTaskEmptyShaftCache(size, qzz_generation,"0");
|
||||
List<BstIvtShafttubeivt> shafttubeivts = shafttubeivtService.getNotTaskEmptyShaftCache(size, qzz_generation, "0");
|
||||
if (shafttubeivts.size() == 0) {
|
||||
throw new BadRequestException("未找到可存放气涨轴规格「" + qzzSize + "」的空暂存位");
|
||||
}
|
||||
|
||||
@@ -153,4 +153,11 @@ public class LmsToMesController {
|
||||
public ResponseEntity<Object> GetInspectionResult(@RequestBody JSONObject jo) {
|
||||
return new ResponseEntity<>(lmsToMesService.getInspectionResult(jo), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/GetChildWeightIsSamplePDA")
|
||||
@Log("判断子卷是否是NG卷")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> GetChildWeightIsSamplePDA(@RequestBody JSONObject jo) {
|
||||
return new ResponseEntity<>(lmsToMesService.getInspectionResult(jo), HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -186,4 +186,6 @@ public interface LmsToMesService {
|
||||
JSONObject BoxDataCollectionSubmit2(JSONObject jo);
|
||||
|
||||
JSONObject getInspectionResult(JSONObject jo);
|
||||
|
||||
JSONObject GetChildWeightIsSamplePDA(JSONObject jo);
|
||||
}
|
||||
|
||||
@@ -981,9 +981,9 @@ public class LmsToMesServiceImpl implements LmsToMesService {
|
||||
if ("E".equals(RTYPE)) {
|
||||
throw new BadRequestException(result.getString("RTMSG"));
|
||||
}
|
||||
PdmProductSpecServiceImpl.doRecord(SpecEnum.BZ_MES,param,Boolean.TRUE,null,list);
|
||||
PdmProductSpecServiceImpl.doRecord(SpecEnum.BZ_MES, param, Boolean.TRUE, null, list);
|
||||
} catch (Exception e) {
|
||||
PdmProductSpecServiceImpl.doRecord(SpecEnum.BZ_MES,param,Boolean.FALSE,e.getMessage(),list);
|
||||
PdmProductSpecServiceImpl.doRecord(SpecEnum.BZ_MES, param, Boolean.FALSE, e.getMessage(), list);
|
||||
throw new BadRequestException("MES提示错误:" + e.getMessage());
|
||||
}
|
||||
return result;
|
||||
@@ -1022,25 +1022,25 @@ public class LmsToMesServiceImpl implements LmsToMesService {
|
||||
JSONArray rows = new JSONArray();
|
||||
|
||||
JSONObject row1 = new JSONObject();
|
||||
row1.put("DataPointName","保护棉是否填充");
|
||||
row1.put("DataType","7");
|
||||
row1.put("DataValue","true");
|
||||
row1.put("DataCollectionDefId","001c61800000004f");
|
||||
row1.put("DataCollectionDefName","PACKAGE");
|
||||
row1.put("DataPointName", "保护棉是否填充");
|
||||
row1.put("DataType", "7");
|
||||
row1.put("DataValue", "true");
|
||||
row1.put("DataCollectionDefId", "001c61800000004f");
|
||||
row1.put("DataCollectionDefName", "PACKAGE");
|
||||
rows.add(row1);
|
||||
JSONObject row2 = new JSONObject();
|
||||
row2.put("DataPointName","信息核对准确");
|
||||
row2.put("DataType","7");
|
||||
row2.put("DataValue","true");
|
||||
row2.put("DataCollectionDefId","001c61800000004f");
|
||||
row2.put("DataCollectionDefName","PACKAGE");
|
||||
row2.put("DataPointName", "信息核对准确");
|
||||
row2.put("DataType", "7");
|
||||
row2.put("DataValue", "true");
|
||||
row2.put("DataCollectionDefId", "001c61800000004f");
|
||||
row2.put("DataCollectionDefName", "PACKAGE");
|
||||
rows.add(row2);
|
||||
JSONObject row3 = new JSONObject();
|
||||
row3.put("DataPointName","木箱是否防护");
|
||||
row3.put("DataType","7");
|
||||
row3.put("DataValue","true");
|
||||
row3.put("DataCollectionDefId","001c61800000004f");
|
||||
row3.put("DataCollectionDefName","PACKAGE");
|
||||
row3.put("DataPointName", "木箱是否防护");
|
||||
row3.put("DataType", "7");
|
||||
row3.put("DataValue", "true");
|
||||
row3.put("DataCollectionDefId", "001c61800000004f");
|
||||
row3.put("DataCollectionDefName", "PACKAGE");
|
||||
rows.add(row3);
|
||||
param.put("DataPoints", rows);
|
||||
log.info("BoxDataCollectionSubmit2接口请求参数为:-------------------" + param.toString());
|
||||
@@ -1054,13 +1054,13 @@ public class LmsToMesServiceImpl implements LmsToMesService {
|
||||
|
||||
String RTYPE = result.getString("RTYPE");
|
||||
if ("E".equals(RTYPE)) {
|
||||
throw new BadRequestException("MES提示错误:" +result.getString("RTMSG"));
|
||||
throw new BadRequestException("MES提示错误:" + result.getString("RTMSG"));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
PdmProductSpecServiceImpl.doRecord(SpecEnum.YX_MES,param,Boolean.FALSE,e.getMessage(),containerName);
|
||||
PdmProductSpecServiceImpl.doRecord(SpecEnum.YX_MES, param, Boolean.FALSE, e.getMessage(), containerName);
|
||||
throw new BadRequestException("MES错误:" + e.getMessage());
|
||||
}
|
||||
PdmProductSpecServiceImpl.doRecord(SpecEnum.YX_MES,param,Boolean.TRUE,null,containerName);
|
||||
PdmProductSpecServiceImpl.doRecord(SpecEnum.YX_MES, param, Boolean.TRUE, null, containerName);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -1100,7 +1100,7 @@ public class LmsToMesServiceImpl implements LmsToMesService {
|
||||
|
||||
String RTYPE = result.getString("RTYPE");
|
||||
if ("E".equals(RTYPE)) {
|
||||
throw new BadRequestException("MES提示错误:" +result.getString("RTMSG"));
|
||||
throw new BadRequestException("MES提示错误:" + result.getString("RTMSG"));
|
||||
}
|
||||
|
||||
IpdmBiSubpackagerelationService subpackagerelationService = SpringContextHolder.getBean(IpdmBiSubpackagerelationService.class);
|
||||
@@ -1224,4 +1224,54 @@ public class LmsToMesServiceImpl implements LmsToMesService {
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject GetChildWeightIsSamplePDA(JSONObject param) {
|
||||
String container_name = param.getString("container_name");
|
||||
|
||||
if (StrUtil.isEmpty(container_name)) {
|
||||
throw new BadRequestException("子卷号不能为空!");
|
||||
}
|
||||
|
||||
JSONObject result = new JSONObject();
|
||||
|
||||
log.info("GetChildWeightIsSamplePDA接口输入参数为:-------------------" + param.toString());
|
||||
|
||||
String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_URL").getValue();
|
||||
String api = "CamstarApi/GetChildWeightIsSamplePDA";
|
||||
url = url + api;
|
||||
|
||||
String UserName = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_USERNAME").getValue();
|
||||
String Password = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_PASSWORD").getValue();
|
||||
param.put("UserName", UserName);
|
||||
param.put("Password", Password);
|
||||
param.put("ContainerName", container_name);
|
||||
|
||||
|
||||
try {
|
||||
String resultMsg = HttpRequest.post(url)
|
||||
.body(String.valueOf(param))
|
||||
.timeout(time_out)//超时时间,毫秒
|
||||
.execute().body();
|
||||
result = JSONObject.parseObject(resultMsg);
|
||||
log.info("GetChildWeightIsSamplePDA接口输出参数为:-------------------" + result.toString());
|
||||
|
||||
String RTYPE = result.getString("RTYPE");
|
||||
if ("E".equals(RTYPE)) {
|
||||
throw new BadRequestException(result.getString("RTMSG"));
|
||||
}
|
||||
JSONObject rtdat = result.getJSONObject("RTDAT");
|
||||
result.put("result", false);
|
||||
result.put("rtdat", rtdat);
|
||||
if (ObjectUtil.isNotEmpty(rtdat.getString("IsSampleTest")) && ObjectUtil.isNotEmpty(rtdat.getString("SampleCount")) && ObjectUtil.isNotEmpty(rtdat.getString("SampleTestResult"))) {
|
||||
if (rtdat.getString("IsSampleTest").equals(rtdat.getString("SampleCount")) && "PASS".equals(rtdat.getString("SampleTestResult"))) {
|
||||
result.put("result", true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
throw new BadRequestException("MES提示错误:" + e.getMessage());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user