# Conflicts:
#	lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/InBussManageServiceImpl.java
This commit is contained in:
2024-05-29 16:26:56 +08:00
51 changed files with 759 additions and 321 deletions

View File

@@ -1,6 +1,7 @@
package org.nl.b_lms.bst.ivt.shafttubeivt.service.dao.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.nl.b_lms.bst.ivt.shafttubeivt.service.dao.BstIvtShafttubeivt;
import java.util.List;
@@ -29,5 +30,5 @@ public interface BstIvtShafttubeivtMapper extends BaseMapper<BstIvtShafttubeivt>
* @param startPoint 点位信息(包含:尺寸、类型、位置)
* @return /
*/
List<BstIvtShafttubeivt> getNotTaskShaftCacheEmpty(BstIvtShafttubeivt startPoint);
List<BstIvtShafttubeivt> getNotTaskShaftCacheEmpty(@Param("startPoint") BstIvtShafttubeivt startPoint);
}

View File

@@ -40,9 +40,11 @@
FROM `bst_ivt_shafttubeivt` b
WHERE b.have_qzz = '0'
AND b.point_type = '6'
AND b.qzz_size = #{qzz_size}
AND b.qzz_generation = #{qzz_generation}
AND b.point_location = #{point_location}
AND b.qzz_size = #{startPoint.qzz_size}
<if test="startPoint.qzz_size != 6">
AND b.qzz_generation = #{startPoint.qzz_generation}
</if>
AND b.point_location = #{startPoint.point_location}
AND 0 = (SELECT COUNT(*) FROM sch_base_task t WHERE t.task_status <![CDATA[ < ]]> '07' AND t.point_code1 = b.point_code)
ORDER BY b.sort_seq ASC
</select>

View File

@@ -46,4 +46,11 @@ public class VehicleTwoController {
public ResponseEntity<Object> returnIn(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(vehicleTwoService.returnIn(whereJson), HttpStatus.OK);
}
@PostMapping("/reback")
@Log("返检、改切入库")
@SaIgnore
public ResponseEntity<Object> reback(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(vehicleTwoService.reback(whereJson), HttpStatus.OK);
}
}

View File

@@ -41,4 +41,15 @@ public interface VehicleTwoService {
* @return JSONObject返回前端参数~
*/
JSONObject returnIn(JSONObject whereJson);
/**
*
* @param whereJson {
* box_no: 木箱号
* vehicle_code: 载具号
* point_code: 点位
* }
* @return JSONObject返回前端参数~
*/
JSONObject reback(JSONObject whereJson);
}

View File

