no message
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
package org.nl.wms.common;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.exception.BadRequestException;
|
||||
import org.nl.wms.ext.acs.service.impl.WmsToAcsServiceImpl;
|
||||
import org.nl.wql.WQL;
|
||||
import org.nl.wql.core.bean.WQLObject;
|
||||
|
||||
public class PointUpdateUtil {
|
||||
public static void updatePoint(JSONArray arr) {
|
||||
WmsToAcsServiceImpl wmsToAcsServiceImpl = new WmsToAcsServiceImpl();
|
||||
|
||||
//JSONObject joo = wmsToAcsServiceImpl.queryPointStatus(arr);
|
||||
//JSONArray pointarr = joo.getJSONArray("arr");
|
||||
|
||||
JSONArray pointarr =new JSONArray();
|
||||
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
|
||||
for (int i = 0; i < pointarr.size(); i++) {
|
||||
JSONObject pointjo = pointarr.getJSONObject(i);
|
||||
String point_status = "00";
|
||||
String vehicle_code = pointjo.getString("vehicle_code");
|
||||
if (StrUtil.isNotEmpty(vehicle_code)) {
|
||||
point_status = "02";
|
||||
}
|
||||
pointjo.put("point_status", point_status);
|
||||
pointTable.update(pointjo);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -2,7 +2,9 @@ package org.nl.wms.common;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.alipay.api.domain.BFActivityOpenApiInfo;
|
||||
import org.nl.exception.BadRequestException;
|
||||
import org.nl.start.day01.Struct;
|
||||
import org.nl.wql.WQL;
|
||||
@@ -89,4 +91,34 @@ public class StructFindUtil {
|
||||
return result;
|
||||
}
|
||||
|
||||
//获取空闲的输送线的上料位
|
||||
public static JSONObject getConveyor(JSONObject jsonObject) {
|
||||
String material_id = jsonObject.getString("material_id");
|
||||
//判断入输送线的规则有没有开启,假如开启需要带上物料,没有开启不需要带上物料
|
||||
String value = WQLObject.getWQLObject("sys_param").query("code='is_inrule'").uniqueResult(0).getString("value");
|
||||
if (StrUtil.equals(value, "0")) {
|
||||
material_id = "";
|
||||
}
|
||||
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
|
||||
WQLObject taskTable = WQLObject.getWQLObject("sch_base_task");
|
||||
//获取可以用的输送线数组
|
||||
JSONArray deviceArr = WQL.getWO("QSTRUCT_RULE").addParam("flag", "6")
|
||||
.addParam("material_id", material_id).process().getResultJSONArray(0);
|
||||
JSONObject result = new JSONObject();
|
||||
for (int i = 0; i < deviceArr.size(); i++) {
|
||||
JSONObject deviceObj = deviceArr.getJSONObject(i);
|
||||
int count = deviceObj.getIntValue("count");
|
||||
//假如到该输送线上料位置的任务>= 空闲的位置个数,则需要选择下一个输送线
|
||||
int task_num = WQL.getWO("QSTRUCT_RULE").addParam("flag", "7").process().uniqueResult(0).getIntValue("count");
|
||||
if (count > task_num) {
|
||||
result = pointTable.query("device_id = '" + deviceObj.getString("device_id") + "' and device_point_type='01'").uniqueResult(0);
|
||||
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -18,9 +18,11 @@
|
||||
输入.material_id TYPEAS s_string
|
||||
输入.sect_id TYPEAS s_string
|
||||
输入.area_type TYPEAS s_string
|
||||
输入.vehicle_type TYPEAS s_string
|
||||
输入.workprocedure_id TYPEAS s_string
|
||||
输入.vehicle_type TYPEAS s_string
|
||||
输入.workprocedure_id TYPEAS s_string
|
||||
输入.is_full TYPEAS s_string
|
||||
输入.material_id TYPEAS s_string
|
||||
输入.next_point_code TYPEAS s_string
|
||||
|
||||
|
||||
[临时表]
|
||||
@@ -172,8 +174,6 @@ IF 输入.flag = "5"
|
||||
point.point_code AS struct_code,
|
||||
point.point_name AS struct_name,
|
||||
point.vehicle_code
|
||||
|
||||
|
||||
FROM
|
||||
sch_base_point point
|
||||
LEFT JOIN md_pb_vehicle vehicle ON vehicle.vehicle_code = point.vehicle_code
|
||||
@@ -189,4 +189,51 @@ IF 输入.flag = "5"
|
||||
ENDOPTION
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
IF 输入.flag = "6"
|
||||
QUERY
|
||||
SELECT
|
||||
device.device_id,
|
||||
device.device_code,
|
||||
device.device_name,
|
||||
rule.in_seq_no,
|
||||
count( * ) AS count
|
||||
FROM
|
||||
sch_base_point point
|
||||
LEFT JOIN st_rule_cacheline rule ON point.device_id = rule.cacheline_id
|
||||
LEFT JOIN pdm_base_device device ON device.device_id = rule.cacheline_id
|
||||
WHERE
|
||||
point.area_type = '07'
|
||||
AND ( point.vehicle_code = '' OR point.vehicle_code IS NULL )
|
||||
OPTION 输入.material_id <> ""
|
||||
rule.material_id = 输入.material_id
|
||||
ENDOPTION
|
||||
GROUP BY
|
||||
device.device_id,
|
||||
device.device_code,
|
||||
device.device_name,
|
||||
rule.in_seq_no
|
||||
ORDER BY
|
||||
rule.in_seq_no
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
|
||||
|
||||
IF 输入.flag = "7"
|
||||
QUERY
|
||||
SELECT
|
||||
count(*)
|
||||
FROM
|
||||
sch_base_task task
|
||||
WHERE
|
||||
task.task_status IN ( '04', '05', '06' )
|
||||
and task.is_delete ='1'
|
||||
OPTION 输入.next_point_code <> ""
|
||||
task.next_point_code = 输入.next_point_code
|
||||
ENDOPTION
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
@@ -45,17 +45,16 @@ public class AcsToWmsController {
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
@PostMapping("/group")
|
||||
@Log("ACS扫码器组盘")
|
||||
@Log("ACS扫码器入库组盘")
|
||||
@ApiOperation("ACS扫码器组盘")
|
||||
public ResponseEntity<Object> group(@RequestBody Map whereJson) {
|
||||
acsToWmsService.group(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/ispackage")
|
||||
@Log("ACS给WMS请求是否优先包装")
|
||||
@ApiOperation("ACS给WMS请求是否优先包装")
|
||||
@Log("ACS给WMS请求是否自动码垛")
|
||||
@ApiOperation("ACS给WMS请求是否自动码垛")
|
||||
public ResponseEntity<Object> ispackage(@RequestBody Map whereJson) {
|
||||
return new ResponseEntity<>(acsToWmsService.ispackage(whereJson), HttpStatus.OK);
|
||||
}
|
||||
@@ -89,4 +88,12 @@ public class AcsToWmsController {
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/updateVehicleType")
|
||||
@Log("更新覆膜机的点位状态")
|
||||
@ApiOperation("更新覆膜机的点位状态")
|
||||
public ResponseEntity<Object> updateVehicleType(@RequestBody Map whereJson) {
|
||||
acsToWmsService.updateVehicleType(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -64,5 +64,12 @@ public class WmsToAcsController {
|
||||
return new ResponseEntity<>(wmsToAcsService.action(arr), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/queryPointStatus")
|
||||
@Log("查询点位状态")
|
||||
@ApiOperation("查询点位状态")
|
||||
public ResponseEntity<Object> queryPointStatus(@RequestBody Map whereJson) {
|
||||
JSONArray arr = JSONArray.parseArray(JSON.toJSONString(whereJson.get("data")));
|
||||
return new ResponseEntity<>(wmsToAcsService.queryPointStatus(arr), HttpStatus.OK);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -74,4 +74,6 @@ public interface AcsToWmsService {
|
||||
|
||||
void sureProduceTask(Map jsonObject);
|
||||
|
||||
void updateVehicleType(Map jsonObject);
|
||||
|
||||
}
|
||||
|
||||
@@ -41,6 +41,12 @@ public interface WmsToAcsService {
|
||||
* @return
|
||||
*/
|
||||
Map<String, Object> action(JSONArray arr);
|
||||
/**
|
||||
* 下发动作信号
|
||||
* @param arr
|
||||
* @return
|
||||
*/
|
||||
Map<String, Object> queryPointStatus(JSONArray arr);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -5,20 +5,20 @@ import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.exception.BadRequestException;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.start.day01.Struct;
|
||||
import org.nl.utils.SecurityUtils;
|
||||
import org.nl.wms.WorkProcedureEnum;
|
||||
import org.nl.wms.common.PointUpdateUtil;
|
||||
import org.nl.wms.common.StructFindUtil;
|
||||
import org.nl.wms.database.service.dto.VehicleDto;
|
||||
import org.nl.wms.ext.acs.service.AcsToWmsService;
|
||||
import org.nl.wms.sch.manage.buss.CallEmptyVehicleTask;
|
||||
import org.nl.wms.sch.manage.buss.CallMaterialTask;
|
||||
import org.nl.wms.sch.manage.buss.SendEmptyVehicleTask;
|
||||
import org.nl.wms.sch.manage.buss.SendMaterialTask;
|
||||
import org.nl.wms.sch.manage.AreaEnum;
|
||||
import org.nl.wms.sch.manage.buss.*;
|
||||
import org.nl.wql.WQL;
|
||||
import org.nl.wql.core.bean.WQLObject;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -34,7 +34,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
private final CallMaterialTask callMaterialTask;
|
||||
private final SendEmptyVehicleTask sendEmptyVehicleTask;
|
||||
private final CallEmptyVehicleTask callEmptyVehicleTask;
|
||||
|
||||
private final RgvTask rgvTask;
|
||||
private final WmsToAcsServiceImpl wmsToAcsServiceImpl;
|
||||
private final ToConveyorTask toConveyorTask;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@@ -49,20 +51,22 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
if (StrUtil.isEmpty(type)) {
|
||||
throw new BadRequestException("类型不能为空!");
|
||||
}
|
||||
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
|
||||
switch (type) {
|
||||
//送料入库
|
||||
case "1":
|
||||
jsonObject.put("start_point_code", device_code);
|
||||
jsonObject.put("create_mode", "01");
|
||||
String material_id = (String) jsonObject.get("material_id");
|
||||
String product_code = (String) jsonObject.get("product_code");
|
||||
String pcsn = (String) jsonObject.get("pcsn");
|
||||
if (StrUtil.isEmpty(material_id)) {
|
||||
if (StrUtil.isEmpty(product_code)) {
|
||||
throw new BadRequestException("物料不能为空!");
|
||||
}
|
||||
if (StrUtil.isEmpty(pcsn)) {
|
||||
throw new BadRequestException("批次不能为空!");
|
||||
}
|
||||
//批次 物料,客户要从排产单里面去取
|
||||
JSONObject materialObj = WQLObject.getWQLObject("md_me_material").query("material_code ='" + product_code + "'").uniqueResult(0);
|
||||
String material_id = materialObj.getString("material_id");
|
||||
//如果是出窑输送线 要从组盘表里面去找物料
|
||||
if (StrUtil.equals(device_code, "CYSSX101")) {
|
||||
String vehicle_code = (String) jsonObject.get("vehicle_code");
|
||||
@@ -81,9 +85,29 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
jsonObject.put("create_mode", "01");
|
||||
jsonObject.put("material_id", material_id);
|
||||
JSONObject materiralObj = WQLObject.getWQLObject("md_me_material").query("material_id = '" + material_id + "'").uniqueResult(0);
|
||||
String stewing_time = materiralObj.getString("stewing_time");
|
||||
Double stewing_time = materiralObj.getDouble("stewing_time");
|
||||
jsonObject.put("stewing_time", stewing_time);
|
||||
jsonObject.put("producetask_id", produceInfoByCode.getString("producetask_id"));
|
||||
//假如是压制下料的几个位置,则要考虑是入输送线 还是入立体库
|
||||
String area_type = pointTable.query("point_code ='" + device_code + "'").uniqueResult(0).getString("area_type");
|
||||
if (StrUtil.equals(area_type, AreaEnum.YZQY.getCode()) && stewing_time <= 0) {
|
||||
//1.首先更新所有输送线的点位状态
|
||||
JSONArray pointarr = pointTable.query("area_type ='07'").getResultJSONArray(0);
|
||||
PointUpdateUtil.updatePoint(pointarr);
|
||||
//2.找一个合适的输送带
|
||||
JSONObject pointObj = StructFindUtil.getConveyor(materiralObj);
|
||||
|
||||
//如果未找到合适的输送带 就去货架
|
||||
if (ObjectUtil.isEmpty(pointObj)) {
|
||||
sendMaterialTask.createTask((JSONObject) JSON.toJSON(jsonObject));
|
||||
} else {
|
||||
jsonObject.put("next_point_code", pointObj.getString("point_code"));
|
||||
toConveyorTask.createTask((JSONObject) JSON.toJSON(jsonObject));
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
sendMaterialTask.createTask((JSONObject) JSON.toJSON(jsonObject));
|
||||
break;
|
||||
case "2":
|
||||
@@ -106,33 +130,16 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
case "4":
|
||||
//叫空托盘
|
||||
jsonObject.put("next_point_code", device_code);
|
||||
produceInfoByCode = this.getProduceInfoByCode(device_code);
|
||||
//假如是压制机下料位置或者是码垛位的上料位,则去看看有没有当前排产单生产的物料的半满托
|
||||
if (StrUtil.equals(device_code, "YZJ01XL01") ||
|
||||
StrUtil.equals(device_code, "YZJ01XL02") ||
|
||||
StrUtil.equals(device_code, "YZJ02XL01") ||
|
||||
StrUtil.equals(device_code, "YZJ02XL02") ||
|
||||
StrUtil.equals(device_code, "YZJ03XL01") ||
|
||||
StrUtil.equals(device_code, "YZJ03XL02") ||
|
||||
StrUtil.equals(device_code, "YZJ04XL01") ||
|
||||
StrUtil.equals(device_code, "YZJ04XL02") ||
|
||||
StrUtil.equals(device_code, "YZJ05XL01") ||
|
||||
StrUtil.equals(device_code, "YZJ05XL02") ||
|
||||
StrUtil.equals(device_code, "YZJ05XL02") ||
|
||||
StrUtil.equals(device_code, "YZJ06XL01") ||
|
||||
StrUtil.equals(device_code, "YZJ06XL02") ||
|
||||
StrUtil.equals(device_code, "YZJ07XL01") ||
|
||||
StrUtil.equals(device_code, "YZJ07XL02") ||
|
||||
StrUtil.equals(device_code, "YZJ08XL01") ||
|
||||
StrUtil.equals(device_code, "YZJ08XL02") ||
|
||||
StrUtil.equals(device_code, "FJJXS01MD1") ||
|
||||
StrUtil.equals(device_code, "FJJXS01MD2") ||
|
||||
StrUtil.equals(device_code, "FJJXS02MD1") ||
|
||||
StrUtil.equals(device_code, "FJJXS02MD2")
|
||||
if (StrUtil.equals(device_code, "FJJXSSLW101") ||
|
||||
StrUtil.equals(device_code, "FJJXSSLW102") ||
|
||||
StrUtil.equals(device_code, "FJJXSSLW301") ||
|
||||
StrUtil.equals(device_code, "FJJXSSLW302")
|
||||
) {
|
||||
produceInfoByCode = this.getProduceInfoByCode(device_code);
|
||||
|
||||
material_id = produceInfoByCode.getString("material_id");
|
||||
String cust_id = produceInfoByCode.getString("cust_id");
|
||||
String workprocedure_id = WorkProcedureEnum.YZGX.getId();
|
||||
String workprocedure_id = WorkProcedureEnum.FJGX.getId();
|
||||
JSONObject jsonObject1 = WQL.getWO("ACSTOMES_001").addParam("flag", "1")
|
||||
.addParam("workprocedure_id", workprocedure_id)
|
||||
.addParam("material_id", material_id)
|
||||
@@ -144,16 +151,52 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
jsonObject.put("create_mode", "01");
|
||||
jsonObject.put("pcsn", "pcsn");
|
||||
jsonObject.put("material_id", material_id);
|
||||
jsonObject.put("cust_id", cust_id);
|
||||
jsonObject.put("is_full", "0");
|
||||
jsonObject.put("workprocedure_id", workprocedure_id);
|
||||
callMaterialTask.createTask((JSONObject) JSON.toJSON(jsonObject));
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (ObjectUtil.isEmpty(produceInfoByCode)) {
|
||||
throw new BadRequestException("未找到点位为'" + device_code + "'对应机械手的生产工单!");
|
||||
}
|
||||
jsonObject.put("vehicle_type",produceInfoByCode.getString("vehicle_type"));
|
||||
|
||||
callEmptyVehicleTask.createTask((JSONObject) JSON.toJSON(jsonObject));
|
||||
break;
|
||||
//生产rgv搬运任务
|
||||
case "5":
|
||||
jsonObject.put("next_point_code", device_code);
|
||||
jsonObject.put("create_mode", "01");
|
||||
//1 判断有没有执行的Rgv搬运任务
|
||||
JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_type='04' and is_delete='0' and acs_task_type<>'07'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
return;
|
||||
}
|
||||
//寻找起点
|
||||
//更新所有设备的点位的状态
|
||||
JSONArray pointarr = pointTable.query("area_type='07' and device_point_type ='01' ").getResultJSONArray(0);
|
||||
WmsToAcsServiceImpl wmsToAcsService = new WmsToAcsServiceImpl();
|
||||
JSONArray reurnPointStatusArr = wmsToAcsService.queryPointStatus(pointarr).getJSONArray("data");
|
||||
for (int i = 0; i < reurnPointStatusArr.size(); i++) {
|
||||
JSONObject reurnPointStatusObj = reurnPointStatusArr.getJSONObject(i);
|
||||
reurnPointStatusObj.put("update_time", DateUtil.now());
|
||||
pointTable.update(reurnPointStatusObj);
|
||||
}
|
||||
//假如没有设置哪个输送线先出,没有按照先进先出
|
||||
JSONObject param = new JSONObject();
|
||||
String rule = WQLObject.getWQLObject("sys_param").query("code='is_outrule'").uniqueResult(0).getString("value");
|
||||
if (StrUtil.equals(rule, "1")) {
|
||||
param = WQL.getWO("ACSTOMES_001").addParam("flag", "3").process().uniqueResult(0);
|
||||
} else {
|
||||
param = WQL.getWO("ACSTOMES_001").addParam("flag", "2").process().uniqueResult(0);
|
||||
}
|
||||
if (ObjectUtil.isEmpty(param)) {
|
||||
throw new BadRequestException("未找到合适的输送线可以出!");
|
||||
}
|
||||
param.put("start_point_code", param.getString("point_code"));
|
||||
rgvTask.createTask((JSONObject) JSON.toJSON(jsonObject));
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -250,15 +293,51 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
public void group(Map jsonObject) {
|
||||
String task_id = (String) jsonObject.get("task_id");
|
||||
String vehicle_code = (String) jsonObject.get("vehicle_code");
|
||||
//永远判断生成不生成输送任务
|
||||
String device_code = (String) jsonObject.get("device_code");
|
||||
if (StrUtil.isEmpty(task_id)) {
|
||||
throw new BadRequestException("任务标识不能为空!");
|
||||
}
|
||||
if (StrUtil.isEmpty(vehicle_code)) {
|
||||
throw new BadRequestException("载具号不能为空!");
|
||||
}
|
||||
if (StrUtil.isEmpty(device_code)) {
|
||||
throw new BadRequestException("设备点位不能为空!");
|
||||
}
|
||||
//1组盘
|
||||
WQLObject.getWQLObject("")
|
||||
//2 生成任务
|
||||
WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehiclegroup");
|
||||
JSONObject groupObj = groupTable.query("task_id='" + task_id + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(groupObj)) {
|
||||
throw new BadRequestException("未找到指令为'" + task_id + "'的组盘信息!");
|
||||
}
|
||||
groupObj.put("vehicle_code", vehicle_code);
|
||||
groupObj.put("update_optid", SecurityUtils.getCurrentUserId());
|
||||
groupObj.put("update_optname", SecurityUtils.getNickName());
|
||||
groupObj.put("update_time", DateUtil.now());
|
||||
groupTable.update(groupObj);
|
||||
//更新入库单单据的托盘条码
|
||||
WQLObject iosTable = WQLObject.getWQLObject("ST_IVT_workProcedureIOS");
|
||||
JSONObject iosObj = iosTable.query("task_id ='" + task_id + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(iosObj)) {
|
||||
iosObj.put("vehicle_code", vehicle_code);
|
||||
iosTable.update(iosObj);
|
||||
}
|
||||
//更新任务的条码
|
||||
WQLObject taskTable = WQLObject.getWQLObject("sch_base_task");
|
||||
JSONObject taskObj = taskTable.query("task_id ='" + task_id + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(taskObj)) {
|
||||
taskObj.put("vehicle_code", vehicle_code);
|
||||
taskTable.update(taskObj);
|
||||
}
|
||||
//假如是入窑输送线对接口,生成输送任务
|
||||
if (StrUtil.equals("RYSSX101", device_code) || StrUtil.equals("RYSSX201", device_code)
|
||||
|| StrUtil.equals("RYSSX301", device_code) || StrUtil.equals("RYSSX401", device_code)) {
|
||||
ConveyorTask conveyorTask = new ConveyorTask();
|
||||
JSONObject taskjo = new JSONObject();
|
||||
taskjo.put("vehicle_code", vehicle_code);
|
||||
taskjo.put("start_point_code", device_code);
|
||||
conveyorTask.createTask(taskjo);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -272,10 +351,11 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
if (ObjectUtil.isEmpty(vehicleObj)) {
|
||||
throw new BadRequestException("为找到托盘号为'" + vehicle_code + "'的组盘信息!");
|
||||
}
|
||||
String producetask_id = vehicleObj.getString("producetask_id");
|
||||
JSONObject taskObj = WQLObject.getWQLObject("PDM_MG_produceTask").query("producetask_id='" + producetask_id + "'").uniqueResult(0);
|
||||
WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehiclegroup");
|
||||
JSONObject groupObj = groupTable.query("vehicle_code ='" + vehicle_code + "'").uniqueResult(0);
|
||||
groupTable.query("vehicle_code ='" + vehicle_code + "'").uniqueResult(0);
|
||||
JSONObject returnjo = new JSONObject();
|
||||
returnjo.put("is_package", taskObj.getString("is_package"));
|
||||
returnjo.put("is_autopackage", groupObj.getString("is_autopackage"));
|
||||
return returnjo;
|
||||
}
|
||||
|
||||
@@ -391,6 +471,29 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
taskTable.update(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateVehicleType(Map jsonObject) {
|
||||
String vehicle_type = (String) jsonObject.get("vehicle_type");
|
||||
String device_code = (String) jsonObject.get("device_code");
|
||||
String vehicle_code = (String) jsonObject.get("vehicle_code");
|
||||
if (StrUtil.isEmpty(vehicle_type)) {
|
||||
throw new BadRequestException("托盘类型不能为空!");
|
||||
}
|
||||
if (StrUtil.isEmpty(device_code)) {
|
||||
throw new BadRequestException("设备点位不能为空");
|
||||
}
|
||||
if (StrUtil.isEmpty(vehicle_code)) {
|
||||
throw new BadRequestException("托盘号不能为空!");
|
||||
}
|
||||
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
|
||||
JSONObject pointObj = pointTable.query("point_code='" + device_code + "' and area_type='05'").uniqueResult(0);
|
||||
pointObj.put("vehicle_type", vehicle_type);
|
||||
pointObj.put("vehicle_code", vehicle_code);
|
||||
pointObj.put("point_status", "01");
|
||||
pointTable.update(pointObj);
|
||||
|
||||
}
|
||||
|
||||
private JSONObject getProduceInfoByCode(String code) {
|
||||
//根据 设备点位去找生产任务信息
|
||||
//1 根据点位去找设备,去找对应的设备信息
|
||||
|
||||
@@ -40,6 +40,13 @@ public class WmsToAcsServiceImpl implements WmsToAcsService {
|
||||
return AcsUtil.notifyAcs(api, arr);
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject queryPointStatus(JSONArray arr) {
|
||||
String api = "api/wms/updateDeviceGoods";
|
||||
return AcsUtil.notifyAcs(api, arr);
|
||||
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
String format = DateUtil.format(new Date(), "yyyy-MM-dd");
|
||||
System.out.println(format);
|
||||
|
||||
@@ -61,3 +61,45 @@
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
|
||||
IF 输入.flag = "2"
|
||||
QUERY
|
||||
SELECT
|
||||
point.point_id,
|
||||
point.point_code,
|
||||
point.point_name,
|
||||
vehiclegroup.vehicle_code
|
||||
FROM
|
||||
sch_base_point point
|
||||
LEFT JOIN st_buss_vehiclegroup vehiclegroup ON point.vehicle_code = vehiclegroup.vehicle_code
|
||||
WHERE
|
||||
point.area_type = '07'
|
||||
AND point.device_point_type = '01'
|
||||
and (vehiclegroup.vehicle_code <>'' and vehiclegroup .vehicle_code is not null)
|
||||
ORDER BY
|
||||
vehiclegroup.create_time
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
IF 输入.flag = "3"
|
||||
QUERY
|
||||
SELECT
|
||||
point.point_id,
|
||||
point.point_code,
|
||||
point.point_name,
|
||||
point.area_type,
|
||||
point.vehicle_code
|
||||
FROM
|
||||
sch_base_point point
|
||||
LEFT JOIN st_rule_cacheline rule on rule.cacheline_id =point.device_id
|
||||
WHERE
|
||||
point.area_type = '07'
|
||||
AND point.device_point_type = '01'
|
||||
and (point.vehicle_code <>'' and point .vehicle_code is not null)
|
||||
ORDER BY
|
||||
rule.out_seq_no
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
|
||||
package org.nl.wms.pda.bindMaterial.rest;
|
||||
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.annotation.Log;
|
||||
import org.nl.wms.pda.bindMaterial.service.PdaBindingMaterialService;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author ldjun
|
||||
* @date 2021-07-26
|
||||
**/
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@Api(tags = "手持托盘组盘绑定接口管理")
|
||||
@RequestMapping("/api/pda/bindingMaterial")
|
||||
@Slf4j
|
||||
public class PdaBindingMaterialController {
|
||||
|
||||
private final PdaBindingMaterialService pdaBindingService;
|
||||
|
||||
@PostMapping("/queryInfoByVehicle")
|
||||
@Log("根据托盘查询信息")
|
||||
@ApiOperation("根据托盘查询信息")
|
||||
public ResponseEntity<Object> queryInfoByVehicle(@RequestBody Map<String, String> param) {
|
||||
return new ResponseEntity<>(pdaBindingService.queryInfoByVehicle(param), HttpStatus.OK);
|
||||
}
|
||||
@PostMapping("/confirm")
|
||||
@Log("托盘物料绑定确定")
|
||||
@ApiOperation("托盘物料绑定确定")
|
||||
public ResponseEntity<Object> Confirm(@RequestBody Map<String, String> param) {
|
||||
return new ResponseEntity<>(pdaBindingService.Confirm(param), HttpStatus.OK);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package org.nl.wms.pda.bindMaterial.service;
|
||||
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public interface PdaBindingMaterialService {
|
||||
Map<String, Object> queryInfoByVehicle(Map<String,String> jsonObject);
|
||||
/**
|
||||
* 盘点单确认
|
||||
* @param param 条件
|
||||
* @return Map<String,Object>
|
||||
*
|
||||
*/
|
||||
Map<String, Object> Confirm(@RequestBody Map<String, String> param);
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
package org.nl.wms.pda.bindMaterial.service.impl;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.modules.system.service.UserService;
|
||||
import org.nl.wms.database.service.MaterialService;
|
||||
import org.nl.wms.pda.bindMaterial.service.PdaBindingMaterialService;
|
||||
import org.nl.wms.pda.exception.PdaRequestException;
|
||||
import org.nl.wql.WQL;
|
||||
import org.nl.wql.core.bean.WQLObject;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class PdaBindingMaterialServiceImpl implements PdaBindingMaterialService {
|
||||
|
||||
@Override
|
||||
public Map<String, Object> queryInfoByVehicle(Map<String, String> jsonObject) {
|
||||
JSONObject returnjo = new JSONObject();
|
||||
String vehicle_code = (String) jsonObject.get("vehicle_code");
|
||||
//JSONArray materialja = WQLObject.getWQLObject("st_buss_vehiclegroup").query("vehicle_code='"+vehicle_code+"'").getResultJSONArray(0);
|
||||
JSONObject materialja = WQL.getWO("QPADSERVICE").addParam("vehicle_code", vehicle_code).addParam("flag", "16").process().uniqueResult(0);
|
||||
returnjo.put("code", "1");
|
||||
returnjo.put("desc", "查询成功!");
|
||||
returnjo.put("result", materialja);
|
||||
return returnjo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> Confirm(@RequestBody Map<String, String> param) {
|
||||
|
||||
String vehicle_code = (String) param.get("vehicle_code");
|
||||
String material_id = (String) param.get("material_id");
|
||||
String material_code = (String) param.get("material_code");
|
||||
String material_name = (String) param.get("material_name");
|
||||
String pcsn = (String) param.get("pcsn");
|
||||
String qty = (String) param.get("qty");
|
||||
WQLObject table = WQLObject.getWQLObject("st_buss_vehiclegroup");
|
||||
JSONObject vehicleObj = table.query("vehicle_code='" + vehicle_code + "'").uniqueResult(0);
|
||||
vehicleObj.put("material_id", material_id);
|
||||
vehicleObj.put("material_code", material_code);
|
||||
vehicleObj.put("material_name", material_name);
|
||||
vehicleObj.put("pcsn", pcsn);
|
||||
vehicleObj.put("qty", qty);
|
||||
table.update(vehicleObj);
|
||||
JSONObject returnjo = new JSONObject();
|
||||
returnjo.put("code", "1");
|
||||
returnjo.put("desc", "操作成功!");
|
||||
return returnjo;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -31,11 +31,19 @@ public class PdaBindingController {
|
||||
|
||||
private final PdaBindingService pdaBindingService;
|
||||
|
||||
@PostMapping("/binding/querypoint")
|
||||
@Log("查询点位")
|
||||
@ApiOperation("查询点位")
|
||||
public ResponseEntity<Object> queryPoint(@RequestBody Map<String, String> param) {
|
||||
return new ResponseEntity<>(pdaBindingService.queryPoint(param), HttpStatus.OK);
|
||||
|
||||
@PostMapping("/binding/queryArea")
|
||||
@Log("查询区域")
|
||||
@ApiOperation("查询区域")
|
||||
public ResponseEntity<Object> queryArea(@RequestBody Map<String, String> param) {
|
||||
return new ResponseEntity<>(pdaBindingService.queryArea(param), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/binding/queryPointByArea")
|
||||
@Log("根据区域查询点位")
|
||||
@ApiOperation("根据区域查询点位")
|
||||
public ResponseEntity<Object> queryPointByArea(@RequestBody Map<String, String> param) {
|
||||
return new ResponseEntity<>(pdaBindingService.queryPointByArea(param), HttpStatus.OK);
|
||||
}
|
||||
@PostMapping("/binding/confirm")
|
||||
@Log("托盘点位绑定")
|
||||
|
||||
@@ -5,7 +5,8 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
import java.util.Map;
|
||||
public interface PdaBindingService {
|
||||
Map<String, Object> queryPoint(Map<String,String> jsonObject);
|
||||
Map<String, Object> queryArea(Map<String,String> jsonObject);
|
||||
Map<String, Object> queryPointByArea(Map<String,String> jsonObject);
|
||||
/**
|
||||
* 盘点单确认
|
||||
* @param param 条件
|
||||
|
||||
@@ -15,6 +15,7 @@ import org.nl.utils.SecurityUtils;
|
||||
import org.nl.wms.database.service.MaterialService;
|
||||
import org.nl.wms.pda.binding.service.PdaBindingService;
|
||||
import org.nl.wms.pda.exception.PdaRequestException;
|
||||
import org.nl.wql.WQL;
|
||||
import org.nl.wql.core.bean.WQLObject;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -33,15 +34,29 @@ public class PdaBindingServiceImpl implements PdaBindingService {
|
||||
private final MaterialService materialService;
|
||||
|
||||
@Override
|
||||
public Map<String, Object> queryPoint(Map<String, String> jsonObject) {
|
||||
public Map<String, Object> queryArea(Map<String, String> param) {
|
||||
JSONArray areaArr = WQL.getWO("QPAEMPTY").addParam("flag", "4").process().getResultJSONArray(0);
|
||||
JSONObject returnjo = new JSONObject();
|
||||
JSONArray materialja = WQLObject.getWQLObject("sch_base_point").query("1=1").getResultJSONArray(0);
|
||||
returnjo.put("code", "1");
|
||||
returnjo.put("desc", "查询成功!");
|
||||
returnjo.put("result", materialja);
|
||||
returnjo.put("desc", "操作成功!");
|
||||
returnjo.put("result", areaArr);
|
||||
return returnjo;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Map<String, Object> queryPointByArea(Map<String, String> param) {
|
||||
String area_code = (String) param.get("area_code");
|
||||
if (StrUtil.isEmpty(area_code)) {
|
||||
throw new PdaRequestException("区域不能为空!");
|
||||
}
|
||||
JSONArray pointArr = WQL.getWO("QPAEMPTY").addParam("flag", "2").addParam("area_type", area_code).process().getResultJSONArray(0);
|
||||
JSONObject returnjo = new JSONObject();
|
||||
returnjo.put("code", "1");
|
||||
returnjo.put("desc", "操作成功!");
|
||||
returnjo.put("result", pointArr);
|
||||
return returnjo;
|
||||
}
|
||||
@Override
|
||||
public Map<String, Object> Confirm(@RequestBody Map<String, String> param) {
|
||||
//point_code
|
||||
|
||||
@@ -5,6 +5,8 @@ import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.wms.ext.acs.service.AcsToWmsService;
|
||||
import org.nl.wms.ext.acs.service.impl.AcsToWmsServiceImpl;
|
||||
import org.nl.wms.pda.callEmpty.service.CallEmptyService;
|
||||
import org.nl.wms.pda.exception.PdaRequestException;
|
||||
import org.nl.wms.sch.manage.buss.CallEmptyVehicleTask;
|
||||
@@ -20,10 +22,11 @@ import java.util.Map;
|
||||
@Slf4j
|
||||
public class CallEmptyServiceImpl implements CallEmptyService {
|
||||
private final CallEmptyVehicleTask callEmptyVehicleTask;
|
||||
private final AcsToWmsServiceImpl acsToWmsServiceimpl;
|
||||
|
||||
@Override
|
||||
public Map<String, Object> queryArea(Map<String, String> param) {
|
||||
JSONArray areaArr = WQL.getWO("QPAEMPTY").addParam("flag", "1").process().getResultJSONArray(0);
|
||||
JSONArray areaArr = WQL.getWO("QPAEMPTY").addParam("flag", "3").process().getResultJSONArray(0);
|
||||
JSONObject returnjo = new JSONObject();
|
||||
returnjo.put("code", "1");
|
||||
returnjo.put("desc", "操作成功!");
|
||||
@@ -55,7 +58,9 @@ public class CallEmptyServiceImpl implements CallEmptyService {
|
||||
}
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("next_point_code", next_point_code);
|
||||
callEmptyVehicleTask.createTask(jsonObject);
|
||||
jsonObject.put("device_code",next_point_code);
|
||||
jsonObject.put("type","4");
|
||||
acsToWmsServiceimpl.receiveTaskFromAcs(jsonObject);
|
||||
JSONObject returnjo = new JSONObject();
|
||||
returnjo.put("code", "1");
|
||||
returnjo.put("desc", "操作成功!");
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
|
||||
package org.nl.wms.pda.ruleSetting.rest;
|
||||
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.annotation.Log;
|
||||
import org.nl.wms.pda.ruleSetting.service.PdaRuleSettingService;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author ldjun
|
||||
* @date 2021-07-26
|
||||
**/
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@Api(tags = "手持托盘入窑贵州")
|
||||
@RequestMapping("/api/pda/ruleSetting")
|
||||
@Slf4j
|
||||
public class PdaRuleSettingController {
|
||||
|
||||
private final PdaRuleSettingService pdaBindingService;
|
||||
|
||||
@PostMapping("/queryInfo")
|
||||
@Log("查询规则信息")
|
||||
@ApiOperation("查询规则信息")
|
||||
public ResponseEntity<Object> queryInfo(@RequestBody Map<String, String> param) {
|
||||
return new ResponseEntity<>(pdaBindingService.queryInfo(param), HttpStatus.OK);
|
||||
}
|
||||
@PostMapping("/confirm")
|
||||
@Log("规则确定")
|
||||
@ApiOperation("规则确定")
|
||||
public ResponseEntity<Object> Confirm(@RequestBody JSONObject param) {
|
||||
return new ResponseEntity<>(pdaBindingService.Confirm(param), HttpStatus.OK);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package org.nl.wms.pda.ruleSetting.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public interface PdaRuleSettingService {
|
||||
Map<String, Object> queryInfo(Map<String,String> jsonObject);
|
||||
/**
|
||||
* 盘点单确认
|
||||
* @param param 条件
|
||||
* @return Map<String,Object>
|
||||
*
|
||||
*/
|
||||
Map<String, Object> Confirm( JSONObject param);
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
package org.nl.wms.pda.ruleSetting.service.impl;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.modules.system.service.UserService;
|
||||
import org.nl.wms.database.service.MaterialService;
|
||||
import org.nl.wms.pda.exception.PdaRequestException;
|
||||
import org.nl.wms.pda.ruleSetting.service.PdaRuleSettingService;
|
||||
import org.nl.wql.core.bean.WQLObject;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class PdaRuleSettingServiceImpl implements PdaRuleSettingService {
|
||||
|
||||
|
||||
@Override
|
||||
public Map<String, Object> queryInfo(Map<String, String> jsonObject) {
|
||||
String mode = jsonObject.get("mode");
|
||||
//1 为入 2 为出
|
||||
JSONArray arr = new JSONArray();
|
||||
JSONObject infojo = new JSONObject();
|
||||
//1 启用 0 停用
|
||||
String is_used = "";
|
||||
if (StrUtil.equals("1", mode)) {
|
||||
arr = WQLObject.getWQLObject("st_rule_cacheline").query("1=1", "in_seq_no ").getResultJSONArray(0);
|
||||
is_used = WQLObject.getWQLObject("sys_param").query("code='is_inrule'").uniqueResult(0).getString("value");
|
||||
} else {
|
||||
arr = WQLObject.getWQLObject("st_rule_cacheline").query("1=1", "out_seq_no ").getResultJSONArray(0);
|
||||
is_used = WQLObject.getWQLObject("sys_param").query("code='is_outrule'").uniqueResult(0).getString("value");
|
||||
}
|
||||
infojo.put("is_used", is_used);
|
||||
infojo.put("JSONArray", arr);
|
||||
JSONObject returnjo = new JSONObject();
|
||||
returnjo.put("code", "1");
|
||||
returnjo.put("desc", "查询成功!");
|
||||
returnjo.put("result", infojo);
|
||||
return returnjo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> Confirm( JSONObject param) {
|
||||
String mode =(String) param.get("mode");
|
||||
String is_used = (String)param.get("is_used");
|
||||
JSONArray arr = param.getJSONArray("JSONArray");
|
||||
|
||||
WQLObject paramTable = WQLObject.getWQLObject("sys_param");
|
||||
WQLObject ruleTable = WQLObject.getWQLObject("st_rule_cacheline");
|
||||
if (StrUtil.equals(mode, "1")) {
|
||||
JSONObject paramObj = paramTable.query("code='is_inrule'").uniqueResult(0);
|
||||
paramObj.put("value", is_used);
|
||||
paramTable.update(paramObj);
|
||||
for (int i = 0; i < arr.size(); i++) {
|
||||
JSONObject joo = arr.getJSONObject(i);
|
||||
joo.put("in_seq_no",i);
|
||||
ruleTable.update(joo);
|
||||
}
|
||||
} else {
|
||||
JSONObject paramObj = paramTable.query("code='is_outrule'").uniqueResult(0);
|
||||
paramObj.put("value", is_used);
|
||||
paramTable.update(paramObj);
|
||||
for (int i = 0; i < arr.size(); i++) {
|
||||
JSONObject joo = arr.getJSONObject(i);
|
||||
joo.put("out_seq_no",i);
|
||||
ruleTable.update(joo);
|
||||
}
|
||||
}
|
||||
JSONObject returnjo = new JSONObject();
|
||||
returnjo.put("code", "1");
|
||||
returnjo.put("desc", "操作成功!");
|
||||
return returnjo;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -48,6 +48,7 @@
|
||||
sys_dict_detail sys
|
||||
WHERE
|
||||
sys.dict_id = '34'
|
||||
and sys.value='27'
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
@@ -67,4 +68,31 @@
|
||||
ENDOPTION
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
IF 输入.flag = "3"
|
||||
QUERY
|
||||
SELECT
|
||||
sys.`value` as area_code,
|
||||
sys.label as area_name
|
||||
FROM
|
||||
sys_dict_detail sys
|
||||
WHERE
|
||||
sys.dict_id = '34'
|
||||
and (sys.value='27' or sys.value='22')
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
IF 输入.flag = "4"
|
||||
QUERY
|
||||
SELECT
|
||||
sys.`value` as area_code,
|
||||
sys.label as area_name
|
||||
FROM
|
||||
sys_dict_detail sys
|
||||
WHERE
|
||||
sys.dict_id = '34'
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
@@ -386,4 +386,28 @@ IF 输入.flag = "13"
|
||||
md_me_material material
|
||||
ENDSELECT
|
||||
ENDPAGEQUERY
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
IF 输入.flag = "16"
|
||||
QUERY
|
||||
SELECT
|
||||
vehcilegroup.group_id,
|
||||
vehcilegroup.vehicle_code,
|
||||
vehcilegroup.material_id,
|
||||
vehcilegroup.material_code,
|
||||
vehcilegroup.material_name,
|
||||
vehcilegroup.pcsn,
|
||||
vehcilegroup.qty
|
||||
FROM
|
||||
st_buss_vehiclegroup vehcilegroup
|
||||
WHERE
|
||||
1 =1
|
||||
OPTION 输入.vehicle_code <> ""
|
||||
vehcilegroup.vehicle_code = 输入.vehicle_code
|
||||
ENDOPTION
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ import java.util.HashMap;
|
||||
*/
|
||||
@Service
|
||||
public class CallEmptyVehicleTask extends AbstractAcsTask {
|
||||
private final String THIS_CLASS = SendEmptyVehicleTask.class.getName();
|
||||
private final String THIS_CLASS = CallEmptyVehicleTask.class.getName();
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
@@ -190,10 +190,11 @@ public class CallEmptyVehicleTask extends AbstractAcsTask {
|
||||
case YZGX:
|
||||
vehicle_type = VehicleTypeEnum.GTP.getCode();
|
||||
start_area = AreaEnum.DDKTTPQ.getCode();
|
||||
break;
|
||||
//分拣工序
|
||||
case FJGX:
|
||||
//托盘类型取的物料对应的木托盘类型
|
||||
JSONObject produceObj = WQLObject.getWQLObject("PDM_MG_produceTask").query("device_id='" + device_id + "' and producetask_status='04'").uniqueResult(0);
|
||||
JSONObject produceObj = WQLObject.getWQLObject("PDM_MG_produceTask").query("device_id='" + device_id + "' and producetask_status in('03')").uniqueResult(0);
|
||||
vehicle_type = produceObj.getString("vehicle_type");
|
||||
start_area = AreaEnum.MTPQ.getCode();
|
||||
is_auto_issue = "0";
|
||||
|
||||
@@ -0,0 +1,125 @@
|
||||
package org.nl.wms.sch.manage.buss;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.exception.BadRequestException;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.utils.SecurityUtils;
|
||||
import org.nl.wms.sch.manage.AbstractAcsTask;
|
||||
import org.nl.wms.sch.manage.AreaEnum;
|
||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
import org.nl.wms.sch.task.TaskTypeEnum;
|
||||
import org.nl.wql.core.bean.WQLObject;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* 入库任务生成
|
||||
*/
|
||||
@Service
|
||||
public class ConveyorTask extends AbstractAcsTask {
|
||||
private final String THIS_CLASS = ConveyorTask.class.getName();
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public void updateTaskStatus(JSONObject taskObj, String status) {
|
||||
/**
|
||||
*改变任务状态
|
||||
**/
|
||||
String task_id = taskObj.getString("task_id");
|
||||
WQLObject taskTab = WQLObject.getWQLObject("sch_base_task");
|
||||
JSONObject jsonTask = taskTab.query("task_id='" + task_id + "'").uniqueResult(0);
|
||||
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
|
||||
//更新任务状态为执行中
|
||||
jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode());
|
||||
jsonTask.put("update_time", DateUtil.now());
|
||||
taskTab.update(jsonTask);
|
||||
}
|
||||
|
||||
if (TaskStatusEnum.FINISHED.getCode().equals(status)) {
|
||||
// 更新任务状态为完成
|
||||
jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
jsonTask.put("taskfinish_mode", taskObj.getString("taskfinish_mode"));
|
||||
jsonTask.put("update_time", DateUtil.now());
|
||||
jsonTask.put("remark", "任务执行完成");
|
||||
taskTab.update(jsonTask);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void findStartPoint() {
|
||||
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public void findNextPoint() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createTask(JSONObject form) {
|
||||
JSONObject taskObj = new JSONObject();
|
||||
//只需要传起点就好,跟载具,终点永远是入窑口
|
||||
String vehicle_code = form.getString("vehicle_code");
|
||||
String start_point_code = form.getString("start_point_code");
|
||||
if (StrUtil.isEmpty(vehicle_code)) {
|
||||
throw new BadRequestException("载具不能为空!");
|
||||
}
|
||||
if (StrUtil.isEmpty(start_point_code)) {
|
||||
throw new BadRequestException("起点不能为空!");
|
||||
}
|
||||
taskObj.put("task_id", IdUtil.getSnowflake(1, 1).nextId() + "");
|
||||
String task_status = TaskStatusEnum.START_AND_POINT.getCode();
|
||||
taskObj.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
|
||||
taskObj.put("task_type", TaskTypeEnum.IN_TASK.getCode());
|
||||
//输送任务
|
||||
taskObj.put("acs_task_type", "2");
|
||||
String start_area = AreaEnum.RYSSXQ.getCode();
|
||||
String next_area = AreaEnum.RYSSXQ.getCode();
|
||||
//根据起点去找终点
|
||||
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
|
||||
String device_id = pointTable.query("point_code ='" + start_point_code + "'").uniqueResult(0).getString("device_id");
|
||||
String next_point_code = pointTable.query("device_id ='" + device_id + "' and device_point_type ='02'").uniqueResult(0).getString("point_code");
|
||||
taskObj.put("task_status", task_status);
|
||||
taskObj.put("start_point_code", start_point_code);
|
||||
taskObj.put("start_area", start_area);
|
||||
taskObj.put("next_area", next_area);
|
||||
taskObj.put("next_point_code", next_point_code);
|
||||
taskObj.put("vehicle_code", vehicle_code);
|
||||
taskObj.put("create_name", SecurityUtils.getNickName());
|
||||
taskObj.put("create_id", SecurityUtils.getCurrentUserId());
|
||||
taskObj.put("create_time", DateUtil.now());
|
||||
taskObj.put("update_optid", SecurityUtils.getCurrentUserId());
|
||||
taskObj.put("update_name", SecurityUtils.getNickName());
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskObj.put("handle_class", THIS_CLASS);
|
||||
//任务基础表【sch_base_task】
|
||||
WQLObject.getWQLObject("sch_base_task").insert(taskObj);
|
||||
return taskObj.getString("task_id");
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void forceFinish(String task_id) {
|
||||
if (StrUtil.isEmpty(task_id)) {
|
||||
throw new BadRequestException("任务id不能为空!");
|
||||
}
|
||||
JSONObject taskjo = WQLObject.getWQLObject("sch_base_task").query("task_id='" + task_id + "'").uniqueResult(0);
|
||||
taskjo.getString("taskfinish_mode");
|
||||
this.updateTaskStatus(taskjo, TaskStatusEnum.FINISHED.getCode());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void pullBack(String task_id) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(String task_id) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,122 @@
|
||||
package org.nl.wms.sch.manage.buss;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.exception.BadRequestException;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.utils.SecurityUtils;
|
||||
import org.nl.wms.sch.manage.AbstractAcsTask;
|
||||
import org.nl.wms.sch.manage.AreaEnum;
|
||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
import org.nl.wms.sch.task.TaskTypeEnum;
|
||||
import org.nl.wql.core.bean.WQLObject;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* 入库任务生成
|
||||
*/
|
||||
@Service
|
||||
public class RgvTask extends AbstractAcsTask {
|
||||
private final String THIS_CLASS = RgvTask.class.getName();
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
|
||||
public void updateTaskStatus(JSONObject taskObj, String status) {
|
||||
/**
|
||||
*改变任务状态
|
||||
**/
|
||||
String task_id = taskObj.getString("task_id");
|
||||
WQLObject taskTab = WQLObject.getWQLObject("sch_base_task");
|
||||
JSONObject jsonTask = taskTab.query("task_id='" + task_id + "'").uniqueResult(0);
|
||||
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
|
||||
//更新任务状态为执行中
|
||||
jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode());
|
||||
jsonTask.put("update_time", DateUtil.now());
|
||||
taskTab.update(jsonTask);
|
||||
}
|
||||
|
||||
if (TaskStatusEnum.FINISHED.getCode().equals(status)) {
|
||||
// 更新任务状态为完成
|
||||
jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
jsonTask.put("taskfinish_mode", taskObj.getString("taskfinish_mode"));
|
||||
jsonTask.put("update_time", DateUtil.now());
|
||||
jsonTask.put("remark", "任务执行完成");
|
||||
taskTab.update(jsonTask);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void findStartPoint() {
|
||||
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public void findNextPoint() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createTask(JSONObject form) {
|
||||
JSONObject taskObj = new JSONObject();
|
||||
//只需要传起点就好,跟载具,终点永远是入窑口
|
||||
String vehicle_code = form.getString("vehicle_code");
|
||||
String start_point_code = form.getString("start_point_code");
|
||||
String next_point_code = form.getString("next_point_code");
|
||||
if (StrUtil.isEmpty(vehicle_code)) {
|
||||
throw new BadRequestException("载具不能为空!");
|
||||
}
|
||||
if (StrUtil.isEmpty(start_point_code)) {
|
||||
throw new BadRequestException("起点不能为空!");
|
||||
}
|
||||
taskObj.put("task_id", IdUtil.getSnowflake(1, 1).nextId() + "");
|
||||
String task_status = TaskStatusEnum.START_AND_POINT.getCode();
|
||||
taskObj.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
|
||||
taskObj.put("task_type", TaskTypeEnum.IN_TASK.getCode());
|
||||
//输送任务
|
||||
taskObj.put("acs_task_type", "2");
|
||||
String start_area = AreaEnum.RYSSXQ.getCode();
|
||||
String next_area = AreaEnum.YQY.getCode();
|
||||
taskObj.put("task_status", task_status);
|
||||
taskObj.put("start_point_code", start_point_code);
|
||||
taskObj.put("start_area", start_area);
|
||||
taskObj.put("next_area", next_area);
|
||||
taskObj.put("next_point_code", next_point_code);
|
||||
taskObj.put("vehicle_code", vehicle_code);
|
||||
taskObj.put("create_name", SecurityUtils.getNickName());
|
||||
taskObj.put("create_id", SecurityUtils.getCurrentUserId());
|
||||
taskObj.put("create_time", DateUtil.now());
|
||||
taskObj.put("update_optid", SecurityUtils.getCurrentUserId());
|
||||
taskObj.put("update_name", SecurityUtils.getNickName());
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskObj.put("handle_class", THIS_CLASS);
|
||||
//任务基础表【sch_base_task】
|
||||
WQLObject.getWQLObject("sch_base_task").insert(taskObj);
|
||||
return taskObj.getString("task_id");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void forceFinish(String task_id) {
|
||||
if (StrUtil.isEmpty(task_id)) {
|
||||
throw new BadRequestException("任务id不能为空!");
|
||||
}
|
||||
JSONObject taskjo = WQLObject.getWQLObject("sch_base_task").query("task_id='" + task_id + "'").uniqueResult(0);
|
||||
taskjo.getString("taskfinish_mode");
|
||||
this.updateTaskStatus(taskjo, TaskStatusEnum.FINISHED.getCode());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void pullBack(String task_id) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(String task_id) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -93,55 +93,19 @@ public class SendEmptyVehicleTask extends AbstractAcsTask {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void findNextPoint() {
|
||||
String task_status = TaskStatusEnum.SURE_START.getCode();
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
JSONArray taskArry = taskTab.query("task_status='" + task_status + "' AND handle_class='" + THIS_CLASS + "' AND is_delete='0' ").getResultJSONArray(0);
|
||||
for (int i = 0; i < taskArry.size(); i++) {
|
||||
JSONObject taskObj = taskArry.getJSONObject(i);
|
||||
String task_id = taskObj.getString("task_id");
|
||||
//找一个合适的仓位
|
||||
WQLObject Recordtable = WQLObject.getWQLObject("st_buss_EmptyVehicleRecord");
|
||||
JSONObject IosObj = Recordtable.query("task_id='" + task_id + "' and is_delete ='0'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(IosObj)) {
|
||||
throw new BadRequestException("未找到任务号为'" + taskObj.getString("task_code") + "'的单据!");
|
||||
}
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("area_type", IosObj.getString("end_area"));
|
||||
param.put("vehicle_code", IosObj.getString("vehicle_code"));
|
||||
JSONObject inStructObj = StructFindUtil.getEmptyVehicleInStruct(param);
|
||||
if (ObjectUtil.isEmpty(inStructObj)) {
|
||||
throw new BadRequestException("未找到合适的仓位!");
|
||||
}
|
||||
//修改单据状态,将终点填入
|
||||
IosObj.put("bill_status", "20");
|
||||
IosObj.put("end_point_code", inStructObj.getString("struct_code"));
|
||||
Recordtable.update(IosObj);
|
||||
//终点加锁
|
||||
HashMap lock_map = new HashMap();
|
||||
lock_map.put("lock_type", "01");
|
||||
WQLObject.getWQLObject("sch_base_point").update(lock_map, "point_code = '" + inStructObj.getString("struct_code") + "'");
|
||||
//修改任务状态
|
||||
taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
|
||||
taskObj.put("update_optid", SecurityUtils.getCurrentUserId());
|
||||
taskObj.put("update_optname", SecurityUtils.getNickName());
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
public void findNextPoint() {}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public String createTask(JSONObject form) {
|
||||
//送空托盘只会有钢托盘有这个需求, 所以终点永远都是 KTPHCW5 都是从码垛机械手送到空托盘缓存位5
|
||||
PointService pointService = SpringContextHolder.getBean(PointService.class);
|
||||
//起点,托盘 不能为空,终点可以为空
|
||||
String vehicle_code = form.getString("vehicle_code");
|
||||
String start_point_code = form.getString("start_point_code");
|
||||
String next_point_code = form.getString("next_point_code");
|
||||
String task_status = TaskStatusEnum.SURE_START.getCode();
|
||||
String next_area = form.getString("next_area");
|
||||
String next_point_code = "KTPHCW5";
|
||||
String task_status = TaskStatusEnum.START_AND_POINT.getCode();
|
||||
String next_area = AreaEnum.DKKTTPQ.getCode();
|
||||
WQLObject taskTable = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
if (StrUtil.isEmpty(start_point_code)) {
|
||||
throw new BadRequestException("起点不能为空!");
|
||||
@@ -154,7 +118,6 @@ public class SendEmptyVehicleTask extends AbstractAcsTask {
|
||||
if (StrUtil.isEmpty(vehicle_code)) {
|
||||
throw new BadRequestException("载具未找到!");
|
||||
}
|
||||
|
||||
//判断起点有没有未完成的指令
|
||||
JSONObject beforTaskObj = taskTable.
|
||||
query("is_delete='0' and start_point_code='" + start_point_code + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "'")
|
||||
@@ -162,36 +125,8 @@ public class SendEmptyVehicleTask extends AbstractAcsTask {
|
||||
if (ObjectUtil.isNotEmpty(beforTaskObj)) {
|
||||
throw new BadRequestException("存在指令号为'" + beforTaskObj.getString("task_code") + "' 未完成!");
|
||||
}
|
||||
|
||||
//根据起点去找工序,找一个合适的仓位 并且生成单据
|
||||
if (StrUtil.isEmpty(next_point_code)) {
|
||||
JSONObject workInfo = WQL.getWO("QSTRUCT_RULE").addParam("flag", "1").addParam("code", start_point_code)
|
||||
.process().uniqueResult(0);
|
||||
String workprocedure_code = workInfo.getString("workInfo");
|
||||
String workprocedure_id = workInfo.getString("workprocedure_id");
|
||||
WorkProcedureEnum workProcedureEnum = WorkProcedureEnum.get(workprocedure_id);
|
||||
switch (workProcedureEnum) {
|
||||
|
||||
|
||||
//分拣工序
|
||||
case FJGX:
|
||||
next_area = AreaEnum.DDKTTPQ.getCode();
|
||||
break;
|
||||
default:
|
||||
next_area = AreaEnum.DDKTTPQ.getCode();
|
||||
}
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("area_type", next_area);
|
||||
param.put("vehicle_code", vehicle_code);
|
||||
JSONObject inStructObj = StructFindUtil.getEmptyVehicleInStruct(param);
|
||||
next_point_code = inStructObj.getString("struct_code");
|
||||
}
|
||||
String bill_status = "10";
|
||||
|
||||
if (StrUtil.isNotEmpty(next_point_code)) {
|
||||
task_status = TaskStatusEnum.START_AND_POINT.getCode();
|
||||
PointDto nextPoint = pointService.findByCode(next_point_code);
|
||||
bill_status = "20";
|
||||
task_status = TaskStatusEnum.START_AND_POINT.getCode();
|
||||
//锁定终点
|
||||
HashMap lock_map = new HashMap();
|
||||
@@ -204,7 +139,7 @@ public class SendEmptyVehicleTask extends AbstractAcsTask {
|
||||
JSONObject EmptyVehicleObj = new JSONObject();
|
||||
EmptyVehicleObj.put("record_uuid", IdUtil.getSnowflake(1, 1).nextId());
|
||||
EmptyVehicleObj.put("bill_code", CodeUtil.getNewCode("KZJ_BILL_CODE"));
|
||||
EmptyVehicleObj.put("bill_status", bill_status);
|
||||
EmptyVehicleObj.put("bill_status", "20");
|
||||
EmptyVehicleObj.put("start_point_code", start_point_code);
|
||||
EmptyVehicleObj.put("next_point_code", next_point_code);
|
||||
EmptyVehicleObj.put("start_area", startPoint.getArea_type());
|
||||
|
||||
@@ -135,6 +135,7 @@ public class SendMaterialTask extends AbstractAcsTask {
|
||||
for (int i = 0; i < taskArry.size(); i++) {
|
||||
JSONObject taskObj = taskArry.getJSONObject(i);
|
||||
String task_id = taskObj.getString("task_id");
|
||||
String start_point_code = taskObj.getString("start_point_code");
|
||||
//1 将任务修改为分配 2将终点写入,完成分配,3 加锁点位
|
||||
//找一个合适的仓位
|
||||
WQLObject ProcedureIOStable = WQLObject.getWQLObject("ST_IVT_workProcedureIOS");
|
||||
@@ -164,6 +165,9 @@ public class SendMaterialTask extends AbstractAcsTask {
|
||||
taskObj.put("update_optname", SecurityUtils.getNickName());
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
//组盘
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -173,7 +177,6 @@ public class SendMaterialTask extends AbstractAcsTask {
|
||||
@Transactional
|
||||
public String createTask(JSONObject form) {
|
||||
//请求参数 载具、起点 物料,数量,客户,批次,创建方式 是否满托不能为空! 终点可以不为空时,入库单据编号不能为空
|
||||
String vehicle_code = form.getString("vehicle_code");
|
||||
String start_point_code = form.getString("start_point_code");
|
||||
String next_point_code = form.getString("next_point_code");
|
||||
String material_id = form.getString("material_id");
|
||||
@@ -188,9 +191,6 @@ public class SendMaterialTask extends AbstractAcsTask {
|
||||
if (StrUtil.isEmpty(start_point_code)) {
|
||||
throw new BadRequestException("起点不能为空!");
|
||||
}
|
||||
if (StrUtil.isEmpty(vehicle_code)) {
|
||||
throw new BadRequestException("载具不能为空!");
|
||||
}
|
||||
//判断起点有没有未完成的指令
|
||||
JSONObject beforTaskObj = taskTable.
|
||||
query("is_delete='0' and start_point_code='" + start_point_code + "' and task_status <>'" + TaskStatusEnum.FINISHED.getCode() + "'")
|
||||
@@ -214,6 +214,8 @@ public class SendMaterialTask extends AbstractAcsTask {
|
||||
JSONObject IosObj = iosTable.query("iostorinv_id='" + iostorinv_id + "'").uniqueResult(0);
|
||||
IosObj.put("bill_status", "20");
|
||||
iosTable.update(IosObj);
|
||||
//组盘
|
||||
|
||||
}
|
||||
//如果没给终点,根据起点去找工序,找一个合适的仓位 并且生成入库单,并且锁定点位
|
||||
if (StrUtil.isEmpty(next_point_code)) {
|
||||
@@ -238,7 +240,6 @@ public class SendMaterialTask extends AbstractAcsTask {
|
||||
WorkProcedureEnum workProcedureEnum = WorkProcedureEnum.get(workprocedure_id);
|
||||
|
||||
switch (workProcedureEnum) {
|
||||
|
||||
// 压制工序
|
||||
case YZGX:
|
||||
qty_unit_id = BussConstant.HN_IN_QTY_UNIT_ID;
|
||||
@@ -264,7 +265,6 @@ public class SendMaterialTask extends AbstractAcsTask {
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("material_id", material_id);
|
||||
param.put("area_type", endArea_type);
|
||||
param.put("vehicle_code", vehicle_code);
|
||||
JSONObject inStructObj = StructFindUtil.getInStruct(param);
|
||||
if (ObjectUtil.isEmpty(inStructObj)) {
|
||||
throw new BadRequestException("未找到合适的入库仓位!");
|
||||
@@ -274,7 +274,7 @@ public class SendMaterialTask extends AbstractAcsTask {
|
||||
//假如静置时间为0 或者为空,则取物料表上的静置时间
|
||||
if (StrUtil.isEmpty(stewing_time) || StrUtil.equals(stewing_time, "0")) {
|
||||
stewing_time = WQLObject.getWQLObject("md_me_material").query("material_id ='" + material_id + "'").
|
||||
uniqueResult(0).getString("stewing_time");
|
||||
uniqueResult(0).getString("stewing_time");
|
||||
}
|
||||
JSONObject iosObj = new JSONObject();
|
||||
iosObj.put("iostorinv_id", IdUtil.getSnowflake(1, 1).nextId());
|
||||
@@ -284,7 +284,6 @@ public class SendMaterialTask extends AbstractAcsTask {
|
||||
iosObj.put("workprocedure_id", workprocedure_id);
|
||||
iosObj.put("ivt_workprocedure_id", workprocedure_id);
|
||||
iosObj.put("material_id", material_id);
|
||||
iosObj.put("vehicle_code", vehicle_code);
|
||||
iosObj.put("producetask_id", producetask_id);
|
||||
iosObj.put("stewing_time", stewing_time);
|
||||
iosObj.put("qty", qty);
|
||||
@@ -304,6 +303,8 @@ public class SendMaterialTask extends AbstractAcsTask {
|
||||
iosObj.put("create_time", DateUtil.now());
|
||||
iosObj.put("is_full", is_full);
|
||||
WQLObject.getWQLObject("ST_IVT_workProcedureIOS").insert(iosObj);
|
||||
//组盘
|
||||
|
||||
}
|
||||
String task_status = TaskStatusEnum.START_AND_POINT.getCode();
|
||||
PointDto nextPoint = pointService.findByCode(next_point_code);
|
||||
@@ -311,7 +312,6 @@ public class SendMaterialTask extends AbstractAcsTask {
|
||||
HashMap lock_map = new HashMap();
|
||||
lock_map.put("lock_type", "01");
|
||||
WQLObject.getWQLObject("sch_base_point").update(lock_map, "point_code = '" + next_point_code + "'");
|
||||
CodeUtil.getNewCode("TASK_CODE");
|
||||
JSONObject taskObj = new JSONObject();
|
||||
taskObj.put("task_id", task_id);
|
||||
taskObj.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
|
||||
@@ -323,7 +323,6 @@ public class SendMaterialTask extends AbstractAcsTask {
|
||||
taskObj.put("request_param", form.toJSONString());
|
||||
taskObj.put("next_point_code", next_point_code);
|
||||
taskObj.put("next_area", nextPoint.getArea_type());
|
||||
taskObj.put("vehicle_code", vehicle_code);
|
||||
taskObj.put("handle_class", THIS_CLASS);
|
||||
taskObj.put("is_auto_issue", "1");
|
||||
taskObj.put("create_name", SecurityUtils.getCurrentUsername());
|
||||
@@ -331,6 +330,23 @@ public class SendMaterialTask extends AbstractAcsTask {
|
||||
taskObj.put("create_time", DateUtil.now());
|
||||
taskObj.put("is_delete", "0");
|
||||
taskTable.insert(taskObj);
|
||||
//组盘
|
||||
JSONObject jo = new JSONObject();
|
||||
String is_autopackage = "1";
|
||||
if (StrUtil.equals(start_point_code, "MDJXS601")) {
|
||||
is_autopackage = "0";
|
||||
}
|
||||
JSONObject materialObj = WQLObject.getWQLObject("md_me_material").query("material_id='" + material_id + "'").uniqueResult(0);
|
||||
String group_id = IdUtil.getSnowflake(1, 1).nextIdStr();
|
||||
jo.put("group_id", group_id);
|
||||
jo.put("material_id", material_id);
|
||||
jo.put("material_code", materialObj.getString("material_code"));
|
||||
jo.put("material_name", materialObj.getString("material_name"));
|
||||
jo.put("is_autopackage", is_autopackage);
|
||||
jo.put("pcsn", pcsn);
|
||||
jo.put("qty", qty);
|
||||
WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehiclegroup");
|
||||
groupTable.insert(jo);
|
||||
return task_id;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,259 @@
|
||||
package org.nl.wms.sch.manage.buss;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.exception.BadRequestException;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.utils.SecurityUtils;
|
||||
import org.nl.utils.SpringContextHolder;
|
||||
import org.nl.wms.BussConstant;
|
||||
import org.nl.wms.WorkProcedureEnum;
|
||||
import org.nl.wms.common.StructFindUtil;
|
||||
import org.nl.wms.sch.manage.AbstractAcsTask;
|
||||
import org.nl.wms.sch.manage.AreaEnum;
|
||||
import org.nl.wms.sch.manage.BillTypeEnum;
|
||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
import org.nl.wms.sch.service.PointService;
|
||||
import org.nl.wms.sch.service.dto.PointDto;
|
||||
import org.nl.wms.sch.service.impl.PointServiceImpl;
|
||||
import org.nl.wms.st.ivt.IvtChangeTypeEnum;
|
||||
import org.nl.wms.st.ivt.StoreIvtServiceImpl;
|
||||
import org.nl.wql.WQL;
|
||||
import org.nl.wql.core.bean.WQLObject;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class ToConveyorTask extends AbstractAcsTask {
|
||||
private final String THIS_CLASS = ToConveyorTask.class.getName();
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void updateTaskStatus(JSONObject taskObj, String status) {
|
||||
/**
|
||||
*改变任务状态
|
||||
**/
|
||||
String task_id = taskObj.getString("task_id");
|
||||
WQLObject taskTab = WQLObject.getWQLObject("sch_base_task");
|
||||
JSONObject jsonTask = taskTab.query("task_id='" + task_id + "'").uniqueResult(0);
|
||||
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
|
||||
//更新任务状态为执行中
|
||||
jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode());
|
||||
jsonTask.put("update_time", DateUtil.now());
|
||||
taskTab.update(jsonTask);
|
||||
HashMap map = new HashMap();
|
||||
map.put("update_optid", SecurityUtils.getCurrentUserId());
|
||||
map.put("update_optname", SecurityUtils.getNickName());
|
||||
map.put("update_time", DateUtil.now());
|
||||
map.put("bill_status", "40");
|
||||
WQLObject.getWQLObject("ST_IVT_workProcedureIOS").update(map, "task_id='" + jsonTask.getString("task_id") + "'");
|
||||
}
|
||||
|
||||
if (TaskStatusEnum.FINISHED.getCode().equals(status)) {
|
||||
// 更新任务状态为完成
|
||||
jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
jsonTask.put("taskfinish_mode", taskObj.getString("taskfinish_mode"));
|
||||
jsonTask.put("update_time", DateUtil.now());
|
||||
jsonTask.put("remark", "任务执行完成");
|
||||
///审核单据 增加库存 改变出入库表的状态
|
||||
WQLObject mstTab = WQLObject.getWQLObject("ST_IVT_workProcedureIOS");
|
||||
JSONObject mstObj = mstTab.query("task_id='" + task_id + "' and is_delete='0'").uniqueResult(0);
|
||||
//审核 加库存可和用数量
|
||||
StoreIvtServiceImpl ivtService = new StoreIvtServiceImpl();
|
||||
mstObj.put("bill_status", "50");
|
||||
mstObj.put("confirm_optid", SecurityUtils.getCurrentUserId());
|
||||
mstObj.put("confirm_optname", SecurityUtils.getNickName());
|
||||
mstObj.put("confirm_time", DateUtil.now());
|
||||
mstTab.update(mstObj);
|
||||
|
||||
String iostorinv_id = mstObj.getString("iostorinv_id");
|
||||
String next_point_code = mstObj.getString("end_point_code");
|
||||
String start_point_code = mstObj.getString("start_point_code");
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("material_id", mstObj.getString("material_id"));
|
||||
param.put("bill_id", iostorinv_id);
|
||||
param.put("qty_unit_id", mstObj.getString("qty_unit_id"));
|
||||
param.put("pcsn", mstObj.getString("pcsn"));
|
||||
param.put("change_qty", mstObj.getString("qty"));
|
||||
param.put("vehicle_code", mstObj.getString("vehicle_code"));
|
||||
param.put("workprocedure_id", mstObj.getString("workprocedure_id"));
|
||||
param.put("is_full", mstObj.getString("is_full"));
|
||||
param.put("stewing_time", mstObj.getString("stewing_time"));
|
||||
param.put("producetask_id", mstObj.getString("producetask_id"));
|
||||
|
||||
PointServiceImpl pointService = SpringContextHolder.getBean(PointServiceImpl.class);
|
||||
PointDto nextPointDto = pointService.findByCode(next_point_code);
|
||||
if (ObjectUtil.isNull(nextPointDto)) {
|
||||
throw new BadRequestException("未找到可用点位:" + next_point_code);
|
||||
}
|
||||
PointDto startPointDto = pointService.findByCode(start_point_code);
|
||||
if (ObjectUtil.isNull(startPointDto)) {
|
||||
throw new BadRequestException("未找到可用点位:" + start_point_code);
|
||||
}
|
||||
param.put("struct_id", nextPointDto.getPoint_id());
|
||||
ivtService.addIvtFlow(param, IvtChangeTypeEnum.ADD_IVT_AND_CAN_USE);
|
||||
//解锁仓位,托盘信息,回写到点位上去
|
||||
String vehicle_code = jsonTask.getString("vehicle_code");
|
||||
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
|
||||
JSONObject endpointObj = pointTab.query("point_code='" + jsonTask.getString("next_point_code") + "'").uniqueResult(0);
|
||||
endpointObj.put("lock_type", "00");
|
||||
endpointObj.put("point_status", "02");
|
||||
endpointObj.put("vehicle_code", vehicle_code);
|
||||
pointTab.update(endpointObj);
|
||||
|
||||
JSONObject startPointObj = pointTab.query("point_code='" + jsonTask.getString("start_point_code") + "'").uniqueResult(0);
|
||||
startPointObj.put("lock_type", "00");
|
||||
startPointObj.put("point_status", "00");
|
||||
startPointObj.put("vehicle_code", "");
|
||||
pointTab.update(startPointObj);
|
||||
taskTab.update(jsonTask);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void findStartPoint() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void findNextPoint() {
|
||||
String task_status = TaskStatusEnum.SURE_START.getCode();
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
JSONArray taskArry = taskTab.query("task_status='" + task_status + "' AND handle_class='" + THIS_CLASS + "' AND is_delete='0' ").getResultJSONArray(0);
|
||||
for (int i = 0; i < taskArry.size(); i++) {
|
||||
JSONObject taskObj = taskArry.getJSONObject(i);
|
||||
String task_id = taskObj.getString("task_id");
|
||||
//1 将任务修改为分配 2将终点写入,完成分配,3 加锁点位
|
||||
//找一个合适的仓位
|
||||
WQLObject ProcedureIOStable = WQLObject.getWQLObject("ST_IVT_workProcedureIOS");
|
||||
JSONObject IosObj = ProcedureIOStable.query("task_id='" + task_id + "' and is_delete ='0'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(IosObj)) {
|
||||
throw new BadRequestException("未找到任务号为'" + taskObj.getString("task_code") + "'的入库单据!");
|
||||
}
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("material_id", IosObj.getString("material_id"));
|
||||
param.put("area_type", IosObj.getString("end_area"));
|
||||
param.put("vehicle_code", IosObj.getString("vehicle_code"));
|
||||
JSONObject inStructObj = StructFindUtil.getInStruct(param);
|
||||
if (ObjectUtil.isEmpty(inStructObj)) {
|
||||
throw new BadRequestException("未找到合适的入库仓位!");
|
||||
}
|
||||
//修改单据状态,将终点填入
|
||||
IosObj.put("bill_status", "20");
|
||||
IosObj.put("end_point_code", inStructObj.getString("struct_code"));
|
||||
ProcedureIOStable.update(IosObj);
|
||||
//终点加锁
|
||||
HashMap lock_map = new HashMap();
|
||||
lock_map.put("lock_type", "01");
|
||||
WQLObject.getWQLObject("sch_base_point").update(lock_map, "point_code = '" + inStructObj.getString("struct_code") + "'");
|
||||
//修改任务状态
|
||||
taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
|
||||
taskObj.put("update_optid", SecurityUtils.getCurrentUserId());
|
||||
taskObj.put("update_optname", SecurityUtils.getNickName());
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public String createTask(JSONObject form) {
|
||||
//请求参数 载具、起点 物料,数量,客户,批次,创建方式 是否满托不能为空! 终点可以不为空时,入库单据编号不能为空
|
||||
String vehicle_code = form.getString("vehicle_code");
|
||||
String start_point_code = form.getString("start_point_code");
|
||||
String next_point_code = form.getString("next_point_code");
|
||||
String material_id = form.getString("material_id");
|
||||
String is_full = form.getString("is_full");
|
||||
String qty = form.getString("qty");
|
||||
String pcsn = form.getString("pcsn");
|
||||
WQLObject taskTable = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
if (StrUtil.isEmpty(start_point_code)) {
|
||||
throw new BadRequestException("起点不能为空!");
|
||||
}
|
||||
if (StrUtil.isEmpty(next_point_code)){
|
||||
throw new BadRequestException("终点不能为空!");
|
||||
}
|
||||
String is_autopackage = "1";
|
||||
if (StrUtil.equals(start_point_code, "MDJXS601")) {
|
||||
is_autopackage = "0";
|
||||
}
|
||||
String task_id = IdUtil.getSnowflake(1, 1).nextId() + "";
|
||||
JSONObject materialObj = WQLObject.getWQLObject("md_me_material").query("material_id='" + material_id + "'").uniqueResult(0);
|
||||
//组盘
|
||||
JSONObject jo = new JSONObject();
|
||||
String group_id = IdUtil.getSnowflake(1, 1).nextIdStr();
|
||||
jo.put("group_id", group_id);
|
||||
jo.put("material_id", material_id);
|
||||
jo.put("material_code", materialObj.getString("material_code"));
|
||||
jo.put("material_name", materialObj.getString("material_name"));
|
||||
jo.put("vehicle_code", vehicle_code);
|
||||
jo.put("is_autopackage", is_autopackage);
|
||||
jo.put("pcsn", pcsn);
|
||||
jo.put("qty", qty);
|
||||
jo.put("create_id",SecurityUtils.getCurrentUserId());
|
||||
jo.put("create_name",SecurityUtils.getNickName());
|
||||
jo.put("create_time",DateUtil.now());
|
||||
jo.put("task_id",task_id);
|
||||
WQLObject groupTable = WQLObject.getWQLObject("st_buss_vehiclegroup");
|
||||
groupTable.insert(jo);
|
||||
|
||||
PointService pointService = SpringContextHolder.getBean(PointService.class);
|
||||
PointDto startPoint = pointService.findByCode(start_point_code);
|
||||
|
||||
String task_status = TaskStatusEnum.START_AND_POINT.getCode();
|
||||
PointDto nextPoint = pointService.findByCode(next_point_code);
|
||||
JSONObject taskObj = new JSONObject();
|
||||
taskObj.put("task_id", task_id);
|
||||
taskObj.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
|
||||
taskObj.put("task_type", "00");
|
||||
taskObj.put("acs_task_type", "1");
|
||||
taskObj.put("task_status", task_status);
|
||||
taskObj.put("start_point_code", start_point_code);
|
||||
taskObj.put("start_area", startPoint.getArea_type());
|
||||
taskObj.put("request_param", form.toJSONString());
|
||||
taskObj.put("next_point_code", next_point_code);
|
||||
taskObj.put("next_area", nextPoint.getArea_type());
|
||||
taskObj.put("vehicle_code", vehicle_code);
|
||||
taskObj.put("handle_class", THIS_CLASS);
|
||||
taskObj.put("is_auto_issue", "1");
|
||||
taskObj.put("create_name", SecurityUtils.getCurrentUsername());
|
||||
taskObj.put("create_id", SecurityUtils.getCurrentUserId());
|
||||
taskObj.put("create_time", DateUtil.now());
|
||||
taskObj.put("is_delete", "0");
|
||||
taskTable.insert(taskObj);
|
||||
return task_id;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
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 pullBack(String task_id) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(String task_id) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Binary file not shown.
@@ -175,14 +175,6 @@
|
||||
<el-form-item label="静置时间" prop="stewing_time">
|
||||
<el-input v-model="form.stewing_time" :rows="3" style="width: 200px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="型号" prop="model">
|
||||
<label slot="label">型 号</label>
|
||||
<el-input v-model="form.model" :rows="3" style="width: 200px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="熔池" prop="molten_pool">
|
||||
<label slot="label">熔 池</label>
|
||||
<el-input v-model="form.molten_pool" :rows="3" style="width: 200px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="计划生产数量" prop="plan_qty">
|
||||
<el-input v-model="form.plan_qty" style="width: 200px;" />
|
||||
</el-form-item>
|
||||
@@ -217,10 +209,6 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否优先包装">
|
||||
<el-radio v-model="form.is_package" label="0">否</el-radio>
|
||||
<el-radio v-model="form.is_package" label="1">是</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注">
|
||||
<label slot="label">备 注</label>
|
||||
<el-input v-model="form.remark" type="textarea" style="width: 530px;" />
|
||||
|
||||
Reference in New Issue
Block a user