Merge remote-tracking branch 'origin/b_lms' into b_lms
# Conflicts: # lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoInBoxTrussTask.java # lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/InBoxManageServiceImpl.java
This commit is contained in:
@@ -1,10 +1,19 @@
|
||||
package org.nl.b_lms.pda.service.impl;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.b_lms.pda.service.VehicleTwoService;
|
||||
import org.nl.b_lms.sch.point.dao.SchBasePoint;
|
||||
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.InVehicleManageService;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -25,16 +34,111 @@ public class VehicleTwoServiceImpl implements VehicleTwoService {
|
||||
@Autowired
|
||||
private InBoxManageService inBoxManageService;
|
||||
|
||||
/**
|
||||
* ACS服务
|
||||
*/
|
||||
@Autowired
|
||||
private WmsToAcsService wmsToAcsService;
|
||||
|
||||
/**
|
||||
* 点位服务
|
||||
*/
|
||||
@Autowired
|
||||
private IschBasePointService ischBasePointService;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public JSONObject vehicleIn(JSONObject whereJson) {
|
||||
// 调用接口
|
||||
whereJson.put("device_code", whereJson.getString("point_code"));
|
||||
inVehicleManageService.inVehicle(whereJson);
|
||||
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("message", "入库成功!");
|
||||
|
||||
String point_code = whereJson.getString("point_code");
|
||||
String vehicle_type = whereJson.getString("vehicle_type");
|
||||
|
||||
// 判断起点是否存在
|
||||
SchBasePoint pointDao = ischBasePointService.getOne(
|
||||
new QueryWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, point_code)
|
||||
.eq(SchBasePoint::getIs_delete, IOSEnum.IS_NOTANDYES.code("否"))
|
||||
.eq(SchBasePoint::getIs_used, IOSEnum.IS_NOTANDYES.code("是"))
|
||||
);
|
||||
|
||||
if (ObjectUtil.isEmpty(pointDao)) {
|
||||
throw new BadRequestException("点位:"+point_code+"不存在或未启用!");
|
||||
}
|
||||
|
||||
// 判断入库叠盘位的 托盘类型是否相同、是否叠满
|
||||
JSONObject device_jo = new JSONObject();
|
||||
device_jo.put("device_code", "RK1004");
|
||||
device_jo.put("product_area", IOSEnum.PRODUCT_AREA.code("BLK"));
|
||||
|
||||
JSONArray device_ja = new JSONArray();
|
||||
device_ja.add(device_jo);
|
||||
JSONObject device_data = wmsToAcsService.getPointStatus(device_ja);
|
||||
JSONObject data = device_data.getJSONArray("data").getJSONObject(0);
|
||||
|
||||
// 判断是否有货 且托盘类型相同、数量小于5
|
||||
if (data.getString("move").equals(IOSEnum.IS_NOTANDYES.code("否")) ||
|
||||
(data.getString("move").equals(IOSEnum.IS_NOTANDYES.code("是"))
|
||||
&& vehicle_type.equals(data.getString("container_type"))
|
||||
&& data.getIntValue("qty") < 5)
|
||||
) {
|
||||
// 生成入库叠盘机输送任务
|
||||
JSONObject jsonTaskParam = new JSONObject();
|
||||
jsonTaskParam.put("task_type", "010715");
|
||||
jsonTaskParam.put("start_device_code", point_code);
|
||||
jsonTaskParam.put("next_device_code", "RK1004");
|
||||
jsonTaskParam.put("vehicle_code", whereJson.getString("vehicle_code"));
|
||||
jsonTaskParam.put("vehicle_type", whereJson.getString("vehicle_type"));
|
||||
|
||||
TwoInEmpExcepTask taskBean = new TwoInEmpExcepTask();
|
||||
taskBean.createTask(jsonTaskParam);
|
||||
taskBean.immediateNotifyAcs(null);
|
||||
|
||||
result.put("message", "入库成功!");
|
||||
return result;
|
||||
}
|
||||
|
||||
// 生层到出库口叠盘机任务
|
||||
// 判断托盘类型
|
||||
String next_device_code = "";
|
||||
if (vehicle_type.equals(IOSEnum.IS_NOTANDYES.code("是"))) {
|
||||
// 小托盘 CK2009
|
||||
next_device_code = "CK2009";
|
||||
} else {
|
||||
// 大托盘 CK2011
|
||||
next_device_code = "CK2011";
|
||||
}
|
||||
|
||||
// 判断点位状态
|
||||
device_jo.put("device_code", next_device_code);
|
||||
|
||||
JSONArray device_ja2 = new JSONArray();
|
||||
device_ja2.add(device_jo);
|
||||
JSONObject device_data2 = wmsToAcsService.getPointStatus(device_ja2);
|
||||
JSONObject data2 = device_data2.getJSONArray("data").getJSONObject(0);
|
||||
|
||||
// 判断是否有货 且数量小于5
|
||||
if (data2.getString("move").equals(IOSEnum.IS_NOTANDYES.code("否")) ||
|
||||
(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"));
|
||||
|
||||
TwoInEmpExcepTask taskBean = new TwoInEmpExcepTask();
|
||||
taskBean.createTask(jsonTaskParam);
|
||||
taskBean.immediateNotifyAcs(null);
|
||||
} else {
|
||||
result.put("message", "入库失败! 出库叠盘位已叠满!"+next_device_code);
|
||||
return result;
|
||||
}
|
||||
|
||||
result.put("message", "入库成功!");
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -40,6 +40,8 @@ public class TwoInBoxTrussTask extends AbstractAcsTask {
|
||||
ArrayList<AcsTaskDto> resultList = new ArrayList<>();
|
||||
for (int i = 0; i < arr.size(); i++) {
|
||||
JSONObject json = arr.getJSONObject(i);
|
||||
|
||||
JSONObject params = json.getJSONObject("params");
|
||||
char dtl_type = json.getString("task_type").charAt(json.getString("task_type").length() - 1);
|
||||
AcsTaskDto dto = AcsTaskDto.builder()
|
||||
.ext_task_id(json.getString("task_id"))
|
||||
@@ -53,6 +55,11 @@ public class TwoInBoxTrussTask extends AbstractAcsTask {
|
||||
.dtl_type(String.valueOf(dtl_type))
|
||||
.interaction_json(JSONObject.parseObject(json.getString("request_param")))
|
||||
.remark(json.getString("remark"))
|
||||
.layer(json.getString("layer"))
|
||||
.barcode(params.getString("box_no"))
|
||||
.height(params.getString("height"))
|
||||
.width(params.getString("width"))
|
||||
.length(params.getString("length"))
|
||||
.build();
|
||||
resultList.add(dto);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,166 @@
|
||||
package org.nl.b_lms.sch.tasks;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.wms.sch.AcsTaskDto;
|
||||
import org.nl.wms.sch.manage.AbstractAcsTask;
|
||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 二期空托盘入库异常任务类
|
||||
* Created by Lxy on 2024/1/19.
|
||||
*/
|
||||
public class TwoInEmpExcepTask extends AbstractAcsTask {
|
||||
|
||||
/**
|
||||
* 处理类
|
||||
*/
|
||||
private final String THIS_CLASS = TwoInEmpExcepTask.class.getName();
|
||||
|
||||
@Override
|
||||
public List<AcsTaskDto> addTask() {
|
||||
/*
|
||||
* 下发给ACS时需要特殊处理
|
||||
*/
|
||||
JSONArray arr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0);
|
||||
|
||||
ArrayList<AcsTaskDto> resultList = new ArrayList<>();
|
||||
for (int i = 0; i < arr.size(); i++) {
|
||||
JSONObject json = arr.getJSONObject(i);
|
||||
|
||||
char dtl_type = json.getString("task_type").charAt(json.getString("task_type").length() - 1);
|
||||
AcsTaskDto dto = AcsTaskDto.builder()
|
||||
.ext_task_id(json.getString("task_id"))
|
||||
.task_code(json.getString("task_code"))
|
||||
.task_type(json.getString("acs_task_type"))
|
||||
.start_device_code(json.getString("point_code1"))
|
||||
.next_device_code(json.getString("point_code2"))
|
||||
.vehicle_code(json.getString("vehicle_code"))
|
||||
.priority(json.getString("priority"))
|
||||
.class_type(json.getString("task_type"))
|
||||
.dtl_type("7")
|
||||
.remark(json.getString("remark"))
|
||||
.build();
|
||||
resultList.add(dto);
|
||||
}
|
||||
return resultList;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateTaskStatus(JSONObject taskObj, String status) {
|
||||
// 更新任务的参数
|
||||
JSONObject map = new JSONObject();
|
||||
|
||||
/*
|
||||
* 1-执行中, 2-完成 ,0-acs取消
|
||||
*/
|
||||
// 执行中
|
||||
if (status.equals(TaskStatusEnum.EXECUTING.getCode())) {
|
||||
|
||||
map.put("task_status", TaskStatusEnum.EXECUTING.getCode());
|
||||
}
|
||||
|
||||
// 完成
|
||||
if (status.equals(TaskStatusEnum.FINISHED.getCode())) {
|
||||
|
||||
map.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
|
||||
}
|
||||
|
||||
// 取消
|
||||
if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) {
|
||||
|
||||
if (taskObj.getIntValue("task_status") > Integer.valueOf(TaskStatusEnum.ISSUE.getCode())) {
|
||||
throw new BadRequestException("任务已执行不能取消");
|
||||
}
|
||||
|
||||
// 更新任务表删除字段
|
||||
map.put("is_delete", IOSEnum.IS_NOTANDYES.code("是"));
|
||||
}
|
||||
|
||||
map.put("update_optid", SecurityUtils.getCurrentUserId());
|
||||
map.put("update_optname", SecurityUtils.getCurrentNickName());
|
||||
map.put("update_time", DateUtil.now());
|
||||
|
||||
WQLObject.getWQLObject("SCH_BASE_Task").update(map, "task_id = '" + taskObj.getString("task_id") + "'");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void findStartPoint() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void findNextPoint() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public String createTask(JSONObject form) {
|
||||
|
||||
if (StrUtil.isBlank(form.getString("task_type"))) {
|
||||
throw new BadRequestException("业务类型不能为空!");
|
||||
}
|
||||
|
||||
if (StrUtil.isBlank(form.getString("start_device_code"))) {
|
||||
throw new BadRequestException("起点不能为空!");
|
||||
}
|
||||
|
||||
if (StrUtil.isBlank(form.getString("next_device_code"))) {
|
||||
throw new BadRequestException("终点不能为空!");
|
||||
}
|
||||
|
||||
if (StrUtil.isBlank(form.getString("vehicle_code"))) {
|
||||
throw new BadRequestException("托盘号不能为空!");
|
||||
}
|
||||
|
||||
if (StrUtil.isBlank(form.getString("vehicle_type"))) {
|
||||
throw new BadRequestException("托盘类型不能为空!");
|
||||
}
|
||||
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("task_id", IdUtil.getSnowflake(1, 1).nextId());
|
||||
json.put("task_code", IdUtil.getSnowflake(1, 1).nextId());
|
||||
json.put("task_type", form.getString("task_type"));
|
||||
json.put("vehicle_code", form.getString("vehicle_code"));
|
||||
json.put("vehicle_type", form.getString("vehicle_type"));
|
||||
json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
|
||||
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("create_id", SecurityUtils.getCurrentUserId());
|
||||
json.put("create_name", SecurityUtils.getCurrentUsername());
|
||||
json.put("create_time", DateUtil.now());
|
||||
json.put("priority", "1");
|
||||
json.put("acs_task_type", "7");
|
||||
|
||||
WQLObject.getWQLObject("SCH_BASE_Task").insert(json);
|
||||
return json.getString("task_id");
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void forceFinish(String task_id) {
|
||||
JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0);
|
||||
this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(String task_id) {
|
||||
JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0);
|
||||
this.updateTaskStatus(taskObj, IOSEnum.ACS_RESULT.code("取消"));
|
||||
}
|
||||
}
|
||||
@@ -89,7 +89,6 @@ public class TwoOutEmpTask extends AbstractAcsTask {
|
||||
JSONObject jsonAttr = attrTab.query("struct_code = '" + jsonTask.getString("point_code1") + "'").uniqueResult(0);
|
||||
jsonAttr.put("lock_type",IOSEnum.LOCK_TYPE.code("未锁定"));
|
||||
jsonAttr.put("storagevehicle_code","");
|
||||
jsonAttr.put("storagevehicle_type","");
|
||||
attrTab.update(jsonAttr);
|
||||
}
|
||||
|
||||
|
||||
@@ -563,10 +563,10 @@ public class SlitterServiceImpl implements SlitterService {
|
||||
throw new BadRequestException("查询不到气胀轴编码「" + qzzNo + "」对应的子卷信息!");
|
||||
}
|
||||
PdmBiSlittingproductionplan plan;
|
||||
if (SlitterConstant.SLITTER_SUB_VOLUME_LEFT.equals(direction)) {
|
||||
plan = plans.stream().filter(p -> SlitterConstant.SLITTER_SUB_VOLUME_LEFT.equals(p.getLeft_or_right())).findFirst().orElse(null);
|
||||
} else {
|
||||
if (SlitterConstant.SLITTER_SUB_VOLUME_RIGHT.equals(direction)) {
|
||||
plan = plans.stream().filter(p -> SlitterConstant.SLITTER_SUB_VOLUME_RIGHT.equals(p.getLeft_or_right())).findFirst().orElse(null);
|
||||
} else {
|
||||
plan = plans.stream().filter(p -> SlitterConstant.SLITTER_SUB_VOLUME_LEFT.equals(p.getLeft_or_right())).findFirst().orElse(null);
|
||||
}
|
||||
if (plan == null) {
|
||||
log.error("设备{}, 找不到气胀轴编码{}对应的分切计划!参数:{}", deviceCode, qzzNo, param);
|
||||
|
||||
@@ -67,6 +67,11 @@ public class BstIvtBoxinfo implements Serializable {
|
||||
*/
|
||||
private String box_high;
|
||||
|
||||
/*
|
||||
* 载具类型
|
||||
*/
|
||||
private String vehicle_type;
|
||||
|
||||
/*
|
||||
* 捆绑数量
|
||||
*/
|
||||
|
||||
@@ -91,6 +91,9 @@ public enum IOSEnum {
|
||||
//外部系统
|
||||
EXT_SYSTEM(MapOf.of("mes", "mes","sap","sap","crm","crm")),
|
||||
|
||||
// 区域
|
||||
PRODUCT_AREA(MapOf.of("BLK", "BLK")),
|
||||
|
||||
//acs申请任务
|
||||
ACSTOLMS_TYPE(MapOf.of("成品入库任务", "1","空盘入库","2","空盘出库","3","异常处理位","4","木箱入库","5","贴标","1","捆扎","2")),
|
||||
;
|
||||
|
||||
@@ -148,6 +148,15 @@ public class InBoxManageServiceImpl implements InBoxManageService {
|
||||
/*
|
||||
* 插入木箱对应载具表
|
||||
*/
|
||||
|
||||
//查询对应的木箱信息
|
||||
// 查询木箱信息
|
||||
BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.getOne(
|
||||
new QueryWrapper<BstIvtBoxinfo>().lambda()
|
||||
.eq(BstIvtBoxinfo::getBox_no, whereJson.getString("box_no"))
|
||||
);
|
||||
|
||||
|
||||
JSONObject jsonVehicle = vehicleTab.query("storagevehicle_code = '" + whereJson.getString("vehicle_code") + "'")
|
||||
.uniqueResult(0);
|
||||
|
||||
@@ -169,9 +178,17 @@ public class InBoxManageServiceImpl implements InBoxManageService {
|
||||
taskParam.put("task_type", "010713");
|
||||
taskParam.put("start_device_code", whereJson.getString("point_code"));
|
||||
taskParam.put("next_device_code", "1001");
|
||||
taskParam.put("vehicle_code", whereJson.getString("box_no"));
|
||||
taskParam.put("vehicle_code", whereJson.getString("vehicle_code"));
|
||||
taskParam.put("vehicle_code2", whereJson.getString("vehicle_code"));
|
||||
taskParam.put("layer", whereJson.getString("layer"));
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("layer",whereJson.getString("layer"));
|
||||
param.put("box_length",boxDao.getBox_length());
|
||||
param.put("box_width",boxDao.getBox_width());
|
||||
param.put("box_high",boxDao.getBox_high());
|
||||
param.put("vehicle_type", boxDao.getVehicle_type());
|
||||
param.put("box_no", whereJson.getString("box_no"));
|
||||
taskParam.put("request_param", param.toString());
|
||||
|
||||
TwoInBoxTrussTask taskBean = new TwoInBoxTrussTask();
|
||||
taskBean.createTask(taskParam);
|
||||
taskBean.immediateNotifyAcs(null);
|
||||
|
||||
@@ -164,6 +164,7 @@ public class InVehicleManageServiceImpl implements InVehicleManageService {
|
||||
JSONArray structArray = 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 = '"+jsonParam.getString("stor_id")+"' " +
|
||||
"AND storagevehicle_type = '" +jsonParam.getString("vehicle_type")+"'"+
|
||||
"AND sect_id = '"+jsonParam.getString("sect_id")+"'").getResultJSONArray(0);
|
||||
|
||||
if (ObjectUtil.isEmpty(structArray)) {
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
AND attr.block_num = 输入.block_num
|
||||
AND attr.row_num = 输入.row_num
|
||||
|
||||
order by attr.col_num,attr.layer_num ASC,attr.zdepth DESC
|
||||
order by attr.col_num DESC,attr.layer_num ASC,attr.zdepth DESC
|
||||
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
|
||||
@@ -212,7 +212,7 @@
|
||||
attr.row_num = 输入.row_num
|
||||
ENDOPTION
|
||||
|
||||
order by attr.col_num DESC ,attr.layer_num ASC,attr.zdepth DESC
|
||||
order by attr.col_num,attr.layer_num ASC,attr.zdepth DESC
|
||||
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
输入.row_in TYPEAS f_string
|
||||
输入.not_row_in TYPEAS f_string
|
||||
输入.not_block TYPEAS f_string
|
||||
输入.storagevehicle_type TYPEAS s_string
|
||||
输入.vehicle_type TYPEAS s_string
|
||||
|
||||
[临时表]
|
||||
--这边列出来的临时表就会在运行期动态创建
|
||||
@@ -64,8 +64,8 @@
|
||||
attr.block_num NOT IN 输入.not_block
|
||||
ENDOPTION
|
||||
|
||||
OPTION 输入.storagevehicle_type <> ""
|
||||
attr.storagevehicle_type = 输入.storagevehicle_type
|
||||
OPTION 输入.vehicle_type <> ""
|
||||
attr.storagevehicle_type = 输入.vehicle_type
|
||||
ENDOPTION
|
||||
|
||||
group by attr.block_num
|
||||
@@ -147,7 +147,7 @@
|
||||
AND attr.block_num = 输入.block_num
|
||||
AND attr.row_num = 输入.row_num
|
||||
|
||||
order by attr.col_num,attr.layer_num ASC,attr.zdepth DESC
|
||||
order by attr.col_num DESC,attr.layer_num ASC,attr.zdepth DESC
|
||||
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
|
||||
@@ -228,7 +228,7 @@
|
||||
box.num = 输入.num
|
||||
ENDOPTION
|
||||
|
||||
order by attr.col_num, attr.zdepth, attr.layer_num
|
||||
order by attr.col_num DESC, attr.zdepth, attr.layer_num
|
||||
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
|
||||
@@ -168,7 +168,7 @@
|
||||
attr.row_num = 输入.row_num
|
||||
ENDOPTION
|
||||
|
||||
order by attr.col_num, attr.zdepth
|
||||
order by attr.col_num DESC, attr.zdepth
|
||||
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
|
||||
@@ -63,6 +63,14 @@ public class RawFoilController {
|
||||
return new ResponseEntity<>(rawFoilService.needEmptyAxisTest(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/createOrder")
|
||||
@Log("创建工单")
|
||||
|
||||
public ResponseEntity<Object> createOrder(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(rawFoilService.createOrder(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/needEmptyVehicle")
|
||||
@Log("呼叫空轴")
|
||||
|
||||
|
||||
@@ -44,6 +44,15 @@ public interface RawFoilService {
|
||||
*/
|
||||
JSONObject needEmptyAxisTest(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 创建工单
|
||||
*
|
||||
* @param whereJson /
|
||||
* @return JSONObject
|
||||
*/
|
||||
JSONObject createOrder(JSONObject whereJson);
|
||||
|
||||
|
||||
/**
|
||||
* 呼叫空卷轴
|
||||
*
|
||||
|
||||
@@ -393,6 +393,16 @@ public class BakingServiceImpl implements BakingService {
|
||||
if (ObjectUtil.isEmpty(point_code2)) {
|
||||
throw new BadRequestException("没有无货且没有任务的点位类型为出箱的烘箱对接位!");
|
||||
}
|
||||
|
||||
JSONObject jsonRaw = rawTab.query("container_name = '" + jsonHotIvt.getString("container_name") + "' and is_delete = '0'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(jsonRaw)) {
|
||||
throw new BadRequestException("未查询到母卷号:" + jsonHotIvt.getString("container_name") + "对应的生箔工单!");
|
||||
}
|
||||
JSONObject jsonMater = materTab.query("material_code = '" + jsonRaw.getString("product_name") + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(jsonMater)) {
|
||||
throw new BadRequestException("物料基础信息中无此物料!");
|
||||
}
|
||||
|
||||
// 3.创建任务
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("point_code1", point_code1);
|
||||
@@ -405,15 +415,6 @@ public class BakingServiceImpl implements BakingService {
|
||||
//查询该母卷对应最近的一条入烘箱记录
|
||||
JSONObject last_hot_mst = WQLObject.getWQLObject("ST_IVT_HotRegionIOMst").query("container_name = '" + jsonHotIvt.getString("container_name") + "' AND io_type = '0' order by confirm_time desc").uniqueResult(0);
|
||||
|
||||
JSONObject jsonRaw = rawTab.query("container_name = '" + jsonHotIvt.getString("container_name") + "' and is_delete = '0'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(jsonRaw)) {
|
||||
throw new BadRequestException("未查询到母卷号:" + jsonHotIvt.getString("container_name") + "对应的生箔工单!");
|
||||
}
|
||||
JSONObject jsonMater = materTab.query("material_code = '" + jsonRaw.getString("product_name") + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(jsonMater)) {
|
||||
throw new BadRequestException("物料基础信息中无此物料!");
|
||||
}
|
||||
|
||||
JSONObject hotParam = new JSONObject();
|
||||
hotParam.put("container_name", jsonRaw.getString("container_name"));
|
||||
hotParam.put("workorder_id", jsonRaw.getString("workorder_id"));
|
||||
|
||||
@@ -203,13 +203,55 @@ public class RawFoilServiceImpl implements RawFoilService {
|
||||
return jo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject createOrder(JSONObject whereJson) {
|
||||
WQLObject rawTab = WQLObject.getWQLObject("PDM_BI_RawFoilWorkOrder"); // 生箔工单表
|
||||
WQLObject sbTab = WQLObject.getWQLObject("ST_IVT_SbPointIvt"); // 生箔点位库存表
|
||||
JSONObject device_jo = sbTab.query("point_code = '" + whereJson.getString("point_code") + "'").uniqueResult(0);
|
||||
|
||||
String container_name = whereJson.getString("container_name");
|
||||
//判断该母卷是否存在工单
|
||||
JSONObject raw_jo = WQLObject.getWQLObject("pdm_bi_rawfoilworkorder").query("container_name = '"+container_name+"'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(raw_jo)){
|
||||
throw new BadRequestException("当前母卷存在生箔工单,不允许创建!");
|
||||
}
|
||||
|
||||
// 插入生箔工序工单表
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("workorder_id", IdUtil.getSnowflake(1, 1).nextId());
|
||||
json.put("container_name", container_name);
|
||||
json.put("resource_name", device_jo.getString("ext_code"));
|
||||
json.put("mfg_order_name", "test");
|
||||
json.put("product_name", "741011000000361");
|
||||
json.put("description", "铜箔|双面光|原箔|6微米|1350");
|
||||
json.put("theory_height", 2000.00);
|
||||
json.put("eqp_velocity", 20.00);
|
||||
json.put("up_coiler_date", DateUtil.now());
|
||||
json.put("is_reload_send", 0);
|
||||
json.put("order_type", device_jo.getString("device_type"));
|
||||
json.put("product_area", "B2");
|
||||
json.put("realstart_time", DateUtil.now());
|
||||
json.put("status", "01");
|
||||
json.put("is_delete", "0");
|
||||
json.put("agvno", "0");
|
||||
json.put("productin_qty", 0);
|
||||
json.put("create_id", "1");
|
||||
json.put("create_name", "管理员");
|
||||
json.put("create_time", DateUtil.now());
|
||||
rawTab.insert(json);
|
||||
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("message", "操作成功!");
|
||||
return jo;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public JSONObject needEmptyAxisTest(JSONObject whereJson) {
|
||||
|
||||
WQLObject rawTab = WQLObject.getWQLObject("PDM_BI_RawFoilWorkOrder"); // 生箔工单表
|
||||
WQLObject sbTab = WQLObject.getWQLObject("ST_IVT_SbPointIvt"); // 生箔点位库存表
|
||||
JSONObject device_jo = sbTab.query("point_code = '"+whereJson.getString("point_code")+"'").uniqueResult(0);
|
||||
JSONObject device_jo = sbTab.query("point_code = '" + whereJson.getString("point_code") + "'").uniqueResult(0);
|
||||
// 插入生箔工序工单表
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("workorder_id", IdUtil.getSnowflake(1, 1).nextId());
|
||||
|
||||
@@ -118,6 +118,14 @@ public class AcsTaskDto {
|
||||
*/
|
||||
private String empty_site;
|
||||
|
||||
private String layer;
|
||||
|
||||
private String length;
|
||||
|
||||
private String width;
|
||||
|
||||
private String height;
|
||||
|
||||
private String barcode;
|
||||
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ public class AcsUtil {
|
||||
product_area = "LK";
|
||||
}
|
||||
if (jo.containsKey("class_type") && jo.getString("class_type").contains("0107")) {
|
||||
product_area = "LK";
|
||||
product_area = "BLK";
|
||||
}
|
||||
if (StrUtil.isEmpty(product_area)) {
|
||||
throw new BadRequestException("区域不能为空!下发信息:" + jo.toString());
|
||||
|
||||
@@ -16,6 +16,7 @@ public enum URLEnum {
|
||||
ACS_URL_A3("A3", () -> SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("ACS_URL_A3").getValue()),
|
||||
ACS_URL_A4("A4", () -> SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("ACS_URL_A4").getValue()),
|
||||
ACS_URL_LK("LK", () -> SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("ACS_URL_LK").getValue()),
|
||||
ACS_URL_BLK("BLK", () -> SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("ACS_URL_BLK").getValue()),
|
||||
ACS_URL_B2("B2", () -> SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("ACS_URL_B2").getValue());
|
||||
|
||||
private final String product_area;
|
||||
|
||||
@@ -375,6 +375,7 @@ public class CheckOutBillController {
|
||||
|
||||
@PostMapping("/testInEmp")
|
||||
@Log("空载具入库测试")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> testInEmp(@RequestBody JSONObject whereJson) {
|
||||
new InVehicleManageServiceImpl().inVehicle(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 622 B |
@@ -1,14 +1,17 @@
|
||||
.head-container {
|
||||
padding-bottom: 10px;
|
||||
padding-top: 8px;
|
||||
padding-bottom: 6px;
|
||||
background-color: #ffffff;
|
||||
border-radius: 4px;
|
||||
|
||||
.filter-item {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
margin: 0 3px 3px 0;
|
||||
margin: 0 3px 10px 0;
|
||||
|
||||
input {
|
||||
height: 28px;
|
||||
line-height: 28px;
|
||||
height: 30.5px;
|
||||
line-height: 30.5px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +22,7 @@
|
||||
vertical-align: middle;
|
||||
font-size: 14px;
|
||||
color: #606266;
|
||||
line-height: 28px;
|
||||
line-height: 30.5px;
|
||||
padding: 0 7px 0 7px;
|
||||
}
|
||||
|
||||
@@ -28,7 +31,7 @@
|
||||
}
|
||||
|
||||
.el-select__caret.el-input__icon.el-icon-arrow-up {
|
||||
line-height: 28px;
|
||||
line-height: 30.5px;
|
||||
}
|
||||
|
||||
.date-item {
|
||||
@@ -149,7 +152,7 @@
|
||||
}
|
||||
|
||||
.el-form-item--mini.el-form-item {
|
||||
margin-bottom: 8px !important;
|
||||
margin-bottom: 10px !important;
|
||||
}
|
||||
|
||||
//去除编辑文本框为数字时的上下箭头start
|
||||
@@ -188,7 +191,7 @@ input[type="number"]::-webkit-outer-spin-button {
|
||||
.el-table__fixed-header-wrapper {
|
||||
th {
|
||||
word-break: break-word;
|
||||
background-color: #f8f8f9;
|
||||
background-color: #f5f5f5;
|
||||
color: #515a6e;
|
||||
height: 35px;
|
||||
font-size: 13px;
|
||||
|
||||
@@ -21,6 +21,7 @@ label {
|
||||
html {
|
||||
height: 100%;
|
||||
box-sizing: border-box;
|
||||
background-color: #eeeeee;
|
||||
}
|
||||
|
||||
#app {
|
||||
@@ -98,7 +99,7 @@ div:focus {
|
||||
}
|
||||
|
||||
aside {
|
||||
background: #eef1f6;
|
||||
background: #d40c70;
|
||||
padding: 8px 24px;
|
||||
margin-bottom: 20px;
|
||||
border-radius: 2px;
|
||||
@@ -122,7 +123,7 @@ aside {
|
||||
|
||||
//main-container全局样式
|
||||
.app-container {
|
||||
padding: 20px 20px 45px 20px;
|
||||
padding: 10px 10px 45px 10px;
|
||||
}
|
||||
|
||||
.components-container {
|
||||
|
||||
@@ -13,17 +13,17 @@ $base-logo-light-title-color: #001529;
|
||||
$base-menu-light-background:#ffffff;
|
||||
|
||||
// sidebar
|
||||
$menuText:#bfcbd9;
|
||||
$menuText: #ffffff;
|
||||
$menuActiveText:#409EFF;
|
||||
$subMenuActiveText:#f4f4f5; // https://github.com/ElemeFE/element/issues/12951
|
||||
$subMenuActiveText: #ffffff; // https://github.com/ElemeFE/element/issues/12951
|
||||
|
||||
$menuBg:#304156; //https://cloud.tencent.com/developer/article/1753773
|
||||
$menuHover:#263445;
|
||||
$menuBg: #001529; //https://cloud.tencent.com/developer/article/1753773
|
||||
$menuHover:#4e5465;
|
||||
|
||||
$base-menu-light-color:rgba(0,0,0,.70);
|
||||
|
||||
$subMenuBg:#1f2d3d;
|
||||
$subMenuHover:#001528;
|
||||
$subMenuBg:#000c17;
|
||||
$subMenuHover:#4e5465;
|
||||
|
||||
$sideBarWidth: 205px;
|
||||
|
||||
@@ -45,4 +45,4 @@ $sideBarWidth: 205px;
|
||||
logoLightTitleColor: $base-logo-light-title-color
|
||||
}
|
||||
|
||||
$base-sidebar-width: 200px;
|
||||
$base-sidebar-width: 2010px;
|
||||
|
||||
@@ -258,6 +258,7 @@ export default {
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin: 0px 10px 0px 10px;
|
||||
}
|
||||
.crud-opts .crud-opts-right {
|
||||
margin-left: auto;
|
||||
|
||||
Reference in New Issue
Block a user