@@ -11,8 +11,10 @@ import org.nl.b_lms.sch.point.service.IschBasePointService;
import org.nl.b_lms.sch.tasks.TwoInEmpExcepTask;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.InBoxManageService;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.InBussManageService;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.InVehicleManageService;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.ext.acs.service.WmsToAcsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -46,6 +48,9 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
@Autowired
private IschBasePointService ischBasePointService;
@Autowired
private InBussManageService inBussManageService;
@Override
@Transactional(rollbackFor = Exception.class)
public JSONObject vehicleIn(JSONObject whereJson) {
@@ -77,7 +82,7 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
JSONObject data = device_data.getJSONArray("data").getJSONObject(0);
// 判断是否有货 且托盘类型相同、数量小于5
if (vehicle_type.equals(data.getString("container_type")) && data.getIntValue("qty") < 5 || data.getIntValue("qty") == 0){
if (vehicle_type.equals(data.getString("container_type")) && data.getIntValue("qty") < 5 || data.getIntValue("qty") == 0) {
// 生成入库叠盘机输送任务
JSONObject jsonTaskParam = new JSONObject();
jsonTaskParam.put("task_type", "010715");
@@ -87,6 +92,8 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
jsonTaskParam.put("vehicle_code", whereJson.getString("vehicle_code"));
JSONObject param = new JSONObject();
param.put("containerType", whereJson.getString("vehicle_type"));
//0表示为空托盘
param.put("heightLevel", "0");
jsonTaskParam.put("request_param", param.toString());
TwoInEmpExcepTask taskBean = new TwoInEmpExcepTask();
@@ -119,19 +126,20 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
(data2.getString("move").equals(IOSEnum.IS_NOTANDYES.code("是"))
&& data2.getIntValue("qty") < 5)
) {*/
// 生层到出库口叠盘机任务
JSONObject jsonTaskParam = new JSONObject();
jsonTaskParam.put("task_type", "010714");
jsonTaskParam.put("start_device_code", point_code);
jsonTaskParam.put("next_device_code", next_device_code);
jsonTaskParam.put("vehicle_code", whereJson.getString("vehicle_code"));
jsonTaskParam.put("vehicle_type", whereJson.getString("vehicle_type"));
JSONObject param = new JSONObject();
param.put("containerType", whereJson.getString("vehicle_type"));
jsonTaskParam.put("request_param", param.toString());
TwoInEmpExcepTask taskBean = new TwoInEmpExcepTask();
taskBean.createTask(jsonTaskParam);
taskBean.immediateNotifyAcs(null);
// 生层到出库口叠盘机任务
JSONObject jsonTaskParam = new JSONObject();
jsonTaskParam.put("task_type", "010714");
jsonTaskParam.put("start_device_code", point_code);
jsonTaskParam.put("next_device_code", next_device_code);
jsonTaskParam.put("vehicle_code", whereJson.getString("vehicle_code"));
jsonTaskParam.put("vehicle_type", whereJson.getString("vehicle_type"));
JSONObject param = new JSONObject();
param.put("containerType", whereJson.getString("vehicle_type"));
param.put("heightLevel", "0");
jsonTaskParam.put("request_param", param.toString());
TwoInEmpExcepTask taskBean = new TwoInEmpExcepTask();
taskBean.createTask(jsonTaskParam);
taskBean.immediateNotifyAcs(null);
/*} else {
result.put("message", "入库失败! 出库叠盘位已叠满!" + next_device_code);
return result;
@@ -158,4 +166,37 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
return result;
}
@Override
public JSONObject reback(JSONObject whereJson) {
String bill_type = whereJson.getString("bill_type");
whereJson.put("material_barcode",whereJson.getString("box_no"));
whereJson.put("device_code",whereJson.getString("point_code"));
//1-返检入库2-改切入库
if (bill_type.equals("1")){
whereJson.put("bill_type", IOSEnum.IN_TYPE.code("返检入库"));
}else if (bill_type.equals("2")){
whereJson.put("bill_type", IOSEnum.IN_TYPE.code("改切入库"));
}
whereJson.put("box_no", whereJson.getString("box_no"));
JSONArray resultJSONArray = WQLObject.getWQLObject("pdm_bi_subpackagerelation").query("package_box_sn = '" + whereJson.getString("material_barcode") + "' AND status = '0'").getResultJSONArray(0);
if (ObjectUtil.isEmpty(resultJSONArray)) {
throw new BadRequestException("未查询到子卷包装信息!");
}
String material_barcode = "";
for (int i = 0; i < resultJSONArray.size(); i++) {
JSONObject resultObj = resultJSONArray.getJSONObject(i);
if (i==0){
material_barcode = resultObj.getString("container_name");
}else {
material_barcode += "," + resultObj.getString("container_name");
}
}
whereJson.put("material_barcode", material_barcode);
inBussManageService.inTask(whereJson);
JSONObject result = new JSONObject();
result.put("message", "入库成功!");
return result;
}
}

View File

@@ -155,6 +155,10 @@ public class PdmBiSlittingproductionplan implements Serializable {
/** 子卷等级*/
private String level;
/** 子卷重量 */
private String weight;
/** 分切重量 */
private String paper_weight;
}

View File

@@ -165,7 +165,7 @@ public class TwoExcepionalMoveTask extends AbstractAcsTask {
json.put("create_id", SecurityUtils.getCurrentUserId());
json.put("create_name", SecurityUtils.getCurrentUsername());
json.put("create_time", DateUtil.now());
json.put("priority", "1");
json.put("priority", "3");
json.put("acs_task_type", "7");
WQLObject.getWQLObject("SCH_BASE_Task").insert(json);

View File

@@ -76,7 +76,6 @@ public class TwoInBoxTrussTask extends AbstractAcsTask {
map.put("task_status", TaskStatusEnum.EXECUTING.getCode());
}
// 完成
if (status.equals(TaskStatusEnum.FINISHED.getCode())) {

View File

@@ -50,6 +50,7 @@ public class TwoInEmpTask extends AbstractAcsTask {
.task_type(json.getString("acs_task_type"))
.start_device_code(json.getString("point_code1"))
.next_device_code(json.getString("point_code2"))
.interaction_json(json.getJSONObject("request_param"))
.vehicle_code(json.getString("vehicle_code"))
.priority(json.getString("priority"))
.class_type(json.getString("task_type"))
@@ -165,6 +166,7 @@ public class TwoInEmpTask extends AbstractAcsTask {
json.put("point_code1", form.getString("start_device_code"));
json.put("point_code2", form.getString("next_device_code"));
json.put("handle_class", this.getClass().getName());
json.put("request_param",form.getString("request_param"));
json.put("create_id", SecurityUtils.getCurrentUserId());
json.put("create_name", SecurityUtils.getCurrentUsername());
json.put("create_time", DateUtil.now());

View File

@@ -87,6 +87,7 @@ public class TwoLashTask extends AbstractAcsTask {
interaction_json.put("height",dao.get(0).getBox_high());
interaction_json.put("template","2");
interaction_json.put("bindingTimes","1");
interaction_json.put("isBinding", IOSEnum.IS_SEND.code(""));
char dtl_type = json.getString("task_type").charAt(json.getString("task_type").length() - 1);
AcsTaskDto dto = AcsTaskDto.builder()

View File

@@ -91,6 +91,12 @@ public class TwoOutBoxTask extends AbstractAcsTask {
jsonAttr.put("lock_type",IOSEnum.LOCK_TYPE.code("未锁定"));
jsonAttr.put("storagevehicle_code","");
attrTab.update(jsonAttr);
}
// 取消

View File

@@ -167,7 +167,7 @@ public class DjqTask extends AbstractAcsTask {
.is_send(isSend ? "1" : "0")
.acs_task_type(StrUtil.isEmpty(form.getString("acs_task_type")) ? PackageInfoIvtEnum.ACS_TASK_TYPE.code("agv任务") : form.getString("acs_task_type"))
.task_status(StrUtil.isEmpty(form.getString("task_status")) ? TaskStatusEnum.START_AND_POINT.getCode() : form.getString("task_status"))
//.product_area(StrUtil.isEmpty(form.getString("product_area")) ? "B2" : form.getString("product_area"))
.product_area(StrUtil.isEmpty(form.getString("product_area")) ? "B2" : form.getString("product_area"))
.build();
SchBaseTask task = new SchBaseTask();
BeanUtils.copyProperties(schBaseTaskVo, task);

View File

@@ -159,7 +159,7 @@ public class GzqTask extends AbstractAcsTask {
.is_send(isSend ? "1" : "0")
.acs_task_type(StrUtil.isEmpty(form.getString("acs_task_type")) ? PackageInfoIvtEnum.ACS_TASK_TYPE.code("agv任务") : form.getString("acs_task_type"))
.task_status(StrUtil.isEmpty(form.getString("task_status")) ? TaskStatusEnum.START_AND_POINT.getCode() : form.getString("task_status"))
//.product_area(StrUtil.isEmpty(form.getString("product_area")) ? "B2" : form.getString("product_area"))
.product_area(StrUtil.isEmpty(form.getString("product_area")) ? "B2" : form.getString("product_area"))
.build();
SchBaseTask task = new SchBaseTask();
BeanUtils.copyProperties(schBaseTaskVo, task);

View File

@@ -176,7 +176,7 @@ public class KzjhcwTask extends AbstractAcsTask {
.is_send(isSend ? "1" : "0")
.acs_task_type(StrUtil.isEmpty(form.getString("acs_task_type")) ? PackageInfoIvtEnum.ACS_TASK_TYPE.code("agv任务") : form.getString("acs_task_type"))
.task_status(StrUtil.isEmpty(form.getString("task_status")) ? TaskStatusEnum.START_AND_POINT.getCode() : form.getString("task_status"))
//.product_area(StrUtil.isEmpty(form.getString("product_area")) ? "B2" : form.getString("product_area"))
.product_area(StrUtil.isEmpty(form.getString("product_area")) ? "B2" : form.getString("product_area"))
.build();
SchBaseTask task = new SchBaseTask();
BeanUtils.copyProperties(schBaseTaskVo, task);

View File

@@ -1,4 +1,5 @@
package org.nl.b_lms.sch.tasks.first_floor_area;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.BooleanUtil;
@@ -28,6 +29,7 @@ import org.nl.wms.sch.manage.TaskStatusEnum;
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.Arrays;
@@ -72,7 +74,6 @@ public class MzhcwTask extends AbstractAcsTask {
private SsxDjwTask ssxDjwTask;
@Override
public List<AcsTaskDto> addTask() {
ArrayList<AcsTaskDto> resultList = new ArrayList<>();
@@ -106,7 +107,7 @@ public class MzhcwTask extends AbstractAcsTask {
@Override
@Transactional(rollbackFor = Exception.class)
public void updateTaskStatus(JSONObject taskObj, String status) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq( SchBaseTask::getTask_id, taskObj.getString("task_id")), false);
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getTask_id, taskObj.getString("task_id")), false);
if (schBaseTask == null) {
throw new BadRequestException("输送线点位 -> 满轴缓存位更新接口任务号为空!");
}
@@ -133,100 +134,102 @@ public class MzhcwTask extends AbstractAcsTask {
throw new BadRequestException("找不到子卷信息!");
}
//子卷等级
String level = containerInfo.getLevel();
if (Arrays.stream(ContainerLevelEnum.values()).noneMatch(enumItem -> enumItem.getCode().equals(level))) {
throw new BadRequestException("非法的子卷等级!");
}
String level = containerInfo.getLevel() == null ? "1" : containerInfo.getLevel();
// if (Arrays.stream(ContainerLevelEnum.values()).noneMatch(enumItem -> enumItem.getCode().equals(level))) {
// throw new BadRequestException("非法的子卷等级!");
// }
//查询待检区和管制区库位情况
List<BstIvtPackageinfoivt> bstIvtPackageinfoivtList = packageinfoivtService
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
.orderByAsc(BstIvtPackageinfoivt::getSort_seq));
JSONObject toDjqTask = new JSONObject();
//获取子卷号
toDjqTask.put("vehicle_code", containerInfo.getContainer_name());
// 判断子卷等级属于待检区还是管制区,创建满轴缓存位到待检区或管制区的agv任务
if (Stream.of(ContainerLevelEnum.BEST, ContainerLevelEnum.WELL, ContainerLevelEnum.COMMON).anyMatch(enumItem -> enumItem.getCode().equals(level))) {
List<BstIvtPackageinfoivt> djqPointList = bstIvtPackageinfoivtList.stream()
.filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("待检区").equals(r.getPoint_status())
&& PackageInfoIvtEnum.IVT_STATUS.code("").equals(r.getIvt_status())).collect(Collectors.toList());
if (CollectionUtils.isEmpty(djqPointList)) {
throw new BadRequestException("待检区暂无空余库位!");
}
toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->待检区"));
toDjqTask.put("point_code1", schBaseTask.getPoint_code2());
toDjqTask.put("point_code2", djqPointList.get(0).getPoint_code());
djqTask.createTask(toDjqTask);
} else if (Stream.of(ContainerLevelEnum.REWORK, ContainerLevelEnum.CONTROL).anyMatch(enumItem -> enumItem.getCode().equals(level))) {
List<BstIvtPackageinfoivt> gkqPointList = bstIvtPackageinfoivtList.stream()
.filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("管制区").equals(r.getPoint_status())
&& PackageInfoIvtEnum.IVT_STATUS.code("").equals(r.getIvt_status())).collect(Collectors.toList());
if (CollectionUtils.isEmpty(gkqPointList)) {
throw new BadRequestException("管控区暂无空余库位!");
}
toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->管制区"));
toDjqTask.put("point_code1", schBaseTask.getPoint_code2());
toDjqTask.put("point_code2", gkqPointList.get(0).getPoint_code());
gzqTask.createTask(toDjqTask);
}
// JSONObject toDjqTask = new JSONObject();
// //获取子卷号
// toDjqTask.put("vehicle_code", containerInfo.getContainer_name());
// // 判断子卷等级属于待检区还是管制区,创建满轴缓存位到待检区或管制区的agv任务
// if (Stream.of(ContainerLevelEnum.BEST, ContainerLevelEnum.WELL, ContainerLevelEnum.COMMON).anyMatch(enumItem -> enumItem.getCode().equals(level))) {
// List<BstIvtPackageinfoivt> djqPointList = bstIvtPackageinfoivtList.stream()
// .filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("待检区").equals(r.getPoint_status())
// && PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status())).collect(Collectors.toList());
// if (CollectionUtils.isEmpty(djqPointList)) {
// throw new BadRequestException("待检区暂无空余库位!");
// }
// toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->待检区"));
// toDjqTask.put("point_code1", schBaseTask.getPoint_code2());
// toDjqTask.put("point_code2", djqPointList.get(0).getPoint_code());
// djqTask.createTask(toDjqTask);
// } else if (Stream.of(ContainerLevelEnum.REWORK, ContainerLevelEnum.CONTROL).anyMatch(enumItem -> enumItem.getCode().equals(level))) {
// List<BstIvtPackageinfoivt> gkqPointList = bstIvtPackageinfoivtList.stream()
// .filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("管制区").equals(r.getPoint_status())
// && PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status())).collect(Collectors.toList());
// if (CollectionUtils.isEmpty(gkqPointList)) {
// throw new BadRequestException("管控区暂无空余库位!");
// }
// toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->管制区"));
// toDjqTask.put("point_code1", schBaseTask.getPoint_code2());
// toDjqTask.put("point_code2", gkqPointList.get(0).getPoint_code());
// gzqTask.createTask(toDjqTask);
// }
//4.创建空载具到输送线任务
List<BstIvtPackageinfoivt> kzjPointList = bstIvtPackageinfoivtList.stream()
.filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位").equals(r.getPoint_status())
&& PackageInfoIvtEnum.IVT_STATUS.code("空载具").equals(r.getIvt_status())).collect(Collectors.toList());
JSONObject toSsxTask = new JSONObject();
toSsxTask.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
toSsxTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"));
toSsxTask.put("vehicle_code", containerInfo.getContainer_name());
//判断空载具缓存位是否有空载具库存,有就叫agv去任一一个位置搬空载具
if (CollectionUtils.isNotEmpty(kzjPointList)) {
//直接创建搬运空载具任务
toSsxTask.put("point_code1", kzjPointList.get(0).getPoint_code());
//终点为输送线点位
toSsxTask.put("point_code2", schBaseTask.getPoint_code1());
ssxDjwTask.createTask(toSsxTask);
} else {
//空载具缓存位没有可用的库存:判断是否有正在搬运空载具过来的任务,有的话不创建
//没有的话创建搬运空载具任务, 当任务完成的时候,补发桁架任务。
List<BstIvtPackageinfoivt> packageinfoivtList = packageinfoivtService.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
.eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"))
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")));
//todo 查找正在搬运到待检区的任务,假设只有一个
List<SchBaseTask> taskList = taskService.list(new LambdaUpdateWrapper<SchBaseTask>()
//执行中
.eq(SchBaseTask::getTask_status, TaskStatusEnum.EXECUTING.getCode())
.and(
r -> r.in(SchBaseTask::getPoint_code2, packageinfoivtList)
));
//没有正在搬运空载具过来的任务,创建搬运空载具任务
if (CollectionUtils.isEmpty(taskList)) {
//查询待检区或管制区有空载具的
List<BstIvtPackageinfoivt> djqOrGzqPointList = packageinfoivtService
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
.in(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.POINT_STATUS.code("管制区"))
.eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空载具")).orderByAsc(BstIvtPackageinfoivt::getSort_seq));
List<BstIvtPackageinfoivt> djqPointList = djqOrGzqPointList.stream().filter(r -> r.getPoint_status().equals(PackageInfoIvtEnum.POINT_STATUS.code("待检区"))).collect(Collectors.toList());
//待检区库位有空载具
if (CollectionUtils.isNotEmpty(djqPointList)) {
List<BstIvtPackageinfoivt> kzjPoint = packageinfoivtList.stream()
.filter(r -> PackageInfoIvtEnum.IVT_STATUS.code("空载具").equals(r.getIvt_status()))
.sorted(Comparator.comparing(BstIvtPackageinfoivt::getSort_seq))
.collect(Collectors.toList());
//创建搬运空载具任务
JSONObject toKzjhcwTask = new JSONObject();
// if (schBaseTask.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"))) {
List<BstIvtPackageinfoivt> kzjPointList = bstIvtPackageinfoivtList.stream()
.filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位").equals(r.getPoint_status())
&& PackageInfoIvtEnum.IVT_STATUS.code("空载具").equals(r.getIvt_status())).collect(Collectors.toList());
JSONObject toSsxTask = new JSONObject();
toSsxTask.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
toSsxTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"));
toSsxTask.put("vehicle_code", containerInfo.getContainer_name());
//判断空载具缓存位是否有空载具库存,有就叫桁架去任一一个位置搬空载具
if (CollectionUtils.isNotEmpty(kzjPointList)) {
//直接创建搬运空载具任务
toSsxTask.put("point_code1", kzjPointList.get(0).getPoint_code());
//终点为输送线点位
toSsxTask.put("point_code2", schBaseTask.getPoint_code1());
ssxDjwTask.createTask(toSsxTask);
} else {
//空载具缓存位没有可用的库存:判断是否有正在搬运空载具过来的任务,有的话不创建
//没有的话创建搬运空载具任务, 当任务完成的时候,补发桁架任务。
List<BstIvtPackageinfoivt> packageinfoivtList = packageinfoivtService.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
.eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"))
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")));
//todo 查找正在搬运到待检区的任务,假设只有一个
List<SchBaseTask> taskList = taskService.list(new LambdaUpdateWrapper<SchBaseTask>()
//执行中
.eq(SchBaseTask::getTask_status, TaskStatusEnum.EXECUTING.getCode())
.and(
r -> r.in(SchBaseTask::getPoint_code2, packageinfoivtList)
));
//没有正在搬运空载具过来的任务,创建搬运空载具任务
if (CollectionUtils.isEmpty(taskList)) {
//查询待检区或管制区有空载具的
List<BstIvtPackageinfoivt> djqOrGzqPointList = packageinfoivtService
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
.in(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.POINT_STATUS.code("管制区"))
.eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空载具")).orderByAsc(BstIvtPackageinfoivt::getSort_seq));
List<BstIvtPackageinfoivt> djqPointList = djqOrGzqPointList.stream().filter(r -> r.getPoint_status().equals(PackageInfoIvtEnum.POINT_STATUS.code("待检区"))).collect(Collectors.toList());
//待检区库位有空载具
if (CollectionUtils.isNotEmpty(djqPointList)) {
//优先去待检区取空载具
toKzjhcwTask.put("point_code1", djqPointList.get(0).getPoint_code());
} else {
List<BstIvtPackageinfoivt> kzjPoint = packageinfoivtList.stream()
.filter(r -> PackageInfoIvtEnum.IVT_STATUS.code("空载具").equals(r.getIvt_status()))
.sorted(Comparator.comparing(BstIvtPackageinfoivt::getSort_seq))
.collect(Collectors.toList());
//创建搬运空载具任务
JSONObject toKzjhcwTask = new JSONObject();
if (CollectionUtils.isNotEmpty(djqPointList)) {
//优先去待检区取空载具
toKzjhcwTask.put("point_code1", djqPointList.get(0).getPoint_code());
} else {
toKzjhcwTask.put("point_code1", djqOrGzqPointList.get(0).getPoint_code());
toKzjhcwTask.put("point_code1", djqOrGzqPointList.get(0).getPoint_code());
}
toKzjhcwTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("取空(待检区->空载具缓存位)"));
//送到到任意空载具缓存位
toKzjhcwTask.put("point_code2", kzjPoint.get(0).getPoint_code());
toKzjhcwTask.put("vehicle_code", containerInfo.getContainer_name());
kzjhcwTask.createTask(toKzjhcwTask);
}
toKzjhcwTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("取空(待检区->空载具缓存位)"));
//送到到任意空载具缓存位
toKzjhcwTask.put("point_code2", kzjPoint.get(0).getPoint_code());
toKzjhcwTask.put("vehicle_code", containerInfo.getContainer_name());
kzjhcwTask.createTask(toKzjhcwTask);
}
}
//}
}
}
// 取消
@@ -280,7 +283,7 @@ public class MzhcwTask extends AbstractAcsTask {
.is_send(isSend ? "1" : "0")
.acs_task_type(StrUtil.isEmpty(form.getString("acs_task_type")) ? PackageInfoIvtEnum.ACS_TASK_TYPE.code("agv任务") : form.getString("acs_task_type"))
.task_status(StrUtil.isEmpty(form.getString("task_status")) ? TaskStatusEnum.START_AND_POINT.getCode() : form.getString("task_status"))
//.product_area(StrUtil.isEmpty(form.getString("product_area")) ? "B2" : form.getString("product_area"))
.product_area(StrUtil.isEmpty(form.getString("product_area")) ? "B2" : form.getString("product_area"))
.build();
SchBaseTask task = new SchBaseTask();
BeanUtils.copyProperties(schBaseTaskVo, task);

View File

@@ -170,7 +170,7 @@ public class SsxDjwTask extends AbstractAcsTask {
.is_send(isSend ? "1" : "0")
.acs_task_type(StrUtil.isEmpty(form.getString("acs_task_type")) ? PackageInfoIvtEnum.ACS_TASK_TYPE.code("agv任务") : form.getString("acs_task_type"))
.task_status(StrUtil.isEmpty(form.getString("task_status")) ? TaskStatusEnum.START_AND_POINT.getCode() : form.getString("task_status"))
//.product_area(StrUtil.isEmpty(form.getString("product_area")) ? "B2" : form.getString("product_area"))
.product_area(StrUtil.isEmpty(form.getString("product_area")) ? "B2" : form.getString("product_area"))
.build();
SchBaseTask task = new SchBaseTask();
BeanUtils.copyProperties(schBaseTaskVo, task);

View File

@@ -32,6 +32,7 @@ import org.nl.wms.sch.manage.TaskStatusEnum;
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;
@@ -49,7 +50,6 @@ import java.util.stream.Collectors;
public class ZxDjwTask extends AbstractAcsTask {
@Resource
private DjqTask djqTask;
@Resource
@@ -202,7 +202,7 @@ public class ZxDjwTask extends AbstractAcsTask {
.is_send(isSend ? "1" : "0")
.acs_task_type(StrUtil.isEmpty(form.getString("acs_task_type")) ? PackageInfoIvtEnum.ACS_TASK_TYPE.code("agv任务") : form.getString("acs_task_type"))
.task_status(StrUtil.isEmpty(form.getString("task_status")) ? TaskStatusEnum.START_AND_POINT.getCode() : form.getString("task_status"))
//.product_area(StrUtil.isEmpty(form.getString("product_area")) ? "B2" : form.getString("product_area"))
.product_area(StrUtil.isEmpty(form.getString("product_area")) ? "B2" : form.getString("product_area"))
.build();
SchBaseTask task = new SchBaseTask();
BeanUtils.copyProperties(schBaseTaskVo, task);

View File

@@ -95,56 +95,9 @@ public class TrussCallAirShaftTask extends AbstractAcsTask {
// 更改任务状态为完成
task.setTask_status(TaskStatusEnum.FINISHED.getCode());
String startPoint = task.getPoint_code1();
String endPoint = task.getPoint_code2();
BstIvtCutpointivt startPointObj = bcutpointivtService.getOne(new LambdaQueryWrapper<BstIvtCutpointivt>()
.eq(BstIvtCutpointivt::getTruss_point_code1, startPoint).or()
.eq(BstIvtCutpointivt::getTruss_point_code2, startPoint));
BstIvtShafttubeivt endPointObj = shafttubeivtService.getOne(new LambdaQueryWrapper<BstIvtShafttubeivt>()
.eq(BstIvtShafttubeivt::getPoint_code, endPoint));
String requestParam = task.getRequest_param();
JSONObject extGroupData = JSONObject.parseObject(requestParam);
// 需要套轴就要把纸管信息进行维护
if ("1".equals(extGroupData.getString("is_bushing"))) {
// 获取分切计划(最多两个)需要获取子卷的纸管设置到点位上 获取分切计划dto中对应的需要套轴的分切计划 最多两个计划
String needPlan = extGroupData.getString("needPlan");
SlitterPlanDistinctDto planDistinctDto = JSONObject.parseObject(needPlan, SlitterPlanDistinctDto.class);
List<PdmBiSlittingproductionplan> needPlans = slittingproductionplanService.list(new LambdaQueryWrapper<PdmBiSlittingproductionplan>()
.eq(PdmBiSlittingproductionplan::getResource_name, planDistinctDto.getResource_name())
.eq(PdmBiSlittingproductionplan::getParent_container_name, planDistinctDto.getParent_container_name())
.eq(PdmBiSlittingproductionplan::getUp_or_down, planDistinctDto.getUp_or_down())
.eq(PdmBiSlittingproductionplan::getSplit_group, planDistinctDto.getSplit_group())
.eq(PdmBiSlittingproductionplan::getIs_paper_ok, "2"));
if (needPlans.size() == 0) {
throw new BadRequestException("找不到气涨轴编码【" + task.getVehicle_code() + "】对应的气涨轴");
}
for (PdmBiSlittingproductionplan plan : needPlans) {
if (SlitterConstant.SLITTER_SUB_VOLUME_LEFT.equals(plan.getLeft_or_right())) {
// 左卷
if (SlitterConstant.SLITTER_TYPE_PAPER.equals(plan.getPaper_tube_or_FRP())) {
endPointObj.setTube_code1(plan.getPaper_tube_material());
endPointObj.setTube_name1(plan.getPaper_tube_model());
} else {
endPointObj.setTube_code1(plan.getFRP_material());
endPointObj.setTube_name1(plan.getFRP_model());
}
endPointObj.setContainer_name1(plan.getContainer_name());
} else {
// 右卷
if (SlitterConstant.SLITTER_TYPE_PAPER.equals(plan.getPaper_tube_or_FRP())) {
endPointObj.setTube_code2(plan.getPaper_tube_material());
endPointObj.setTube_name2(plan.getPaper_tube_model());
} else {
endPointObj.setTube_code2(plan.getFRP_material());
endPointObj.setTube_name2(plan.getFRP_model());
}
endPointObj.setContainer_name2(plan.getContainer_name());
}
}
}
endPointObj.setHave_qzz("1");
endPointObj.setQzz_size(extGroupData.getString("qzz_size"));
TaskUtils.updateOptMessageByBShaftPoint(endPointObj);
shafttubeivtService.updateById(endPointObj);
// 起点清空
if (startPoint.equals(startPointObj.getTruss_point_code1())) {
startPointObj.setQzz_no1("");
@@ -156,7 +109,6 @@ public class TrussCallAirShaftTask extends AbstractAcsTask {
}
TaskUtils.updateOptMessageByBCutPoint(startPointObj);
bcutpointivtService.updateById(startPointObj);
}
// 取消
if (status.equals(IOSEnum.IS_NOTANDYES.code(""))) {

View File

@@ -149,6 +149,8 @@ public class AutoCallAirShaftTask {
if (oldQzzNo == null) {
throw new BadRequestException("当前气胀轴的编码为空!");
}
// 保存所需要的分切计划数据到点位上(套轴对接位)更新分切计划
saveCutPlanMessage(empty, needPlans, qzzSize);
// 最多两条
List<PdmBiSlittingproductionplan> oldPlans = slittingproductionplanService.getByQzzNo(oldQzzNo);
SlitterTaskUtil.putCurrentPaperSpec(param, oldPlans);
@@ -225,9 +227,7 @@ public class AutoCallAirShaftTask {
private void saveCutPlanMessage(BstIvtShafttubeivt empty, List<PdmBiSlittingproductionplan> needPlans, String qzzSize) {
empty.setHave_qzz(SlitterConstant.SLITTER_YES);
empty.setQzz_size(qzzSize);
empty.setUpdate_optid(SecurityUtils.getCurrentUserId());
empty.setUpdate_optname(SecurityUtils.getCurrentUsername());
empty.setUpdate_time(DateUtil.now());
TaskUtils.updateOptMessageByBShaftPoint(empty);
for (PdmBiSlittingproductionplan plan : needPlans) {
if (SlitterConstant.SLITTER_SUB_VOLUME_LEFT.equals(plan.getLeft_or_right())) {
// 左卷
@@ -242,11 +242,11 @@ public class AutoCallAirShaftTask {
} else {
// 右卷
if (SlitterConstant.SLITTER_TYPE_PAPER.equals(plan.getPaper_tube_or_FRP())) {
empty.setTube_code1(plan.getPaper_tube_material());
empty.setTube_name1(plan.getPaper_tube_model());
empty.setTube_code2(plan.getPaper_tube_material());
empty.setTube_name2(plan.getPaper_tube_model());
} else {
empty.setTube_code1(plan.getFRP_material());
empty.setTube_name1(plan.getFRP_model());
empty.setTube_code2(plan.getFRP_material());
empty.setTube_name2(plan.getFRP_model());
}
empty.setContainer_name2(plan.getContainer_name());
}

View File

@@ -173,10 +173,11 @@ public class SlitterServiceImpl implements SlitterService {
@Override
@Transactional(rollbackFor = Exception.class)
public JSONObject acsFinishLoadShaft(JSONObject param) {
log.info("ACS申请套管完成参数: {}", param);
JSONObject res = new JSONObject();
// 穿拔轴位
String deviceCode = param.getString("device_code");
// todo: 纸管
// 纸管
String weight1 = param.getString("weight1");
String material1 = param.getString("material1");
String weight2 = param.getString("weight2");
@@ -205,6 +206,18 @@ public class SlitterServiceImpl implements SlitterService {
log.error("找不到[{}]对应的分切计划!", collect);
throw new BadRequestException("找不到[" + collect + "]对应的分切计划!");
}
// 分切计划设置纸卷重量
for (PdmBiSlittingproductionplan plan : plans) {
if (ObjectUtil.isNotEmpty(material1) && material1.equals(plan.getContainer_name())) {
plan.setPaper_weight(weight1);
}
if (ObjectUtil.isNotEmpty(material2) && material2.equals(plan.getContainer_name())) {
plan.setPaper_weight(weight2);
}
TaskUtils.updateOptMessageBySlitterPlan(plan);
}
slittingproductionplanService.updateBatchById(plans);
// 当前套轴的分切计划
PdmBiSlittingproductionplan demoPlan = plans.get(0);
// 查找是否有同组的气胀轴位置
@@ -555,6 +568,7 @@ public class SlitterServiceImpl implements SlitterService {
public JSONObject acsSendSubVolume(JSONObject param) {
JSONObject res = new JSONObject();
String deviceCode = param.getString("device_code");
BstIvtShafttubeivt device = shafttubeivtService.getByPointCode(deviceCode, false);
// 气涨轴编码
String qzzNo = param.getString("qzz_no");
String direction = param.getString("direction");
@@ -572,12 +586,17 @@ public class SlitterServiceImpl implements SlitterService {
log.error("设备{}, 找不到气胀轴编码{}对应的分切计划!参数:{}", deviceCode, qzzNo, param);
throw new BadRequestException("找不到气胀轴编码{ " + qzzNo + " }的分切计划!");
}
// 查找终点 todo: 如何确认是废箔还是成品
// todo: 暂时写死去成品称重
// BstIvtShafttubeivt one = shafttubeivtService.getOne(new LambdaQueryWrapper<BstIvtShafttubeivt>()
// .eq(BstIvtShafttubeivt::getPoint_type, "4").eq(BstIvtShafttubeivt::getPoint_location, "0"));
if (ObjectUtil.isEmpty(plan.getLevel())) {
throw new BadRequestException("子卷[" + plan.getContainer_name() + "]对应的级别不能为空");
}
String point_type = "5".equals(plan.getLevel()) ? "5" : "4";
// 查找终点 确认是废箔还是成品: 根据分切计划的子卷等级来区分5为报废
BstIvtShafttubeivt one = shafttubeivtService.getOne(new LambdaQueryWrapper<BstIvtShafttubeivt>()
.eq(BstIvtShafttubeivt::getPoint_type, point_type)
.eq(BstIvtShafttubeivt::getPoint_location, device.getPoint_location())
.eq(BstIvtShafttubeivt::getIs_used, SlitterConstant.SLITTER_YES));
JSONObject taskParam = new JSONObject();
taskParam.put("point_code2", "B_CZW01");
taskParam.put("point_code2", one.getPoint_code());
taskParam.put("material_code", plan.getContainer_name());
res.put("code", HttpStatus.HTTP_OK);
res.put("message", "请求成功!");

View File

@@ -1284,7 +1284,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
.eq(BstIvtBoxinfo::getBox_no, json.getString("storagevehicle_code"))
);
request_param.put("containerType", boxDao.getVehicle_type());
request_param.put("request_param", request_param);
jsonTaskParam.put("request_param", request_param);
jsonTaskParam.put("table_fk", disDaoList.get(0).getIostorinv_id().toString());
if (json.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("")) ||

View File

@@ -14,6 +14,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproductionplanService;
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.mapper.PdmBiSlittingproductionplanMapper;
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
@@ -285,6 +286,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
JSONObject jsonAttr;
// 是否自动分配货位
Boolean checked = jsonObject.getBoolean("checked");
String height = "";
if (ObjectUtil.isNotEmpty(checked) && checked) {
// 自动分配: 根据仓库、库区匹配一个合适的仓位
JSONObject attrParam = new JSONObject();
@@ -300,7 +302,6 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
jsonObject.put("vehicle_type",boxDao.getVehicle_type());
attrParam.put("vehicle_type", boxDao.getVehicle_type());
//根据木箱高度,判断入库仓位的高度
String height = "";
String heightLevel1 = iSysParamService.findByCode("height_level_1").getValue();
String heightLevel2 = iSysParamService.findByCode("height_level_2").getValue();
String box_high = boxDao.getBox_high();
@@ -395,6 +396,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
jsonSend.put("vehicle_code2", jsonObject.getString("vehicle_code"));
JSONObject param = new JSONObject();
param.put("containerType", jsonObject.getString("vehicle_type"));
param.put("heightLevel", height);
jsonSend.put("request_param", param.toString());
String task_id1 = this.setPoint(jsonSend);
// 下发任务
@@ -405,15 +407,27 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
}
private BstIvtBoxinfo getBstIvtBoxinfo(Map whereJson) {
//查询木箱
//查询木箱信息
String containerName;
if (whereJson.get("tableMater") != null) {
JSONArray jsonArray = JSON.parseArray(JSON.toJSONString(whereJson.get("tableMater")));
containerName = jsonArray.getJSONObject(0).getString("pcsn");
} else {
containerName = whereJson.get("material_barcode").toString().split(",")[0];
}
if (StringUtils.isBlank(containerName)) {
throw new BadRequestException("子卷号不能为空");
}
PdmBiSubpackagerelation pdmBiSubpackagerelation = ipdmBiSubpackagerelationService.getOne(new LambdaQueryWrapper<PdmBiSubpackagerelation>()
.eq(PdmBiSubpackagerelation::getContainer_name, whereJson.get("material_barcode")));
.eq(PdmBiSubpackagerelation::getContainer_name, containerName));
if (pdmBiSubpackagerelation == null) {
throw new BadRequestException("子卷包装关系不存在");
}
// 查询木箱信息
BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.getOne(
return iBstIvtBoxinfoService.getOne(
new QueryWrapper<BstIvtBoxinfo>().lambda()
.eq(BstIvtBoxinfo::getBox_no, pdmBiSubpackagerelation.getPackage_box_sn())
);
return boxDao;
}
@Override
@@ -511,7 +525,8 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
jsonTaskParam.put("task_type", "010703");
jsonTaskParam.put("start_device_code", pointDto.getPoint_code());
jsonTaskParam.put("next_device_code", jsonDis.getString("struct_code"));
jsonTaskParam.put("vehicle_code", whereJson.get("vehicle_code"));
//jsonTaskParam.put("vehicle_code", whereJson.get("vehicle_code"));
jsonTaskParam.put("vehicle_code", "A00010");
jsonTaskParam.put("vehicle_code2", whereJson.get("vehicle_code2"));
jsonTaskParam.put("inv_type", mstDao.getBill_type());
jsonTaskParam.put("inv_id", mstDao.getIostorinv_id());

View File

@@ -2,6 +2,7 @@ package org.nl.b_lms.storage_manage.ios.service.iostorInv.util.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -162,7 +163,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
// 载具表
WQLObject vehicleTab = WQLObject.getWQLObject("md_pb_storagevehicleinfo");
// 载具扩展属性表
// WQLObject veExtTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
WQLObject veExtTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
/*
* 查询mes木箱信息插入木箱信息表
*/
@@ -176,28 +177,56 @@ public class InBoxManageServiceImpl implements InBoxManageService {
* 插入木箱对应载具表
*/
String box_no = whereJson.getString("box_no");
String[] split = box_no.split(",");
String boxType = "";
for (int i = 0; i < split.length; i++) {
String boxNo = split[i];
BstIvtBoxinfo boxinfo = iBstIvtBoxinfoService.getOne(
new QueryWrapper<BstIvtBoxinfo>().lambda()
.eq(BstIvtBoxinfo::getBox_no, boxNo));
if (StrUtil.isEmpty(boxType)) {
boxType = boxinfo.getMaterial_code();
} else {
if (!boxType.equals(boxinfo.getMaterial_code())) {
throw new BadRequestException("请扫码相同规格的木箱进行堆叠入库!");
}
}
}
//查询对应的木箱信息
// 查询木箱信息
BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.getOne(
new QueryWrapper<BstIvtBoxinfo>().lambda()
.eq(BstIvtBoxinfo::getBox_no, whereJson.getString("box_no"))
.eq(BstIvtBoxinfo::getBox_no, split[0])
);
if (boxDao == null) {
throw new BadRequestException("木箱不存在!");
}
JSONObject jsonVehicle = vehicleTab.query("storagevehicle_code = '" + whereJson.getString("vehicle_code") + "'")
.uniqueResult(0);
// if (ObjectUtil.isEmpty(jsonVehicle)) {
// throw new BadRequestException("载具不存在!");
// }
// JSONObject jsonVeExt = new JSONObject();
// jsonVeExt.put("storagevehicleext_id", IdUtil.getLongId());
// jsonVeExt.put("storagevehicle_id", jsonVehicle.getLongValue("storagevehicle_id"));
// jsonVeExt.put("storagevehicle_code", jsonVehicle.getString("storagevehicle_code"));
// jsonVeExt.put("storagevehicle_type", jsonVehicle.getString("storagevehicle_type"));
// jsonVeExt.put("pcsn", whereJson.getString("box_no"));
// jsonVeExt.put("device_uuid", IdUtil.getLongId());
// veExtTab.insert(jsonVeExt);
if (ObjectUtil.isEmpty(jsonVehicle)) {
throw new BadRequestException("载具不存在!");
}
JSONObject ext_jo = veExtTab.query("storagevehicle_code = '"+jsonVehicle.getString("storagevehicle_code")+"'").uniqueResult(0);
if (ObjectUtil.isEmpty(ext_jo)) {
JSONObject jsonVeExt = new JSONObject();
jsonVeExt.put("storagevehicleext_id", IdUtil.getLongId());
jsonVeExt.put("storagevehicle_id", jsonVehicle.getLongValue("storagevehicle_id"));
jsonVeExt.put("storagevehicle_code", jsonVehicle.getString("storagevehicle_code"));
jsonVeExt.put("storagevehicle_type", jsonVehicle.getString("storagevehicle_type"));
jsonVeExt.put("pcsn", whereJson.getString("box_no"));
jsonVeExt.put("device_uuid", IdUtil.getLongId());
jsonVeExt.put("update_time", DateUtil.now());
veExtTab.insert(jsonVeExt);
}else {
ext_jo.put("pcsn", whereJson.getString("box_no"));
ext_jo.put("device_uuid", IdUtil.getLongId());
ext_jo.put("update_time", DateUtil.now());
veExtTab.update(ext_jo);
}
// 下发桁架任务
//查询当前入库拆叠盘位的托盘类型是否一致如果一致
@@ -254,6 +283,19 @@ public class InBoxManageServiceImpl implements InBoxManageService {
param.put("height", boxDao.getBox_high());
param.put("containerType", boxDao.getVehicle_type());
param.put("barcode", whereJson.getString("box_no"));
//根据木箱高度,判断入库仓位的高度
String height = "";
String heightLevel1 = iSysParamService.findByCode("height_level_1").getValue();
String heightLevel2 = iSysParamService.findByCode("height_level_2").getValue();
String box_high = boxDao.getBox_high();
if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) {
height = "1";
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
height = "2";
} else {
height = "3";
}
param.put("heightLevel", height);
taskParam.put("request_param", param.toString());
TwoInBoxTrussTask taskBean = new TwoInBoxTrussTask();
taskBean.createTask(taskParam);
@@ -265,7 +307,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
// 载具表
WQLObject vehicleTab = WQLObject.getWQLObject("md_pb_storagevehicleinfo");
// 载具扩展属性表
// WQLObject veExtTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
WQLObject veExtTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
/*
* 查询mes木箱信息插入木箱信息表
*/
@@ -288,19 +330,30 @@ public class InBoxManageServiceImpl implements InBoxManageService {
if (boxDao == null) {
throw new BadRequestException("木箱不存在!");
}
JSONObject jsonVehicle = vehicleTab.query("storagevehicle_code = '" + whereJson.getString("vehicle_code") + "'")
.uniqueResult(0);
// if (ObjectUtil.isEmpty(jsonVehicle)) {
// throw new BadRequestException("载具不存在!");
// }
// JSONObject jsonVeExt = new JSONObject();
// jsonVeExt.put("storagevehicleext_id", IdUtil.getLongId());
// jsonVeExt.put("storagevehicle_id", jsonVehicle.getLongValue("storagevehicle_id"));
// jsonVeExt.put("storagevehicle_code", jsonVehicle.getString("storagevehicle_code"));
// jsonVeExt.put("storagevehicle_type", jsonVehicle.getString("storagevehicle_type"));
// jsonVeExt.put("pcsn", whereJson.getString("box_no"));
// jsonVeExt.put("device_uuid", IdUtil.getLongId());
// veExtTab.insert(jsonVeExt);
if (ObjectUtil.isEmpty(jsonVehicle)) {
throw new BadRequestException("载具不存在!");
}
JSONObject ext_jo = veExtTab.query("storagevehicle_code = '"+jsonVehicle.getString("storagevehicle_code")+"'").uniqueResult(0);
if (ObjectUtil.isEmpty(ext_jo)) {
JSONObject jsonVeExt = new JSONObject();
jsonVeExt.put("storagevehicleext_id", IdUtil.getLongId());
jsonVeExt.put("storagevehicle_id", jsonVehicle.getLongValue("storagevehicle_id"));
jsonVeExt.put("storagevehicle_code", jsonVehicle.getString("storagevehicle_code"));
jsonVeExt.put("storagevehicle_type", jsonVehicle.getString("storagevehicle_type"));
jsonVeExt.put("pcsn", whereJson.getString("box_no"));
jsonVeExt.put("device_uuid", IdUtil.getLongId());
jsonVeExt.put("update_time", DateUtil.now());
veExtTab.insert(jsonVeExt);
}else {
ext_jo.put("pcsn", whereJson.getString("box_no"));
ext_jo.put("device_uuid", IdUtil.getLongId());
ext_jo.put("update_time", DateUtil.now());
veExtTab.update(ext_jo);
}
// 下发桁架任务
JSONObject taskParam = new JSONObject();
taskParam.put("task_type", "010713");
@@ -315,6 +368,20 @@ public class InBoxManageServiceImpl implements InBoxManageService {
param.put("height", boxDao.getBox_high());
param.put("containerType", boxDao.getVehicle_type());
param.put("barcode", whereJson.getString("box_no"));
//根据木箱高度,判断入库仓位的高度
String height = "";
String heightLevel1 = iSysParamService.findByCode("height_level_1").getValue();
String heightLevel2 = iSysParamService.findByCode("height_level_2").getValue();
String box_high = boxDao.getBox_high();
if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) {
height = "1";
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
height = "2";
} else {
height = "3";
}
param.put("heightLevel", height);
taskParam.put("request_param", param.toString());
TwoInBoxTrussTask taskBean = new TwoInBoxTrussTask();
taskBean.createTask(taskParam);
@@ -323,7 +390,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
@Override
@Transactional
public String taskExceptional(JSONObject jsonObject) {
public JSONObject taskExceptional(JSONObject jsonObject) {
// 仓位表
WQLObject attrTab = WQLObject.getWQLObject("ST_IVT_StructAttr");
@@ -365,7 +432,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
taskDao.setPoint_code2(jsonAttrNow.getString("struct_code"));
ischBaseTaskService.updateById(taskDao);
return jsonAttrNow.getString("struct_code");
return jsonAttrNow;
}
/**

View File

@@ -7,8 +7,11 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.checkerframework.checker.units.qual.A;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService;
import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxinfo;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvService;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvdisService;
@@ -57,6 +60,9 @@ public class InBussManageServiceImpl implements InBussManageService {
@Autowired
private IschBaseTaskService ischBaseTaskService;
@Autowired
private IBstIvtBoxinfoService iBstIvtBoxinfoService;
/**
* 不需要查询的排集合
*/
@@ -81,7 +87,7 @@ public class InBussManageServiceImpl implements InBussManageService {
String operate = json.getString("operate");
if (operate.equals(IOSEnum.IO_TYPE.code("入库"))) {
attrTab.update(json, "struct_code IN ('"+ String.join("','", param) +"')");
attrTab.update(json, "struct_code IN ('" + String.join("','", param) + "')");
}
}
@@ -114,10 +120,10 @@ public class InBussManageServiceImpl implements InBussManageService {
*/
JSONArray attrArry = attrTab.query("IFNULL(storagevehicle_code,'') = '' " +
"AND is_used = '" + IOSEnum.IS_NOTANDYES.code("") + "' AND is_delete = '" + IOSEnum.IS_NOTANDYES.code("") + "' " +
"AND lock_type = '" + IOSEnum.LOCK_TYPE.code("未锁定") + "' AND stor_id = '"+jsonObject.getString("stor_id")+"' " +
"AND lock_type = '" + IOSEnum.LOCK_TYPE.code("未锁定") + "' AND stor_id = '" + jsonObject.getString("stor_id") + "' " +
"AND storagevehicle_type = '" + jsonObject.getString("vehicle_type") + "'" +
"AND height = '" + jsonObject.getString("height") + "'" +
"AND sect_id = '"+jsonObject.getString("sect_id")+"'").getResultJSONArray(0);
"AND sect_id = '" + jsonObject.getString("sect_id") + "'").getResultJSONArray(0);
if (ObjectUtil.isEmpty(attrArry)) {
notInRowList.clear();
@@ -140,13 +146,13 @@ public class InBussManageServiceImpl implements InBussManageService {
/*
* 确定哪排:查看每排相同木箱规格等 的数量,找到数量最小的那排
*/
jsonSub.put("block_num",block_num);
jsonSub.put("block_num", block_num);
String row_num = getMinRow(jsonSub);
/*
* 确定伸位,找仓位
*/
jsonSub.put("row_num",row_num);
jsonSub.put("row_num", row_num);
JSONObject jsonAttr = queryStruct(jsonSub);
// 为空则新找巷道
@@ -173,7 +179,7 @@ public class InBussManageServiceImpl implements InBussManageService {
json.put("box_high", jsonSub.getString("box_high"));
String row_num_2 = getMinRow(json);
json.put("row_num",row_num_2);
json.put("row_num", row_num_2);
JSONObject jsonAttr_2 = queryStruct(json);
if (ObjectUtil.isNotEmpty(jsonAttr_2)) {
@@ -208,6 +214,12 @@ public class InBussManageServiceImpl implements InBussManageService {
throw new BadRequestException("设备号不能为空!");
}
// 查询木箱信息
BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.getOne(
new QueryWrapper<BstIvtBoxinfo>().lambda()
.eq(BstIvtBoxinfo::getBox_no, jsonObject.getString("box_no"))
);
List<String> pcsnList = Arrays.asList(material_barcode.split(","));
// 查询子卷包装关系
@@ -252,7 +264,7 @@ public class InBussManageServiceImpl implements InBussManageService {
jsonDtl.put("is_active", IOSEnum.IS_SEND.code(""));
tableData.add(jsonDtl);
}
mst.put("tableData",tableData);
mst.put("tableData", tableData);
// 判断是否已经生成过入库单
String package_box_sn = (String) tableData.get(0).get("package_box_sn");
@@ -277,26 +289,27 @@ public class InBussManageServiceImpl implements InBussManageService {
).get(0);
List<LinkedHashMap> disList = iStIvtIostorinvdisService.list(
new QueryWrapper<StIvtIostorinvdis>().lambda()
.eq(StIvtIostorinvdis::getIostorinv_id, iostorinv_id)
).stream().map(row -> JSONObject.parseObject(JSON.toJSONString(row), LinkedHashMap.class))
new QueryWrapper<StIvtIostorinvdis>().lambda()
.eq(StIvtIostorinvdis::getIostorinv_id, iostorinv_id)
).stream().map(row -> JSONObject.parseObject(JSON.toJSONString(row), LinkedHashMap.class))
.collect(Collectors.toList());
jsonDiv.put("dtl_row",JSONObject.parseObject(JSON.toJSONString(dtlDao)));
jsonDiv.put("dtl_row", JSONObject.parseObject(JSON.toJSONString(dtlDao)));
jsonDiv.put("tableMater", disList);
jsonDiv.put("checked", true);
jsonDiv.put("is_send", IOSEnum.IS_SEND.code(""));
jsonDiv.put("point_code", jsonObject.getString("device_code"));
jsonDiv.put("sect_id", IOSEnum.SECT_ID.code("二期主存区"));
jsonDiv.put("stor_id", IOSEnum.STOR_ID.code("二期"));
jsonDiv.put("material_barcode",jsonObject.getString("material_barcode"));
jsonDiv.put("vehicle_code",jsonObject.getString("vehicle_code"));
jsonDiv.put("material_barcode", jsonObject.getString("material_barcode"));
jsonDiv.put("vehicle_code", jsonObject.getString("vehicle_code"));
jsonDiv.put("vehicle_type", boxDao.getVehicle_type());
iStIvtIostorinvService.divStruct(jsonDiv);
}
@Override
@Transactional
public String taskExceptional(JSONObject jsonObject) {
public JSONObject taskExceptional(JSONObject jsonObject) {
/*
* 1.锁定原货位
* 2.重新找新货位
@@ -313,9 +326,9 @@ public class InBussManageServiceImpl implements InBussManageService {
// 查找对应单据
List<LinkedHashMap> disDaoList = iStIvtIostorinvdisService.list(
new QueryWrapper<StIvtIostorinvdis>().lambda()
.eq(StIvtIostorinvdis::getTask_id, taskDao.getTask_id())
).stream()
new QueryWrapper<StIvtIostorinvdis>().lambda()
.eq(StIvtIostorinvdis::getTask_id, taskDao.getTask_id())
).stream()
.map(row -> JSONObject.parseObject(JSON.toJSONString(row), LinkedHashMap.class))
.collect(Collectors.toList());
@@ -334,9 +347,9 @@ public class InBussManageServiceImpl implements InBussManageService {
// 重新分配过的明细
List<LinkedHashMap> disList = iStIvtIostorinvdisService.list(
new QueryWrapper<StIvtIostorinvdis>().lambda()
.eq(StIvtIostorinvdis::getIostorinv_id, iostorinv_id)
).stream()
new QueryWrapper<StIvtIostorinvdis>().lambda()
.eq(StIvtIostorinvdis::getIostorinv_id, iostorinv_id)
).stream()
.map(row -> JSONObject.parseObject(JSON.toJSONString(row), LinkedHashMap.class))
.collect(Collectors.toList());
@@ -346,7 +359,7 @@ public class InBussManageServiceImpl implements InBussManageService {
).get(0);
JSONObject jsonDiv = new JSONObject();
jsonDiv.put("dtl_row",JSONObject.parseObject(JSON.toJSONString(dtlDao)));
jsonDiv.put("dtl_row", JSONObject.parseObject(JSON.toJSONString(dtlDao)));
jsonDiv.put("tableMater", disList);
jsonDiv.put("checked", true);
jsonDiv.put("is_send", IOSEnum.IS_SEND.code(""));
@@ -358,8 +371,8 @@ public class InBussManageServiceImpl implements InBussManageService {
// 3.更新明细任务标识
iStIvtIostorinvdisService.update(
new UpdateWrapper<StIvtIostorinvdis>().lambda()
.eq(StIvtIostorinvdis::getIostorinv_id, iostorinv_id)
.set(StIvtIostorinvdis::getTask_id, taskDao.getTask_id())
.eq(StIvtIostorinvdis::getIostorinv_id, iostorinv_id)
.set(StIvtIostorinvdis::getTask_id, taskDao.getTask_id())
);
// 4.更新任务终点
@@ -371,17 +384,18 @@ public class InBussManageServiceImpl implements InBussManageService {
taskDao.setPoint_code2(disListNow.get(0).getStruct_code());
ischBaseTaskService.updateById(taskDao);
return disListNow.get(0).getStruct_code();
return JSONObject.parseObject(JSON.toJSONString(disListNow.get(0)));
}
/**
* 获取最小巷道
*
* @param jsonSub {
* jsonSub木箱信息
* sect_id库区
* stor_id仓库
* material_id物料
* }
* }
* @return String 巷道
*/
private String getMinBlock(JSONObject jsonSub) {
@@ -399,7 +413,7 @@ public class InBussManageServiceImpl implements InBussManageService {
.collect(Collectors.joining("','"));
jsonSub.put("flag", "2");
jsonSub.put("block_in", "('"+block_in+"')");
jsonSub.put("block_in", "('" + block_in + "')");
List<JSONObject> boxAllList = WQL.getWO("BST_INRULE").addParamMap(jsonSub)
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
@@ -425,7 +439,7 @@ public class InBussManageServiceImpl implements InBussManageService {
}
// 区分木箱规格:最小木箱的巷道
JSONObject jsonBlockLikeMin = sumBlockMinNum(blockList,boxAllLikeList);
JSONObject jsonBlockLikeMin = sumBlockMinNum(blockList, boxAllLikeList);
/*
* 比较两个巷道的总木箱数,取最小的
@@ -441,7 +455,8 @@ public class InBussManageServiceImpl implements InBussManageService {
/**
* 计算最小巷道木箱数
* @param blockList : 所有巷道
*
* @param blockList : 所有巷道
* @param boxAllList: 所有木箱
* @return JSONObject最小木箱数的巷道 JSONObject{block_numbox_num}
*/
@@ -471,6 +486,7 @@ public class InBussManageServiceImpl implements InBussManageService {
/**
* 获取最小排
*
* @param jsonSub {
* jsonSub木箱信息
* sect_id库区
@@ -478,7 +494,7 @@ public class InBussManageServiceImpl implements InBussManageService {
* material_id物料
* block_num 巷道
* not_row_in: 排(用于递归查询)
* }
* }
* @return String
*/
private String getMinRow(JSONObject jsonSub) {
@@ -497,7 +513,7 @@ public class InBussManageServiceImpl implements InBussManageService {
.collect(Collectors.joining("','"));
jsonSub.put("flag", "2");
jsonSub.put("row_in", "('"+row_in+"')");
jsonSub.put("row_in", "('" + row_in + "')");
List<JSONObject> boxAllList = WQL.getWO("BST_INRULE").addParamMap(jsonSub)
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
@@ -542,7 +558,8 @@ public class InBussManageServiceImpl implements InBussManageService {
/**
* 计算最小木箱的排
* @param rowList : 所有排
*
* @param rowList : 所有排
* @param boxAllList: 所有木箱
* @return JSONObject最小木箱数的排 JSONObject{row_numbox_num}
*/
@@ -572,6 +589,7 @@ public class InBussManageServiceImpl implements InBussManageService {
/**
* 获取仓位
*
* @param jsonSub {
* jsonSub木箱信息
* sect_id库区
@@ -579,7 +597,7 @@ public class InBussManageServiceImpl implements InBussManageService {
* material_id物料
* block_num 巷道
* row_num :排
* }
* }
* @return JSONObject 仓位
*/
private JSONObject queryStruct(JSONObject jsonSub) {
@@ -595,7 +613,7 @@ public class InBussManageServiceImpl implements InBussManageService {
// 新的一排
String row_num_new = this.getMinRow(jsonSub);
jsonSub.put("row_num",row_num_new);
jsonSub.put("row_num", row_num_new);
jsonAttr = this.getStruct(jsonSub);
}
@@ -605,6 +623,7 @@ public class InBussManageServiceImpl implements InBussManageService {
/**
* 获取一个货位公共方法
*
* @param jsonSub {
* jsonSub木箱信息
* sect_id库区
@@ -612,7 +631,7 @@ public class InBussManageServiceImpl implements InBussManageService {
* material_id物料
* block_num 巷道
* row_num :排
* }
* }
* @return JSONObject 仓位
*/
private JSONObject getStruct(JSONObject jsonSub) {

View File

@@ -89,6 +89,10 @@ public class InVehicleManageServiceImpl implements InVehicleManageService {
jsonTaskParam.put("next_device_code", jsonAttr.getString("struct_code"));
jsonTaskParam.put("vehicle_code", whereJson.getString("vehicle_code"));
jsonTaskParam.put("vehicle_type", whereJson.getString("vehicle_type"));
JSONObject param = new JSONObject();
param.put("containerType", whereJson.getString("vehicle_type"));
//0表示为空托盘
jsonTaskParam.put("request_param", param.toString());
TwoInEmpTask taskBean = new TwoInEmpTask();
taskBean.createTask(jsonTaskParam);
@@ -106,7 +110,7 @@ public class InVehicleManageServiceImpl implements InVehicleManageService {
@Override
@Transactional
public String taskExceptional(JSONObject jsonObject) {
public JSONObject taskExceptional(JSONObject jsonObject) {
// 仓位表
WQLObject attrTab = WQLObject.getWQLObject("ST_IVT_StructAttr");
@@ -141,7 +145,7 @@ public class InVehicleManageServiceImpl implements InVehicleManageService {
taskDao.setPoint_code2(jsonAttrNow.getString("struct_code"));
ischBaseTaskService.updateById(taskDao);
return jsonAttrNow.getString("struct_code");
return jsonAttrNow;
}
/**

View File

@@ -208,16 +208,16 @@ public class LashManageServiceImpl implements LashManageService {
result.put("length", boxDao.getBox_length());
result.put("width", boxDao.getBox_width());
result.put("height", boxDao.getBox_high());
result.put("case", boxDao.getMaterial_code());
result.put("isBinding", IOSEnum.IS_SEND.code(""));
result.put("isLabeling", IOSEnum.IS_SEND.code(""));
result.put("labelingTemplate", boxDao.getLash_num());
result.put("bindingTemplate", "1");
result.put("bindingTemplate", boxDao.getLash_num());
result.put("printDevice", "1");
result.put("printQty", "1");
result.put("bundleTimes", "2");
result.put("bundleTimes", "1");
return result;
}

View File

@@ -116,7 +116,7 @@ public class OutBoxManageServiceImpl implements OutBoxManageService {
@Override
@Transactional
public String taskExceptional(JSONObject jsonObject) {
public JSONObject taskExceptional(JSONObject jsonObject) {
// 仓位表
WQLObject attrTab = WQLObject.getWQLObject("ST_IVT_StructAttr");
@@ -160,7 +160,7 @@ public class OutBoxManageServiceImpl implements OutBoxManageService {
taskDao.setVehicle_code(jsonAttrNow.getString("storagevehicle_code"));
ischBaseTaskService.updateById(taskDao);
return jsonAttrNow.getString("struct_code");
return jsonAttrNow;
}
@Override

View File

@@ -113,7 +113,7 @@ public class OutVehicleManageServiceImpl implements OutVehicleManageService {
@Override
@Transactional
public String taskExceptional(JSONObject jsonObject) {
public JSONObject taskExceptional(JSONObject jsonObject) {
// 仓位表
WQLObject attrTab = WQLObject.getWQLObject("ST_IVT_StructAttr");
@@ -150,7 +150,7 @@ public class OutVehicleManageServiceImpl implements OutVehicleManageService {
taskDao.setVehicle_code(jsonAttrNow.getString("storagevehicle_code"));
ischBaseTaskService.updateById(taskDao);
return jsonAttrNow.getString("struct_code");
return jsonAttrNow;
}
@Override

View File

@@ -70,14 +70,8 @@ public class SendOutManageServiceImpl implements SendOutManageService {
.eq(SchBasePoint::getIs_delete, IOSEnum.IS_NOTANDYES.code(""))
);
// 根据载具号找到对应的木箱号
JSONObject jsonExt = extTab.query("storagevehicle_code = '" + whereJson.getString("vehicle_code") + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(jsonExt)) {
throw new BadRequestException("此载具上没有木箱,请检查!"+whereJson.getString("vehicle_code"));
}
// 1.查询此木箱号的子卷包装关系
JSONObject jsonSub = subTab.query("package_box_sn = '" + jsonExt.getString("pcsn") + "'").uniqueResult(0);
JSONObject jsonSub = subTab.query("package_box_sn = '" + whereJson.getString("vehicle_code") + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(jsonSub)) {
throw new BadRequestException("未查询到该木箱对应的包装关系!");
}
@@ -215,6 +209,6 @@ public class SendOutManageServiceImpl implements SendOutManageService {
);
// 删除载具对应木箱记录
extTab.delete(jsonExt);
//extTab.delete(jsonExt);
}
}

View File

@@ -44,7 +44,7 @@ public interface InBoxManageService {
* }
* @return point_code: 货位编码
*/
String taskExceptional(JSONObject jsonObject);
JSONObject taskExceptional(JSONObject jsonObject);
void returnIn(JSONObject whereJson);

View File

@@ -60,6 +60,6 @@ public interface InBussManageService {
* }
* @return point_code: 货位编码
*/
String taskExceptional(JSONObject jsonObject);
JSONObject taskExceptional(JSONObject jsonObject);
}

View File

@@ -29,6 +29,6 @@ public interface InVehicleManageService {
* }
* @return point_code: 货位编码
*/
String taskExceptional(JSONObject jsonObject);
JSONObject taskExceptional(JSONObject jsonObject);
}

View File

@@ -32,7 +32,7 @@ public interface OutBoxManageService {
* }
* @return point_code: 货位编码
*/
String taskExceptional(JSONObject jsonObject);
JSONObject taskExceptional(JSONObject jsonObject);
/**
* 任务异常处理(2.浅货位有货-取货时)

View File

@@ -28,7 +28,7 @@ public interface OutVehicleManageService {
* }
* @return point_code: 货位编码
*/
String taskExceptional(JSONObject jsonObject);
JSONObject taskExceptional(JSONObject jsonObject);
/**
* 任务异常处理(2.浅货位有货-取货时)

View File

@@ -22,7 +22,7 @@ public enum PackageInfoIvtEnum {
//任务类型
TASK_TYPE(MapOf.of("输送线->满轴缓存位", "010701", "满轴缓存位->待检区", "010702", "满轴缓存位->管制区", "010703", "放空(空载具缓存位->输送线)",
"010704", "取空(待检区->空载具缓存位)", "010705", "待检区->管制区", "010706","管制区->待检区", "010707","待检区->装箱区", "010708", "装箱区->装箱对接位", "010709","放空(装箱区->待检区)", "010710")),
"010704", "取空(待检区->空载具缓存位)", "010705", "待检区->管制区", "010706","管制区->待检区", "010707","待检区->装箱区", "010708", "装箱区->装箱对接位", "010709","放空(装箱区->待检区)", "010710","输送线四个点任务", "010711")),
//ACS任务类型
ACS_TASK_TYPE(MapOf.of("agv任务", "1", "桁架任务", "6")),

View File

@@ -48,8 +48,8 @@ public class StoragevehicleinfoController {
@Log("修改载具")
//@PreAuthorize("@el.check('mdPbStoragevehicleinfo:edit')")
public ResponseEntity<Object> update(@Validated @RequestBody StoragevehicleinfoDto dto) {
storagevehicleinfoService.update(dto);
public ResponseEntity<Object> update(@RequestBody JSONObject map) {
storagevehicleinfoService.update(map);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}

View File

@@ -61,7 +61,7 @@ public interface StoragevehicleinfoService {
*
* @param dto /
*/
void update(StoragevehicleinfoDto dto);
void update(JSONObject dto);
/**
* 多选删除

View File

@@ -160,24 +160,47 @@ public class StoragevehicleinfoServiceImpl implements StoragevehicleinfoService
@Override
@Transactional(rollbackFor = Exception.class)
public void update(StoragevehicleinfoDto dto) {
public void update(JSONObject dto) {
WQLObject wo = WQLObject.getWQLObject("md_pb_storagevehicleinfo");
JSONObject jsonObject = wo.query("storagevehicle_code = '" + dto.getStoragevehicle_code() + "' and is_delete = '0'").uniqueResult(0);
WQLObject veExtTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
JSONObject jsonObject = wo.query("storagevehicle_code = '" + dto.getString("storagevehicle_code") + "' and is_delete = '0' AND storagevehicle_id != '" + dto.getString("storagevehicle_id") + "'").uniqueResult(0);
if (!ObjectUtil.isEmpty(jsonObject)) {
throw new BadRequestException("此载具已存在");
}
StoragevehicleinfoDto entity = this.findById(dto.getStoragevehicle_id());
if (entity == null) {
throw new BadRequestException("被删除或无权限,操作失败!");
}
String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
String now = DateUtil.now();
dto.setUpdate_time(now);
dto.setUpdate_optid(currentUserId);
dto.setUpdate_optname(nickName);
String qty = dto.getString("qty");
String pcsn = dto.getString("pcsn");
if (StrUtil.isNotEmpty(qty) || StrUtil.isNotEmpty(pcsn)) {
JSONObject ext_jo = veExtTab.query("storagevehicle_code = '"+dto.getString("storagevehicle_code")+"'").uniqueResult(0);
if (ObjectUtil.isEmpty(ext_jo)) {
//新增一条记录
JSONObject jsonVeExt = new JSONObject();
jsonVeExt.put("storagevehicleext_id", org.nl.common.utils.IdUtil.getLongId());
jsonVeExt.put("storagevehicle_id", dto.getLongValue("storagevehicle_id"));
jsonVeExt.put("storagevehicle_code", dto.getString("storagevehicle_code"));
jsonVeExt.put("storagevehicle_type", dto.getString("storagevehicle_type"));
if (StrUtil.isNotEmpty(pcsn)) {
jsonVeExt.put("pcsn", pcsn);
}
if (StrUtil.isNotEmpty(qty)) {
jsonVeExt.put("qty", qty);
}
jsonVeExt.put("device_uuid", org.nl.common.utils.IdUtil.getLongId());
jsonVeExt.put("update_time", DateUtil.now());
veExtTab.insert(jsonVeExt);
} else {
if (StrUtil.isNotEmpty(pcsn)) {
ext_jo.put("pcsn", pcsn);
}
if (StrUtil.isNotEmpty(qty)) {
ext_jo.put("qty", qty);
}
veExtTab.update(ext_jo);
}
}
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
wo.update(json);

View File

@@ -45,6 +45,9 @@
PAGEQUERY
SELECT
s.*,
ext.pcsn,
ext.qty,
ext.update_time AS change_time,
mater.material_code,
mater.material_name,
point.point_code,
@@ -56,6 +59,7 @@
LEFT JOIN ST_IVT_StructIvt ivt ON point.source_id = ivt.struct_id
LEFT JOIN md_me_materialbase mater ON mater.material_id = ivt.material_id
LEFT JOIN md_pb_classstandard class ON class.class_code = s.storagevehicle_type
LEFT JOIN md_pb_storagevehicleext ext ON ext.storagevehicle_code = s.storagevehicle_code
WHERE
s.is_delete = '0'
ENDOPTION

View File

@@ -204,4 +204,11 @@ public class AcsToWmsController {
public ResponseEntity<Object> applicationForLabeling(@RequestBody JSONObject param) {
return new ResponseEntity<>(acsToWmsService.applicationForLabeling(param), HttpStatus.OK);
}
@PostMapping("/getBoxInfo")
@Log(value = "二期获取木箱高度", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS)
@SaIgnore
public ResponseEntity<Object> getBoxInfo(@RequestBody JSONObject param) {
return new ResponseEntity<>(acsToWmsService.getBoxInfo(param), HttpStatus.OK);
}
}

View File

@@ -195,4 +195,11 @@ public interface AcsToWmsService {
* @return /
*/
JSONObject applicationForLabeling(JSONObject param);
/**
* 二期输送机申请贴标
* @param param /
* @return /
*/
JSONObject getBoxInfo(JSONObject param);
}

View File

@@ -27,6 +27,8 @@ import org.nl.b_lms.sch.task.service.IschBaseTaskService;
import org.nl.b_lms.sch.tasks.TwoBoxExcepTask;
import org.nl.b_lms.sch.tasks.first_floor_area.MzhcwTask;
import org.nl.b_lms.sch.tasks.slitter.service.SlitterService;
import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService;
import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxinfo;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.b_lms.storage_manage.ios.enums.TASKEnum;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.*;
@@ -38,6 +40,7 @@ import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.system.service.notice.ISysNoticeService;
import org.nl.system.service.param.ISysParamService;
import org.nl.system.service.param.impl.SysParamServiceImpl;
import org.nl.wms.ext.acs.service.AcsToWmsService;
import org.nl.wms.pda.mps.service.CasingService;
@@ -65,6 +68,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@Service
@@ -124,6 +128,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
*/
private final OutBoxManageService outBoxManageService;
private final IBstIvtBoxinfoService iBstIvtBoxinfoService;
@Resource
private IschBaseTaskService taskService;
@@ -133,6 +139,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
@Resource
private MzhcwTask mzhcwTask;
@Autowired
private ISysParamService iSysParamService;
private final SlitterService slitterService;
private final IPdmBiSlittingproductionplanService slittingproductionplanService;
@@ -1738,25 +1747,35 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
JSONObject result = new JSONObject();
if (StringUtils.isBlank(whereJson.getString("device_code")) || StringUtils.isBlank(whereJson.getString("material_barcode"))) {
throw new BadRequestException("接口sendProductToFirstFloor任务号或子卷号参数为空");
}
//1.查询满轴缓存位是否有空位
List<BstIvtPackageinfoivt> bstIvtPackageinfoivtList = packageinfoivtService
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
.eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位"))
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
.eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("")).orderByAsc(BstIvtPackageinfoivt::getSort_seq));
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>().eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
.orderByAsc(BstIvtPackageinfoivt::getSort_seq));
List<BstIvtPackageinfoivt> mzPointList = bstIvtPackageinfoivtList.stream()
.filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位").equals(r.getPoint_status())
&& PackageInfoIvtEnum.IVT_STATUS.code("").equals(r.getIvt_status())).collect(Collectors.toList());
JSONObject jo = new JSONObject();
jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"));
jo.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
//todo 获取子卷号,子卷号就是载具号?
jo.put("vehicle_code", whereJson.getString("material_barcode"));
//2.创建输送线->满轴位桁架任务,
String point_code1 = whereJson.getString("device_code");
jo.put("point_code1", point_code1);
if (CollectionUtils.isNotEmpty(bstIvtPackageinfoivtList)) {
if (CollectionUtils.isNotEmpty(mzPointList)) {
//任意一个满轴缓存位为终点
jo.put("point_code2", bstIvtPackageinfoivtList.get(0).getPoint_code());
jo.put("point_code2", mzPointList.get(0).getPoint_code());
List<BstIvtPackageinfoivt> kzjPointList = bstIvtPackageinfoivtList.stream()
.filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位").equals(r.getPoint_status())
&& PackageInfoIvtEnum.IVT_STATUS.code("空载具").equals(r.getIvt_status())).collect(Collectors.toList());
//空载具缓存位有空载具
if (CollectionUtils.isNotEmpty(kzjPointList)) {
jo.put("point_code3", kzjPointList.get(0).getPoint_code());
//终点为输送线点位
jo.put("point_code4", whereJson.getString("device_code"));
jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"));
} else {
jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"));
}
jo.put("is_send", true);
mzhcwTask.createTask(jo);
result.put("status", HttpStatus.OK.value());
@@ -1868,16 +1887,16 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
// 6-退货入库
whereJson.put("bill_type", IOSEnum.IN_TYPE.code("退货入库"));
whereJson.put("box_no", whereJson.getString("material_barcode"));
JSONArray resultJSONArray = WQLObject.getWQLObject("pdm_bi_subpackagerelation").query("package_box_sn = '" + whereJson.getString("material_barcode") + "' AND status = '0'").getResultJSONArray(0);
JSONArray resultJSONArray = WQLObject.getWQLObject("pdm_bi_subpackagerelation").query("package_box_sn = '" + whereJson.getString("material_barcode") + "' AND status in ('0','1')").getResultJSONArray(0);
if (ObjectUtil.isEmpty(resultJSONArray)) {
throw new BadRequestException("未查询到子卷包装信息!");
}
String material_barcode = "";
for (int i = 0; i < resultJSONArray.size(); i++) {
JSONObject resultObj = resultJSONArray.getJSONObject(i);
if (i==0){
if (i == 0) {
material_barcode = resultObj.getString("container_name");
}else {
} else {
material_barcode += "," + resultObj.getString("container_name");
}
}
@@ -2000,7 +2019,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
.eq(SchBaseTask::getTask_code, whereJson.getString("task_code"))
);
String point_code = "";
JSONObject point_code = new JSONObject();
// 判断任务类型
if (taskDao.getTask_type().equals(TASKEnum.BOX_TYPE.code("木箱入库"))) {
// 木箱入库:满入、浅货位有货-放货时
@@ -2043,7 +2062,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
result.put("status", HttpStatus.OK.value());
result.put("message", "下发成功!");
result.put("point_code", point_code);
result.put("point_code", point_code.getString("struct_code"));
result.put("vehicle_code", point_code.getString("struct_code"));
log.info("deviceApplyExceptional返回参数---------------------------------------------" + result.toString());
return result;
}
@@ -2157,4 +2177,40 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
return param;
}
@Override
public JSONObject getBoxInfo(JSONObject param) {
String device_code = param.getString("device_code");
String material_barcode = param.getString("material_barcode");
String vehicle_code = param.getString("vehicle_code");
if (device_code.equals("RK1018")) {
JSONObject vehicle_info = WQLObject.getWQLObject("md_pb_storagevehicleext").query("storagevehicle_code = '" + vehicle_code + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(vehicle_info)) {
throw new BadRequestException("未查询到载具号【" + vehicle_code + "】对应的载具信息!");
}
material_barcode = vehicle_info.getString("pcsn");
}
// 查询木箱信息
BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.getOne(
new QueryWrapper<BstIvtBoxinfo>().lambda()
.eq(BstIvtBoxinfo::getBox_no, material_barcode)
);
//根据木箱高度,判断入库仓位的高度
String height = "";
String heightLevel1 = iSysParamService.findByCode("height_level_1").getValue();
String heightLevel2 = iSysParamService.findByCode("height_level_2").getValue();
String box_high = boxDao.getBox_high();
if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) {
height = "1";
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
height = "2";
} else {
height = "3";
}
JSONObject jsonObject = new JSONObject();
jsonObject.put("heightLevel", height);
jsonObject.put("status", HttpStatus.OK.value());
return jsonObject;
}
}

View File

@@ -113,7 +113,7 @@ public class MesToLmsController {
return new ResponseEntity<>(mesToLmsService.sendProcessInfo(jo), HttpStatus.OK);
}
@PostMapping("/processFoilStart")
@PostMapping("/momRollTRStartMock")
@Log("表处工单推送")
@SaIgnore
public ResponseEntity<Object> processFoilStart(@RequestBody JSONObject jo) {
@@ -128,5 +128,59 @@ public class MesToLmsController {
return new ResponseEntity<>(mesToLmsService.sendTargetHouse(jo), HttpStatus.OK);
}
@PostMapping("/momSendSplitMfgOrderBOM")
@Log("MES传递LMS订单BOM")
@SaIgnore
public ResponseEntity<Object> momSendSplitMfgOrderBOM(@RequestBody JSONObject jo) {
return new ResponseEntity<>(mesToLmsService.momSendSplitMfgOrderBOM(jo), HttpStatus.OK);
}
@PostMapping("/getRollInfo")
@Log("MES传递LMS获取子卷重量信息")
@SaIgnore
public ResponseEntity<Object> getRollInfo(@RequestBody JSONObject jo) {
return new ResponseEntity<>(mesToLmsService.getRollInfo(jo), HttpStatus.OK);
}
@PostMapping("/sendLevelInfo")
@Log("MES传递LMS定级数据")
@SaIgnore
public ResponseEntity<Object> sendLevelInfo(@RequestBody JSONObject jo) {
return new ResponseEntity<>(mesToLmsService.sendLevelInfo(jo), HttpStatus.OK);
}
@PostMapping("/containerNeedDown")
@Log("子卷拼接完成是否下轴")
@SaIgnore
public ResponseEntity<Object> containerNeedDown(@RequestBody JSONObject jo) {
return new ResponseEntity<>(mesToLmsService.containerNeedDown(jo), HttpStatus.OK);
}
@PostMapping("/sendSubInfo")
@Log("子卷下料信息MES传递给LMS")
@SaIgnore
public ResponseEntity<Object> sendSubInfo(@RequestBody JSONObject jo) {
return new ResponseEntity<>(mesToLmsService.sendSubInfo(jo), HttpStatus.OK);
}
@PostMapping("/changeSect")
@Log("MES传递给LMS入线边库或者入成品库、撤销入线边库、人工改变入线边还是包装")
@SaIgnore
public ResponseEntity<Object> changeSect(@RequestBody JSONObject jo) {
return new ResponseEntity<>(mesToLmsService.changeSect(jo), HttpStatus.OK);
}
@PostMapping("/getWasteFoilWeight")
@Log("分切子卷获取LMSAGV废箔称重重量")
@SaIgnore
public ResponseEntity<Object> getWasteFoilWeight(@RequestBody JSONObject jo) {
return new ResponseEntity<>(mesToLmsService.getWasteFoilWeight(jo), HttpStatus.OK);
}
@PostMapping("/WasteFoilSuccess")
@Log("分切子卷获取LMSAGV废箔称重重量")
@SaIgnore
public ResponseEntity<Object> WasteFoilSuccess(@RequestBody JSONObject jo) {
return new ResponseEntity<>(mesToLmsService.WasteFoilSuccess(jo), HttpStatus.OK);
}
}

View File

@@ -70,6 +70,22 @@ public interface MesToLmsService {
*/
JSONObject sendTargetHouse(JSONObject param);
JSONObject momSendSplitMfgOrderBOM(JSONObject param);
JSONObject getRollInfo(JSONObject param);
JSONObject sendLevelInfo(JSONObject param);
JSONObject containerNeedDown(JSONObject param);
JSONObject sendSubInfo(JSONObject param);
JSONObject changeSect(JSONObject param);
JSONObject getWasteFoilWeight(JSONObject param);
JSONObject WasteFoilSuccess(JSONObject param);
}

View File

@@ -7,11 +7,14 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproductionplanService;
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
import org.nl.b_lms.sch.tasks.ProcessTask;
@@ -33,6 +36,7 @@ import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.tasks.CoolCutTask;
import org.nl.wms.st.inbill.service.CheckOutBillService;
import org.nl.wms.st.instor.service.impl.ProductScrapServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -53,6 +57,9 @@ public class MesToLmsServiceImpl implements MesToLmsService {
private final InService inService;
@Autowired
private IPdmBiSlittingproductionplanService slittingproductionplanService;
@Resource
private DjqTask djqTask;
@Resource
@@ -183,15 +190,26 @@ public class MesToLmsServiceImpl implements MesToLmsService {
JSONArray arr = new JSONArray();
String ContainerName = param.getString("ContainerName");
String ResourceName = param.getString("ResourceName");
String Type = param.getString("Type");
JSONObject raw_jo = new JSONObject();
if (Type.equals("TR")) {
raw_jo = WQLObject.getWQLObject("PDM_BI_SurProcessOrder").query("container_name ='" + ContainerName + "' AND resource_name = '" + ResourceName + "'").uniqueResult(0);
} else {
raw_jo = WQLObject.getWQLObject("PDM_BI_RawFoilWorkOrder").query("container_name ='" + ContainerName + "' AND resource_name = '" + ResourceName + "'").uniqueResult(0);
}
//查询该母卷号、设备号对应的生箔工单
JSONObject raw_jo = WQLObject.getWQLObject("PDM_BI_RawFoilWorkOrder").query("container_name ='" + ContainerName + "' AND resource_name = '" + ResourceName + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(raw_jo)) {
throw new BadRequestException("未查询到对应的生箔工单!");
throw new BadRequestException("未查询到对应的工单!");
}
//查询对应的设备是否启用
JSONObject jsonPoint = WQLObject.getWQLObject("ST_IVT_SbPointIvt").query("ext_code ='" + ResourceName + "'").uniqueResult(0);
JSONObject jsonPoint = new JSONObject();
if (Type.equals("TR")) {
jsonPoint = WQLObject.getWQLObject("ST_IVT_StPointIvt").query("ext_code ='" + ResourceName + "'").uniqueResult(0);
} else {
jsonPoint = WQLObject.getWQLObject("ST_IVT_SbPointIvt").query("ext_code ='" + ResourceName + "'").uniqueResult(0);
}
if (ObjectUtil.isEmpty(jsonPoint)) {
jsonPoint = new JSONObject();
}
@@ -398,7 +416,8 @@ public class MesToLmsServiceImpl implements MesToLmsService {
} else {
log.info("当前AGV启用参数为否");
//判断当前位置是否在冷却区如果不在则提醒人工报错
JSONObject container_jo = coolIvtTab.query("container_name = '" + containerName + "' and full_point_status = '02' and cool_ivt_status <> '04' AND point_type = '1'").uniqueResult(0); if (ObjectUtil.isEmpty(container_jo)) {
JSONObject container_jo = coolIvtTab.query("container_name = '" + containerName + "' and full_point_status = '02' and cool_ivt_status <> '04' AND point_type = '1'").uniqueResult(0);
if (ObjectUtil.isEmpty(container_jo)) {
throw new BadRequestException("该母卷已经被烘烤或现在还未绑定在冷却区上且AGV未启用请使用人工烘烤功能【出箱】将母卷绑定到冷却区");
}
container_jo.put("cool_ivt_status", "04");
@@ -1503,11 +1522,14 @@ public class MesToLmsServiceImpl implements MesToLmsService {
String up_scroll = device_jo.getString("up_scroll");
//查询母卷所在点位
JSONObject jsonCoolIvt = coolIvtTab.query("container_name = '" + containerName + "' and full_point_status = '02' and cool_ivt_status <> '04'").uniqueResult(0);
if (ObjectUtil.isEmpty(jsonCoolIvt)) {
throw new BadRequestException("未查询到母卷【" + containerName + "】所在的半成品暂存点!");
}
JSONObject form = new JSONObject();
if (StrUtil.isEmpty(up_scroll)) {
//取满放满
form.put("point_code1", jsonCoolIvt.getString("full_point_code"));
form.put("point_code2", device_jo.getString("up_point_code")+"_M");
form.put("point_code2", device_jo.getString("up_point_code") + "_M");
form.put("task_type", "010702");
form.put("material_code", containerName);
form.put("vehicle_code", jsonCoolIvt.getString("full_vehicle_code"));
@@ -1515,8 +1537,8 @@ public class MesToLmsServiceImpl implements MesToLmsService {
} else {
//取满取空放满放空
form.put("point_code1", jsonCoolIvt.getString("full_point_code"));
form.put("point_code2", device_jo.getString("up_point_code")+"_M");
form.put("point_code3", device_jo.getString("up_point_code")+"_K");
form.put("point_code2", device_jo.getString("up_point_code") + "_M");
form.put("point_code3", device_jo.getString("up_point_code") + "_K");
//判断对应空轴点位是否为空,为空用当前点位,不为空查询其他点位
if (jsonCoolIvt.getString("empty_point_status").equals("01")) {
form.put("point_code4", jsonCoolIvt.getString("empty_point_code"));
@@ -1542,7 +1564,7 @@ public class MesToLmsServiceImpl implements MesToLmsService {
map.put("flag", "1");
map.put("product_area", device_jo.getString("product_area"));
JSONObject jsonIvt = WQL.getWO("PDA_RAWFOIL_01").addParamMap(map).process().uniqueResult(0);
form.put("point_code1", device_jo.getString("up_point_code")+"_M");
form.put("point_code1", device_jo.getString("up_point_code") + "_M");
//寻找可用的冷却区满轴点位
form.put("point_code2", jsonIvt.getString("full_point_code"));
form.put("task_type", "010704");
@@ -1710,5 +1732,104 @@ public class MesToLmsServiceImpl implements MesToLmsService {
return resultParam;
}
@Override
public JSONObject momSendSplitMfgOrderBOM(JSONObject param) {
log.info("momSendSplitMfgOrderBOM输入参数为-------------------" + param.toString());
JSONObject resultParam = new JSONObject();
resultParam.put("RTYPE", "S");
resultParam.put("Code", "0");
resultParam.put("RTMSG", "操作成功!");
return resultParam;
}
@Override
public JSONObject getRollInfo(JSONObject param) {
String ContainerName = param.getString("ContainerName");
PdmBiSlittingproductionplan one = slittingproductionplanService.getOne(new LambdaQueryWrapper<PdmBiSlittingproductionplan>().eq(PdmBiSlittingproductionplan::getContainer_name, ContainerName));
if (ObjectUtil.isEmpty(one)){
throw new BadRequestException("未查询到子卷号为["+ContainerName+"]的分切计划!");
}
JSONObject resultParam = new JSONObject();
resultParam.put("ContainerName",ContainerName);
resultParam.put("ResourceName","");
resultParam.put("Weight",one.getWeight());
resultParam.put("WeighDate",DateUtil.now());
resultParam.put("Type",one.getPaper_tube_or_FRP());
resultParam.put("CarrierWeight",one.getPaper_weight());
return resultParam;
}
@Override
public JSONObject sendLevelInfo(JSONObject param) {
log.info("sendLevelInfo输入参数为-------------------" + param.toString());
JSONObject resultParam = new JSONObject();
resultParam.put("RTYPE", "S");
resultParam.put("Code", "0");
resultParam.put("RTMSG", "操作成功!");
return resultParam;
}
@Override
public JSONObject containerNeedDown(JSONObject param) {
log.info("containerNeedDown输入参数为-------------------" + param.toString());
JSONObject resultParam = new JSONObject();
resultParam.put("RTYPE", "S");
resultParam.put("Code", "0");
resultParam.put("RTMSG", "操作成功!");
return resultParam;
}
@Override
public JSONObject sendSubInfo(JSONObject param) {
log.info("sendSubInfo输入参数为-------------------" + param.toString());
JSONObject resultParam = new JSONObject();
resultParam.put("RTYPE", "S");
resultParam.put("Code", "0");
resultParam.put("RTMSG", "操作成功!");
return resultParam;
}
@Override
public JSONObject changeSect(JSONObject param) {
log.info("changeSect输入参数为-------------------" + param.toString());
JSONObject resultParam = new JSONObject();
resultParam.put("RTYPE", "S");
resultParam.put("Code", "0");
resultParam.put("RTMSG", "操作成功!");
return resultParam;
}
@Override
public JSONObject getWasteFoilWeight(JSONObject param) {
log.info("getWasteFoilWeight输入参数为-------------------" + param.toString());
JSONObject resultParam = new JSONObject();
resultParam.put("RTYPE", "S");
resultParam.put("Code", "0");
resultParam.put("RTMSG", "操作成功!");
return resultParam;
}
@Override
public JSONObject WasteFoilSuccess(JSONObject param) {
log.info("WasteFoilSuccess输入参数为-------------------" + param.toString());
JSONObject resultParam = new JSONObject();
resultParam.put("RTYPE", "S");
resultParam.put("Code", "0");
resultParam.put("RTMSG", "操作成功!");
return resultParam;
}
}

View File

@@ -50,7 +50,7 @@ public class AcsUtil {
throw new BadRequestException("未查询到区域对应的acs地址");
}
//String url =acs_url + api;
String url ="10.1.3.96:8011/"+ api;
String url =acs_url+ api;
try {
JSONArray rows = new JSONArray();
rows.add(jo);

View File

@@ -1,5 +1,5 @@
server:
port: 8010
port: 9999
#配置数据源
spring:
datasource:
@@ -7,10 +7,9 @@ spring:
db-type: com.alibaba.druid.pool.DruidDataSource
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
# url: jdbc:log4jdbc:mysql://${DB_HOST:10.1.3.91}:${DB_PORT:3306}/${DB_NAME:lms_test2}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:lzhl_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
# username: ${DB_USER:root}
url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:lzhl_two_test}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
username: ${DB_USER:root}
password: ${DB_PWD:root}
password: ${DB_PWD:12356}
# 初始连接数
initial-size: 5
# 最小连接数
@@ -161,9 +160,6 @@ sa-token:
jwt-secret-key: opsjajisdnnca0sdkksdfaaasdfwwq
# token 前缀
token-prefix: Bearer
cookie:
# 配置 Cookie 作用域:根据二级域名实现sso登入如lms.sso.com;acs.sso.com
domain:
loki:
url: http://localhost:3100/loki/api/v1