Browse Source

混碾、压制工序代码更新,表格数据改动

master
李永德 2 years ago
parent
commit
302b4b4473
  1. 23
      lms/nladmin-system/src/main/java/org/nl/config/ConfigParam.java
  2. 5
      lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/dto/MaterialbaseDto.java
  3. 14
      lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java
  4. 8
      lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java
  5. 64
      lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java
  6. 9
      lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/dto/WorkorderDto.java
  7. 9
      lms/nladmin-system/src/main/java/org/nl/wms/sch/SchTaskDto.java
  8. 5
      lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/WorkOrderEnum.java
  9. 9
      lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/PointDto.java
  10. 1
      lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/PointServiceImpl.java
  11. 58
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PointUpdateUtil.java
  12. 35
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/HnCallEmptyVehicleTask.java
  13. 64
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/YzjCallEmptyVehicleTask.java
  14. 7
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/wql/QSCH_hnCallEmptyVehicle_01.wql
  15. 4
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/wql/QSCH_yzjCallEmptyVehicle_01.wql
  16. 2
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/FjCallMaterialTask.java
  17. 30
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/SzCallMaterialTask.java
  18. 131
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/YzjCallMaterialTask.java
  19. 4
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/wql/QSCH_szCallMaterial_01.wql
  20. 5
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/wql/QSCH_yzjCallMaterial_01.wql
  21. 56
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/YzjSendEmpVehicleTask.java
  22. 2
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/wql/QSCH_yzjSendEmptyVehicle_01.wql
  23. 4
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/FjSendMaterialTask.java
  24. 55
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/HnSendMaterialTask.java
  25. 4
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/SendMaterialTask.java
  26. 4
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/SzSendMaterialTask.java
  27. 47
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/YzjSendMaterialTask.java
  28. 58
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/wql/QSCH_hnSendMaterial_01.wql
  29. BIN
      lms/nladmin-system/src/main/java/org/nl/wms/wms.xls
  30. 4
      lms/nladmin-ui/src/views/login.vue

23
lms/nladmin-system/src/main/java/org/nl/config/ConfigParam.java

@ -1,23 +0,0 @@
package org.nl.config;
import org.springframework.context.annotation.Configuration;
import javax.annotation.PostConstruct;
import java.util.HashMap;
import java.util.Map;
/*
* @author ZZQ
* @Date 2022/11/16 4:32 下午
*/
@Configuration
public class ConfigParam {
//旧料盅叫料跟空盅入库都从公共点位回去
public static Map<String,String> YZJ_OLD_POINT = new HashMap<>();
@PostConstruct
public void initData(){
//数据库更新该配置数据YZJ_OLD_POINT
}
}

5
lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/dto/MaterialbaseDto.java

@ -97,6 +97,11 @@ public class MaterialbaseDto implements Serializable {
private String material_height_type; private String material_height_type;
private String AlongSide; // A长边
private String BshortSide; // B短边
private String Htrapezoidal; // H梯形高
private String Wthickness; // W厚度
private Long ass_unit_id; private Long ass_unit_id;
private Long product_series; private Long product_series;

14
lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java

@ -56,7 +56,7 @@ public class AcsToWmsController {
@PostMapping("/manipulatorApply") @PostMapping("/manipulatorApply")
@Log("ACS机械手给WMS发送任务") @Log("ACS机械手给WMS发送任务")
@ApiOperation("ACS机械手给WMS发送任务") @ApiOperation("ACS机械手给WMS发送任务")
public ResponseEntity<Object> manipulatorApply(@RequestBody Map whereJson) { public ResponseEntity<Object> manipulatorApply(@RequestBody JSONObject whereJson) {
acsToWmsService.manipulatorApply(whereJson); acsToWmsService.manipulatorApply(whereJson);
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
result.put("status", HttpStatus.OK.value()); result.put("status", HttpStatus.OK.value());
@ -64,6 +64,18 @@ public class AcsToWmsController {
return new ResponseEntity<>(result, HttpStatus.OK); return new ResponseEntity<>(result, HttpStatus.OK);
} }
@PostMapping("/reverseGroup")
@Log("入窑口反向组盘")
@ApiOperation("入窑口反向组盘")
public ResponseEntity<Object> reverseGroup(@RequestBody JSONObject whereJson) {
acsToWmsService.reverseGroup(whereJson);
JSONObject result = new JSONObject();
result.put("status", HttpStatus.OK.value());
result.put("message", "发送任务成功");
return new ResponseEntity<>(result, HttpStatus.OK);
}
@PostMapping("/ispackage") @PostMapping("/ispackage")
@Log("ACS给WMS请求是否优先包装") @Log("ACS给WMS请求是否优先包装")
@ApiOperation("ACS给WMS请求是否优先包装") @ApiOperation("ACS给WMS请求是否优先包装")

8
lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java

@ -56,7 +56,7 @@ public interface AcsToWmsService {
* 组盘 * 组盘
* @param whereJson * @param whereJson
*/ */
void manipulatorApply(Map whereJson); void manipulatorApply(JSONObject whereJson);
/** /**
* ACS给WMS请求是否优先包装 * ACS给WMS请求是否优先包装
@ -86,4 +86,10 @@ public interface AcsToWmsService {
* @return Map<String, Object> * @return Map<String, Object>
*/ */
Map<String, Object> getDeviceCodeByVehicleType(Map jsonObject); Map<String, Object> getDeviceCodeByVehicleType(Map jsonObject);
/**
* 入窑口反向组盘
* @param whereJson
*/
void reverseGroup(JSONObject whereJson);
} }

64
lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java

@ -199,8 +199,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
* 根据type判断是什么业务类型 * 根据type判断是什么业务类型
* 1.混碾机送料入库-困料货架 * 1.混碾机送料入库-困料货架
* 2.混碾机呼叫空托盘 * 2.混碾机呼叫空托盘
* 3.压制机料位叫料出库 * 3.压制机料位叫料出库
* 4.压制机下料位送空托盘 * 4.压制机上料位送空盅
* 5.压制机满料入库 * 5.压制机满料入库
* 6.压制机呼叫空钢托盘 * 6.压制机呼叫空钢托盘
* 7.烧制叫料出库 * 7.烧制叫料出库
@ -214,13 +214,11 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
switch (type) { switch (type) {
case "1": case "1":
// 1.混碾机送料入库:混碾机物料送到困料货架 // 1.混碾机送料入库:混碾机物料送到困料货架
if (ObjectUtil.isEmpty(point_code)) throw new BadRequestException("设备号不能为空");
// 创建任务 // 创建任务
param.put("point_code1", point_code); // 起点 param.put("point_code1", point_code); // 起点
SpringContextHolder.getBean(HnSendMaterialTask.class).createTask(param); SpringContextHolder.getBean(HnSendMaterialTask.class).createTask(param);
break; break;
case "2": case "2":
if (ObjectUtil.isEmpty(point_code)) throw new BadRequestException("设备号不能为空");
param.put("point_code2", point_code); // 终点 param.put("point_code2", point_code); // 终点
// 创建任务 // 创建任务
SpringContextHolder.getBean(HnCallEmptyVehicleTask.class).createTask(param); SpringContextHolder.getBean(HnCallEmptyVehicleTask.class).createTask(param);
@ -232,7 +230,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
SpringContextHolder.getBean(YzjCallMaterialTask.class).createTask(param); SpringContextHolder.getBean(YzjCallMaterialTask.class).createTask(param);
break; break;
case "4": case "4":
// 压制机送空托盘 // 压制机送空
param.put("point_code1", point_code); // 起点 param.put("point_code1", point_code); // 起点
// 创建任务 // 创建任务
SpringContextHolder.getBean(YzjSendEmpVehicleTask.class).createTask(param); SpringContextHolder.getBean(YzjSendEmpVehicleTask.class).createTask(param);
@ -240,6 +238,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
case "5": case "5":
// 压制机满料入库 // 压制机满料入库
param.put("point_code1", point_code); // 起点 param.put("point_code1", point_code); // 起点
param.put("group_id", whereJson.getString("group_id")); // 组盘标识
// 创建任务 // 创建任务
SpringContextHolder.getBean(YzjSendMaterialTask.class).createTask(param); SpringContextHolder.getBean(YzjSendMaterialTask.class).createTask(param);
break; break;
@ -295,28 +294,30 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
* @param jsonObject * @param jsonObject
*/ */
@Override @Override
public void manipulatorApply(Map jsonObject) { public void manipulatorApply(JSONObject jsonObject) {
//组盘 //组盘
JSONObject produceInfoByCode = new JSONObject(); JSONObject produceInfoByCode = new JSONObject();
String device_code = (String) jsonObject.get("device_code"); String device_code = (String) jsonObject.get("device_code"); // 对接位
// vehicle_code:不一定有,分拣码垛会提供木托盘载具号、压制码垛是不提供载具号
String vehicle_code = (String) jsonObject.get("vehicle_code"); String vehicle_code = (String) jsonObject.get("vehicle_code");
String qty = String.valueOf(jsonObject.get("qty")); String qty = String.valueOf(jsonObject.get("qty"));
produceInfoByCode = this.getProduceInfoByCode(device_code); produceInfoByCode = this.getProduceInfoByCode(device_code); // 获取设备的
String material_id = (String) produceInfoByCode.get("material_id"); String material_id = (String) produceInfoByCode.get("material_id");
String cust_id = (String) produceInfoByCode.get("cust_id"); String cust_id = (String) produceInfoByCode.get("cust_id");
String producetask_id = (String) produceInfoByCode.get("producetask_id"); String producetask_id = (String) produceInfoByCode.get("producetask_id");
WQLObject.getWQLObject("st_buss_vehiclegroup").delete("vehicle_code ='" + vehicle_code + "'"); WQLObject.getWQLObject("st_buss_vehiclegroup").delete("vehicle_code ='" + vehicle_code + "'");
// 如果上报不了,则去点位上取(木托盘情况) // // 如果上报不了,则去点位上取(木托盘情况)
if (StrUtil.equals("0", vehicle_code)) { // if (StrUtil.equals("0", vehicle_code)) {
vehicle_code = produceInfoByCode.getString("vehicle_code"); // vehicle_code = produceInfoByCode.getString("vehicle_code");
} // }
JSONObject materialObj = WQLObject JSONObject materialObj = WQLObject
.getWQLObject("MD_ME_Material") .getWQLObject("MD_ME_MaterialBase")
.query("material_id='" + material_id + "'") .query("material_id='" + material_id + "'")
.uniqueResult(0); .uniqueResult(0);
JSONObject groubObj = new JSONObject(); JSONObject groubObj = new JSONObject();
groubObj.put("group_id", IdUtil.getSnowflake(1, 1).nextId()); long nextId = IdUtil.getSnowflake(1, 1).nextId();
groubObj.put("group_id", nextId);
groubObj.put("vehicle_code", vehicle_code); groubObj.put("vehicle_code", vehicle_code);
groubObj.put("material_uuid", material_id); groubObj.put("material_uuid", material_id);
groubObj.put("material_code", materialObj.getString("material_code")); groubObj.put("material_code", materialObj.getString("material_code"));
@ -324,10 +325,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
groubObj.put("cust_id", cust_id); groubObj.put("cust_id", cust_id);
groubObj.put("qty", qty); groubObj.put("qty", qty);
groubObj.put("producetask_id", producetask_id); groubObj.put("producetask_id", producetask_id);
groubObj.put("AlongSide", jsonObject.get("AlongSide")); // groubObj.put("AlongSide", jsonObject.get("AlongSide"));
groubObj.put("BshortSide", jsonObject.get("BshortSide")); // groubObj.put("BshortSide", jsonObject.get("BshortSide"));
groubObj.put("Htrapezoidal", jsonObject.get("Htrapezoidal")); // groubObj.put("Htrapezoidal", jsonObject.get("Htrapezoidal"));
groubObj.put("Wthickness", jsonObject.get("Wthickness")); // groubObj.put("Wthickness", jsonObject.get("Wthickness"));
groubObj.put("tray_qty", jsonObject.get("tray_qty")); groubObj.put("tray_qty", jsonObject.get("tray_qty"));
groubObj.put("crib_category", jsonObject.get("crib_category")); groubObj.put("crib_category", jsonObject.get("crib_category"));
groubObj.put("tray_high", jsonObject.get("tray_high")); groubObj.put("tray_high", jsonObject.get("tray_high"));
@ -386,13 +387,14 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
groubObj.put("create_name", SecurityUtils.getCurrentNickName()); groubObj.put("create_name", SecurityUtils.getCurrentNickName());
groubObj.put("create_time", DateUtil.now()); groubObj.put("create_time", DateUtil.now());
WQLObject.getWQLObject("st_buss_vehiclegroup").insert(groubObj); WQLObject.getWQLObject("st_buss_vehiclegroup").insert(groubObj);
jsonObject.put("group_id", nextId); // 组盘标识
// 判断是分拣还是压制的送料入库 // 判断是分拣还是压制的送料入库
if (device_code.startsWith("FJCD")) { if (device_code.startsWith("FJCD")) {
jsonObject.put("type", "11"); jsonObject.put("type", "11");
} else { } else {
jsonObject.put("type", "5"); jsonObject.put("type", "5");
} }
this.apply((JSONObject) jsonObject); this.apply(jsonObject);
} }
/** /**
@ -558,14 +560,32 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
return returnjo; return returnjo;
} }
private JSONObject getProduceInfoByCode(String code) { /**
* 入窑口反向组盘
*
* @param whereJson
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void reverseGroup(JSONObject whereJson) {
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
WQLObject groupTab = WQLObject.getWQLObject("st_buss_vehiclegroup");
String vehicle_code = whereJson.getString("vehicle_code");
JSONObject rywPoint = pointTab.query("point_code = 'RYW'").uniqueResult(0);
String group_id = rywPoint.getString("group_id");
JSONObject group = groupTab.query("group_id = '" + group_id + "'").uniqueResult(0);
group.put("vehicle_code", vehicle_code);
groupTab.update(group);
}
private JSONObject getProduceInfoByCode(String code) { // 查找工单
//根据 设备点位去找生产任务信息 //根据 设备点位去找生产任务信息
//1 根据点位去找设备,去找对应的设备信息 //1 根据点位去找设备,去找对应的设备信息
JSONObject pointObj = WQLObject.getWQLObject("sch_base_point").query("point_code ='" + code + "'").uniqueResult(0); JSONObject pointObj = WQLObject.getWQLObject("sch_base_point").query("point_code ='" + code + "'").uniqueResult(0);
String device_code = pointObj.getString("device_code"); String device_code = pointObj.getString("device_code");
//2 根据设备去找对应的生产任务 1-未生产、2-已下发、3-生产中、4-暂停、5-完成 //2 根据设备去找对应的生产任务 1-未生产、2-已下发、3-生产中、4-暂停、5-完成
JSONObject productTaskObj = WQLObject.getWQLObject("PDM_BD_WorkOrder") JSONObject productTaskObj = WQLObject.getWQLObject("PDM_BD_WorkOrder")
.query("device_code ='" + device_code + "' and producetask_status in ('3','2','4')", "seq_no") .query("device_code ='" + device_code + "' and order_status in ('3','2','4')", "workorder_procedure")
.uniqueResult(0); .uniqueResult(0);
if (ObjectUtil.isEmpty(productTaskObj)) { if (ObjectUtil.isEmpty(productTaskObj)) {
throw new BadRequestException("未找到点位为'" + code + "'的生产任务!"); throw new BadRequestException("未找到点位为'" + code + "'的生产任务!");

9
lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/dto/WorkorderDto.java

@ -55,6 +55,9 @@ public class WorkorderDto implements Serializable {
/** 工单状态 */ /** 工单状态 */
private String order_status; private String order_status;
/** 新旧物料 */
private String is_new;
/** 是否搬运 */ /** 是否搬运 */
private String is_needmove; private String is_needmove;
@ -90,4 +93,10 @@ public class WorkorderDto implements Serializable {
/** 修改时间 */ /** 修改时间 */
private String update_time; private String update_time;
/** 静置时间 */
private String standing_time;
/** 阈值时间 */
private String warn_time;
} }

9
lms/nladmin-system/src/main/java/org/nl/wms/sch/SchTaskDto.java

@ -63,9 +63,14 @@ public class SchTaskDto implements Serializable {
private String point_code4; private String point_code4;
/** /**
* 物料详细信息,满料请求工单标识组盘时候取组盘表 * 物料详细信息,满料请求工单标识
*/ */
private Long material_info_id; private Long workorder_id;
/**
* 组盘标识
*/
private Long group_id;
/** /**
* 物料标识 * 物料标识

5
lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/WorkOrderEnum.java

@ -11,7 +11,10 @@ public enum WorkOrderEnum {
ORDER_STATUS_DELIVERED("2", "已下发"), ORDER_STATUS_DELIVERED("2", "已下发"),
ORDER_STATUS_PRODUCING("3", "生产中"), ORDER_STATUS_PRODUCING("3", "生产中"),
ORDER_STATUS_STOP("4", "停止"), ORDER_STATUS_STOP("4", "停止"),
ORDER_STATUS_FINISH("5", "完成") ORDER_STATUS_FINISH("5", "完成"),
IS_NEW_MATERIAL("1", "新物料"),
IS_OLD_MATERIAL("2", "旧物料")
; ;
private final String code; private final String code;
private final String name; private final String name;

9
lms/nladmin-system/src/main/java/org/nl/wms/sch/service/dto/PointDto.java

@ -142,6 +142,12 @@ public class PointDto implements Serializable {
/** 计量单位标识 */ /** 计量单位标识 */
private Long qty_unit_id; private Long qty_unit_id;
/** 库存数 */
private BigDecimal ivt_weight;
/** 计量单位标识 */
private Long weight_unit_id;
/** 入库时间 */ /** 入库时间 */
private String instorage_time; private String instorage_time;
@ -150,4 +156,7 @@ public class PointDto implements Serializable {
/** 是否关联库存表 */ /** 是否关联库存表 */
private String is_ref_ivt; private String is_ref_ivt;
/** 组盘标识 */
private Long group_id;
} }

1
lms/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/PointServiceImpl.java

@ -172,6 +172,7 @@ public class PointServiceImpl implements PointService {
dto.setVehicle_code(""); dto.setVehicle_code("");
dto.setVehicle_qty(""); dto.setVehicle_qty("");
dto.setPcsn(""); dto.setPcsn("");
dto.setTask_id(null);
dto.setIvt_qty(BigDecimal.valueOf(0)); dto.setIvt_qty(BigDecimal.valueOf(0));
dto.setInstorage_time(null); dto.setInstorage_time(null);
dto.setStanding_time(BigDecimal.valueOf(0)); dto.setStanding_time(BigDecimal.valueOf(0));

58
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PointUpdateUtil.java

@ -0,0 +1,58 @@
package org.nl.wms.sch.tasks;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.sch.manage.PointEnum;
/**
* @author: lyd
* @description: 点位更新工具类
* @Date: 2022/11/23
*/
public class PointUpdateUtil {
/**
* 清理点位
*/
public static void clearPoint(String point_code) {
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
JSONObject pointObj = pointTab.query("point_code = '" + point_code + "'").uniqueResult(0);
pointObj.put("point_status", PointEnum.POINT_STATUS_EMPTY_POSITION.getCode());
pointObj.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode());
pointObj.put("vehicle_type", null);
pointObj.put("vehicle_code", null);
pointObj.put("vehicle_qty", "0");
pointObj.put("material_id", null);
pointObj.put("pcsn", null);
pointObj.put("ivt_qty", "0");
pointObj.put("qty_unit_id", null);
pointObj.put("ivt_weight", "0");
pointObj.put("weight_unit_id", null);
pointObj.put("instorage_time", null);
pointObj.put("is_full", "0");
pointObj.put("standing_time", "0");
pointObj.put("warn_time", "0");
pointObj.put("group_id", null);
pointTab.update(pointObj);
}
/**
* 点位空载具
*/
public static void setVehicle(JSONObject jsonObject) {
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
JSONObject pointObj = pointTab.query("point_code = '" + jsonObject.getString("point_code") + "'").uniqueResult(0);
pointObj.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode());
pointObj.put("point_status", PointEnum.POINT_STATUS_EMPTY_VEHICLE.getCode());
pointObj.put("vehicle_code", jsonObject.getString("vehicle_code"));
pointObj.put("vehicle_qty", "1");
pointObj.put("instorage_time", DateUtil.now());
pointObj.put("is_full", "1");
pointObj.put("ivt_qty", "0");
pointObj.put("pcsn", null);
pointObj.put("material_id", null);
pointObj.put("standing_time", "0");
pointTab.update(pointObj);
}
}

35
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/HnCallEmptyVehicleTask.java

@ -16,8 +16,11 @@ import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.sch.SchTaskDto; import org.nl.wms.sch.SchTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.PointEnum;
import org.nl.wms.sch.manage.TaskStatusEnum; import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.sch.manage.UpdateTaskStatusEnum;
import org.nl.wms.sch.tasks.AcsTaskDto; import org.nl.wms.sch.tasks.AcsTaskDto;
import org.nl.wms.sch.tasks.PointUpdateUtil;
import org.nl.wms.sch.tasks.RegionTypeEnum; import org.nl.wms.sch.tasks.RegionTypeEnum;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -83,7 +86,7 @@ public class HnCallEmptyVehicleTask extends AbstractAcsTask {
String task_id = task.getString("task_id"); String task_id = task.getString("task_id");
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); JSONObject taskObj = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
if (StrUtil.equals(status, "0")) { if (StrUtil.equals(status, UpdateTaskStatusEnum.CANCEL.getCode())) {
/* /*
* 取消任务 * 取消任务
*/ */
@ -92,9 +95,9 @@ public class HnCallEmptyVehicleTask extends AbstractAcsTask {
} }
String point_code1 = task.getString("point_code1"); String point_code1 = task.getString("point_code1");
if (ObjectUtil.isEmpty(point_code1)) { if (ObjectUtil.isNotEmpty(point_code1)) {
JSONObject endPoint = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0); JSONObject endPoint = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0);
endPoint.put("lock_type", "1"); endPoint.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode());
pointTab.update(endPoint); pointTab.update(endPoint);
} }
taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode()); taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
@ -103,7 +106,7 @@ public class HnCallEmptyVehicleTask extends AbstractAcsTask {
taskTab.update(taskObj); taskTab.update(taskObj);
} }
if ("1".equals(status)) { if (UpdateTaskStatusEnum.EXECUTION.getCode().equals(status)) {
// 更新任务状态为执行中 // 更新任务状态为执行中
taskObj.put("task_status", TaskStatusEnum.EXECUTING.getCode()); taskObj.put("task_status", TaskStatusEnum.EXECUTING.getCode());
taskObj.put("update_time", DateUtil.now()); taskObj.put("update_time", DateUtil.now());
@ -111,7 +114,7 @@ public class HnCallEmptyVehicleTask extends AbstractAcsTask {
taskTab.update(taskObj); taskTab.update(taskObj);
} }
if (StrUtil.equals(status, "2")) { if (StrUtil.equals(status, UpdateTaskStatusEnum.FORCEFINISH.getCode())) {
/* /*
* 更改任务状态为完成 * 更改任务状态为完成
*/ */
@ -122,13 +125,11 @@ public class HnCallEmptyVehicleTask extends AbstractAcsTask {
taskTab.update(taskObj); taskTab.update(taskObj);
/** /**
* 点位更新起点空位解锁 * 点位更新起点空位
*/ */
String point_code1 = taskObj.getString("point_code1"); String point_code1 = taskObj.getString("point_code1");
JSONObject startPoint = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0); if (ObjectUtil.isEmpty(point_code1)) return;
startPoint.put("point_status", "1"); PointUpdateUtil.clearPoint(point_code1);
startPoint.put("lock_type", "1");
pointTab.update(startPoint);
} }
} }
@ -165,8 +166,9 @@ public class HnCallEmptyVehicleTask extends AbstractAcsTask {
.task_status(TaskStatusEnum.SURE_END.getCode()) .task_status(TaskStatusEnum.SURE_END.getCode())
.point_code2(point_code2) .point_code2(point_code2)
.acs_task_type("2") .acs_task_type("2")
.workorder_id(workOrderObj.getLong("workorder_id"))
.vehicle_code(form.getString("vehicle_code")) .vehicle_code(form.getString("vehicle_code"))
.vehicle_type(workOrderObj.getString("vehicle_type"))//载具类型统一用载具表维护 .vehicle_type(workOrderObj.getString("is_new"))//载具类型统一用载具表维护
.vehicle_qty(form.getIntValue("qty")) .vehicle_qty(form.getIntValue("qty"))
.task_group_id(org.nl.wms.util.IdUtil.getLongId()) .task_group_id(org.nl.wms.util.IdUtil.getLongId())
.handle_class(THIS_CLASS) .handle_class(THIS_CLASS)
@ -197,9 +199,8 @@ public class HnCallEmptyVehicleTask extends AbstractAcsTask {
// 创建任务 // 创建任务
JSONObject taskObj = taskArr.getJSONObject(i); JSONObject taskObj = taskArr.getJSONObject(i);
// 获取工单 // 获取工单
String point_code2 = taskObj.getString("point_code2"); String workorder_id = taskObj.getString("workorder_id");
String device_code = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0).getString("device_code"); JSONObject workOrderObj = workOrderTab.query("workorder_id = '" + workorder_id + "'").uniqueResult(0);
JSONObject workOrderObj = workOrderTab.query("device_code = '" + device_code + "' and order_status = '3' and is_delete ='0'").uniqueResult(0);
JSONObject param1 = new JSONObject(); JSONObject param1 = new JSONObject();
param1.put("flag", "1"); param1.put("flag", "1");
@ -219,7 +220,7 @@ public class HnCallEmptyVehicleTask extends AbstractAcsTask {
//锁住起点 //锁住起点
startPoint.put("task_id", taskObj.getString("task_id")); startPoint.put("task_id", taskObj.getString("task_id"));
startPoint.put("lock_type", "2"); startPoint.put("lock_type", PointEnum.LOCK_TYPE_TRUE.getCode());
pointTab.update(startPoint); pointTab.update(startPoint);
} }
} }
@ -240,7 +241,7 @@ public class HnCallEmptyVehicleTask extends AbstractAcsTask {
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0); JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0);
if (ObjectUtil.isNotEmpty(taskObj)) if (ObjectUtil.isNotEmpty(taskObj))
this.updateTaskStatus(taskObj,"2"); this.updateTaskStatus(taskObj,UpdateTaskStatusEnum.FORCEFINISH.getCode());
else { else {
throw new BadRequestException("未找到该任务或者任务已完成!"); throw new BadRequestException("未找到该任务或者任务已完成!");
} }
@ -256,7 +257,7 @@ public class HnCallEmptyVehicleTask extends AbstractAcsTask {
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0); JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0);
if (ObjectUtil.isNotEmpty(taskObj)) if (ObjectUtil.isNotEmpty(taskObj))
this.updateTaskStatus(taskObj,"0"); this.updateTaskStatus(taskObj,UpdateTaskStatusEnum.CANCEL.getCode());
else { else {
throw new BadRequestException("未找到该任务或者任务已完成!"); throw new BadRequestException("未找到该任务或者任务已完成!");
} }

64
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/YzjCallEmptyVehicleTask.java

@ -14,9 +14,9 @@ import org.nl.modules.system.util.CodeUtil;
import org.nl.modules.wql.WQL; import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.sch.SchTaskDto; import org.nl.wms.sch.SchTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.*;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.sch.tasks.AcsTaskDto; import org.nl.wms.sch.tasks.AcsTaskDto;
import org.nl.wms.sch.tasks.PointUpdateUtil;
import org.nl.wms.util.IdUtil; import org.nl.wms.util.IdUtil;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -86,26 +86,25 @@ public class YzjCallEmptyVehicleTask extends AbstractAcsTask {
String point_code1 = task.getString("point_code1"); String point_code1 = task.getString("point_code1");
if (StrUtil.equals(status, "0")) { if (StrUtil.equals(status, UpdateTaskStatusEnum.CANCEL.getCode())) {
/* /*
* 取消任务 * 取消任务
*/ */
if (StrUtil.equals(taskObj.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) { if (StrUtil.equals(taskObj.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) {
throw new BadRequestException("已完成不能取消!"); throw new BadRequestException("已完成不能取消!");
} }
if (ObjectUtil.isNotEmpty(point_code1)) { taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode()); taskObj.put("update_time", DateUtil.now());
taskObj.put("update_time", DateUtil.now()); taskObj.put("remark", "已取消");
taskObj.put("remark", "已取消"); taskTab.update(taskObj);
taskTab.update(taskObj); if (ObjectUtil.isNotEmpty(point_code1) && !point_code1.equals("KGTDDW05")) {
JSONObject startPoint = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0); JSONObject startPoint = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0);
startPoint.put("lock_type", "1"); startPoint.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode());
pointTab.update(startPoint); pointTab.update(startPoint);
} }
} }
if ("1".equals(status)) { if (UpdateTaskStatusEnum.EXECUTION.getCode().equals(status)) {
// 更新任务状态为执行中 // 更新任务状态为执行中
taskObj.put("task_status", TaskStatusEnum.EXECUTING.getCode()); taskObj.put("task_status", TaskStatusEnum.EXECUTING.getCode());
taskObj.put("update_time", DateUtil.now()); taskObj.put("update_time", DateUtil.now());
@ -113,7 +112,7 @@ public class YzjCallEmptyVehicleTask extends AbstractAcsTask {
taskTab.update(taskObj); taskTab.update(taskObj);
} }
if (StrUtil.equals(status,"2")) { if (StrUtil.equals(status,UpdateTaskStatusEnum.FORCEFINISH.getCode())) {
/* /*
* 更改任务状态为完成 * 更改任务状态为完成
*/ */
@ -124,46 +123,31 @@ public class YzjCallEmptyVehicleTask extends AbstractAcsTask {
taskTab.update(taskObj); taskTab.update(taskObj);
JSONObject startPoint = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0); JSONObject startPoint = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0);
if (point_code1.startsWith("L")) { // 入窑缓存位 if (point_code1.startsWith("R")) { // 入窑缓存位
// 插入出库单 // 插入出库单
JSONObject regionIoObj = new JSONObject(); JSONObject regionIoObj = new JSONObject();
regionIoObj.put("iostorinv_id", IdUtil.getLongId()); regionIoObj.put("iostorinv_id", IdUtil.getLongId());
regionIoObj.put("bill_code", CodeUtil.getNewCode("IN_STORE_CODE")); regionIoObj.put("bill_code", CodeUtil.getNewCode("IN_STORE_CODE"));
regionIoObj.put("buss_date", DateUtil.today()); regionIoObj.put("buss_date", DateUtil.today());
regionIoObj.put("io_type", "2"); // 出库 regionIoObj.put("io_type", RegionIOEnum.IO_TYPE_OUT.getCode()); // 出库
regionIoObj.put("region_id", startPoint.getString("region_id")); regionIoObj.put("region_id", startPoint.getString("region_id"));
regionIoObj.put("region_code", startPoint.getString("region_code")); regionIoObj.put("region_code", startPoint.getString("region_code"));
regionIoObj.put("region_name", startPoint.getString("region_name")); regionIoObj.put("region_name", startPoint.getString("region_name"));
regionIoObj.put("material_id", taskObj.getString("material_id")); regionIoObj.put("material_id", taskObj.getString("material_id"));
regionIoObj.put("vehicle_code", taskObj.getString("vehicle_code")); regionIoObj.put("vehicle_code", taskObj.getString("vehicle_code"));
regionIoObj.put("qty", requestObj.getString("qty")); regionIoObj.put("qty", requestObj.getString("qty"));
regionIoObj.put("bill_status", "3"); regionIoObj.put("bill_status", RegionIOEnum.BILL_STATUS_FINISH.getCode());
regionIoObj.put("start_point_code", taskObj.getString("point_code1")); regionIoObj.put("start_point_code", taskObj.getString("point_code1"));
regionIoObj.put("end_point_code", taskObj.getString("point_code2")); regionIoObj.put("end_point_code", taskObj.getString("point_code2"));
regionIoObj.put("create_mode", "2"); regionIoObj.put("create_mode", RegionIOEnum.CREATE_MODE_ACS.getCode());
regionIoObj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd")); regionIoObj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd"));
regionIoObj.put("create_id", SecurityUtils.getCurrentUserId()); regionIoObj.put("create_id", SecurityUtils.getCurrentUserId());
regionIoObj.put("create_name", SecurityUtils.getCurrentNickName()); regionIoObj.put("create_name", SecurityUtils.getCurrentNickName());
regionIoObj.put("create_time", DateUtil.now()); regionIoObj.put("create_time", DateUtil.now());
regionIoTab.insert(regionIoObj); regionIoTab.insert(regionIoObj);
// 点位更新,起点:空位,解锁; // 点位更新,起点:空位,解锁;
startPoint.put("point_status", "1"); PointUpdateUtil.clearPoint(startPoint.getString("point_code"));
startPoint.put("lock_type", "1");
startPoint.put("task_id", "");
startPoint.put("pcsn", "");
startPoint.put("ivt_qty", "0");
startPoint.put("material_id", "");
startPoint.put("instorage_time", "");
startPoint.put("is_full", "2");
startPoint.put("standing_time", "0");
startPoint.put("vehicle_type", "");
startPoint.put("vehicle_code", "");
} else { // 钢托盘每次就一个 --- 如果是堆叠位5需要更新设备状态??
startPoint.put("point_status", "1");
startPoint.put("lock_type", "1");
startPoint.put("vehicle_qty", "0");
} }
pointTab.update(startPoint);
} }
} }
@ -187,11 +171,8 @@ public class YzjCallEmptyVehicleTask extends AbstractAcsTask {
JSONObject taskObj = taskTab.query("is_delete='0' and point_code2 = '" + form.getString("point_code2") + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0); JSONObject taskObj = taskTab.query("is_delete='0' and point_code2 = '" + form.getString("point_code2") + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(taskObj)) throw new BadRequestException("当前点位" + form.getString("point_code2") + "存在未完成的任务"); if (ObjectUtil.isNotEmpty(taskObj)) throw new BadRequestException("当前点位" + form.getString("point_code2") + "存在未完成的任务");
String point_code2 = form.getString("point_code2"); String point_code2 = form.getString("point_code2");
String sub_device_code = point_code2.substring(0, point_code2.indexOf("_")); String device_code = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0).getString("device_code");
String device_code = pointTab.query("point_code = '" + sub_device_code + "'").uniqueResult(0).getString("device_code");
JSONObject workOrderObj = workOrderTab.query("device_code = '" + device_code + "' and order_status = '3' and is_delete ='0'").uniqueResult(0); JSONObject workOrderObj = workOrderTab.query("device_code = '" + device_code + "' and order_status = '3' and is_delete ='0'").uniqueResult(0);
if (ObjectUtil.isEmpty(workOrderObj)) throw new BadRequestException("该设备当前未生产或者已删除"); if (ObjectUtil.isEmpty(workOrderObj)) throw new BadRequestException("该设备当前未生产或者已删除");
@ -203,11 +184,13 @@ public class YzjCallEmptyVehicleTask extends AbstractAcsTask {
.task_status(TaskStatusEnum.SURE_END.getCode()) .task_status(TaskStatusEnum.SURE_END.getCode())
.point_code2(point_code2) .point_code2(point_code2)
.acs_task_type("2") .acs_task_type("2")
.vehicle_code(form.getString("vehicle_code")) .material_id(workOrderObj.getLong("material_id"))
.vehicle_type(workOrderObj.getString("vehicle_type")) .workorder_id(workOrderObj.getLong("workorder_id"))
.vehicle_type(PointEnum.VEHICLE_TYPE_STEEL_TRAY.getCode())
.vehicle_qty(form.getIntValue("qty")) .vehicle_qty(form.getIntValue("qty"))
.task_group_id(org.nl.wms.util.IdUtil.getLongId()) .task_group_id(org.nl.wms.util.IdUtil.getLongId())
.handle_class(THIS_CLASS) .handle_class(THIS_CLASS)
.request_param(form.toJSONString())
.create_time(DateUtil.now()) .create_time(DateUtil.now())
.build(); .build();
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
@ -247,9 +230,10 @@ public class YzjCallEmptyVehicleTask extends AbstractAcsTask {
//锁住起点 //锁住起点
noFullPoint.put("task_id", taskObj.getString("task_id")); noFullPoint.put("task_id", taskObj.getString("task_id"));
noFullPoint.put("lock_type", "2"); noFullPoint.put("lock_type", PointEnum.LOCK_TYPE_TRUE.getCode());
pointTab.update(noFullPoint); pointTab.update(noFullPoint);
} else { // 到KGTDDW05找空钢托盘 } else { // 到KGTDDW05找空钢托盘
// 向ACS查询是否有空钢托盘
JSONObject param = new JSONObject(); JSONObject param = new JSONObject();
param.put("flag", "2"); param.put("flag", "2");
param.put("region_code", "KGTCPQ"); param.put("region_code", "KGTCPQ");
@ -263,7 +247,7 @@ public class YzjCallEmptyVehicleTask extends AbstractAcsTask {
//锁住起点 //锁住起点
kgtPoint.put("task_id", taskObj.getString("task_id")); kgtPoint.put("task_id", taskObj.getString("task_id"));
kgtPoint.put("lock_type", "2"); kgtPoint.put("lock_type", PointEnum.LOCK_TYPE_TRUE.getCode());
pointTab.update(kgtPoint); pointTab.update(kgtPoint);
} else { } else {
taskObj.put("remark", "未找到可用的载具!"); taskObj.put("remark", "未找到可用的载具!");

7
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/wql/QSCH_hnCallEmptyVehicle_01.wql

@ -48,17 +48,16 @@ IF 输入.flag = "1"
p.point_name p.point_name
FROM FROM
SCH_BASE_Point p SCH_BASE_Point p
LEFT JOIN md_pb_vehicle vehicle ON vehicle.vehicle_code = p.vehicle_code
WHERE WHERE
lock_type = '1' lock_type = '1'
AND is_used = '1' AND is_used = '1'
AND is_delete = '0' AND is_delete = '0'
AND point_status = '2' AND point_status = '2'
OPTION 输入.region_code <> "" OPTION 输入.region_code <> ""
p.region_code = 输入.region_code p.region_code = 输入.region_code
ENDOPTION ENDOPTION
OPTION 输入.is_new <> "" OPTION 输入.is_new <> ""
vehicle.vehicle_type = 输入.is_new p.vehicle_type = 输入.is_new
ENDOPTION ENDOPTION
ENDSELECT ENDSELECT
ENDQUERY ENDQUERY

4
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/wql/QSCH_yzjCallEmptyVehicle_01.wql

@ -51,9 +51,9 @@
WHERE WHERE
lock_type = '1' lock_type = '1'
AND is_used = '1' AND is_used = '1'
AND is_full = '2' AND is_full = '0'
AND is_delete = '0' AND is_delete = '0'
AND point_status = '2' AND point_status = '3'
OPTION 输入.region_code <> "" OPTION 输入.region_code <> ""
p.region_code = 输入.region_code p.region_code = 输入.region_code
ENDOPTION ENDOPTION

2
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/FjCallMaterialTask.java

@ -187,7 +187,7 @@ public class FjCallMaterialTask extends AbstractAcsTask {
.task_status(TaskStatusEnum.SURE_END.getCode()) .task_status(TaskStatusEnum.SURE_END.getCode())
.point_code2(point_code2) .point_code2(point_code2)
.vehicle_code(vehicle_code) .vehicle_code(vehicle_code)
.material_info_id(workOrderObj.getLong("workorder_id")) .workorder_id(workOrderObj.getLong("workorder_id"))
.material_id(workOrderObj.getLong("material_id")) .material_id(workOrderObj.getLong("material_id"))
.vehicle_type(vehicle_type) .vehicle_type(vehicle_type)
.handle_class(THIS_CLASS) .handle_class(THIS_CLASS)

30
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/SzCallMaterialTask.java

@ -14,10 +14,9 @@ import org.nl.modules.system.util.CodeUtil;
import org.nl.modules.wql.WQL; import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.sch.SchTaskDto; import org.nl.wms.sch.SchTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.*;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.sch.manage.UpdateTaskStatusEnum;
import org.nl.wms.sch.tasks.AcsTaskDto; import org.nl.wms.sch.tasks.AcsTaskDto;
import org.nl.wms.sch.tasks.PointUpdateUtil;
import org.nl.wms.util.IdUtil; import org.nl.wms.util.IdUtil;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -94,7 +93,7 @@ public class SzCallMaterialTask extends AbstractAcsTask {
if (ObjectUtil.isNotEmpty(material_point)) { if (ObjectUtil.isNotEmpty(material_point)) {
// 点位解锁 // 点位解锁
material_point.put("lock_type", "1"); material_point.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode());
pointTab.update(material_point); pointTab.update(material_point);
} }
} }
@ -121,17 +120,17 @@ public class SzCallMaterialTask extends AbstractAcsTask {
regionIoObj.put("iostorinv_id", IdUtil.getLongId()); regionIoObj.put("iostorinv_id", IdUtil.getLongId());
regionIoObj.put("bill_code", CodeUtil.getNewCode("IN_STORE_CODE")); regionIoObj.put("bill_code", CodeUtil.getNewCode("IN_STORE_CODE"));
regionIoObj.put("buss_date", DateUtil.today()); regionIoObj.put("buss_date", DateUtil.today());
regionIoObj.put("io_type", "2"); // 出库 regionIoObj.put("io_type", RegionIOEnum.IO_TYPE_OUT.getCode()); // 出库
regionIoObj.put("region_id", material_point.getString("region_id")); regionIoObj.put("region_id", material_point.getString("region_id"));
regionIoObj.put("region_code", material_point.getString("region_code")); regionIoObj.put("region_code", material_point.getString("region_code"));
regionIoObj.put("region_name", material_point.getString("region_name")); regionIoObj.put("region_name", material_point.getString("region_name"));
regionIoObj.put("material_id", taskObj.getString("material_id")); regionIoObj.put("material_id", taskObj.getString("material_id"));
regionIoObj.put("vehicle_code", taskObj.getString("vehicle_code")); regionIoObj.put("vehicle_code", taskObj.getString("vehicle_code"));
regionIoObj.put("qty", requestObj.getString("qty")); regionIoObj.put("qty", requestObj.getString("qty"));
regionIoObj.put("bill_status", "3"); regionIoObj.put("bill_status", RegionIOEnum.BILL_STATUS_FINISH.getCode());
regionIoObj.put("start_point_code", taskObj.getString("point_code1")); regionIoObj.put("start_point_code", taskObj.getString("point_code1"));
regionIoObj.put("end_point_code", taskObj.getString("point_code2")); regionIoObj.put("end_point_code", taskObj.getString("point_code2"));
regionIoObj.put("create_mode", "2"); regionIoObj.put("create_mode", RegionIOEnum.CREATE_MODE_ACS.getCode());
regionIoObj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd")); regionIoObj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd"));
regionIoObj.put("create_id", SecurityUtils.getCurrentUserId()); regionIoObj.put("create_id", SecurityUtils.getCurrentUserId());
regionIoObj.put("create_name", SecurityUtils.getCurrentNickName()); regionIoObj.put("create_name", SecurityUtils.getCurrentNickName());
@ -140,18 +139,7 @@ public class SzCallMaterialTask extends AbstractAcsTask {
//完成后 //完成后
// 物料点位解锁 并设置空位 // 物料点位解锁 并设置空位
material_point.put("lock_type", "1"); PointUpdateUtil.clearPoint(material_point.getString("point_code"));
material_point.put("point_status", "1");
material_point.put("task_id", "");
material_point.put("pcsn", "");
material_point.put("ivt_qty", "0");
material_point.put("material_id", "");
material_point.put("instorage_time", "");
material_point.put("is_full", "2");
material_point.put("standing_time", "0");
material_point.put("vehicle_type", "");
material_point.put("vehicle_code", "");
pointTab.update(material_point);
} }
} }
@ -188,7 +176,7 @@ public class SzCallMaterialTask extends AbstractAcsTask {
.task_status(TaskStatusEnum.SURE_END.getCode()) .task_status(TaskStatusEnum.SURE_END.getCode())
.point_code2(point_code2) .point_code2(point_code2)
.vehicle_code(vehicle_code) .vehicle_code(vehicle_code)
.material_info_id(workOrderObj.getLong("workorder_id")) .workorder_id(workOrderObj.getLong("workorder_id"))
.material_id(workOrderObj.getLong("material_id")) .material_id(workOrderObj.getLong("material_id"))
.vehicle_type(vehicle_type) .vehicle_type(vehicle_type)
.handle_class(THIS_CLASS) .handle_class(THIS_CLASS)
@ -231,7 +219,7 @@ public class SzCallMaterialTask extends AbstractAcsTask {
JSONObject material_point = pointTab.query("point_id = '" + json1.getString("point_id") + "' and lock_type = '1'").uniqueResult(0); JSONObject material_point = pointTab.query("point_id = '" + json1.getString("point_id") + "' and lock_type = '1'").uniqueResult(0);
if (ObjectUtil.isEmpty(material_point)) throw new BadRequestException("数据错误,请校验!"); if (ObjectUtil.isEmpty(material_point)) throw new BadRequestException("数据错误,请校验!");
// 物料点位上锁 // 物料点位上锁
material_point.put("lock_type", "2"); material_point.put("lock_type", PointEnum.LOCK_TYPE_TRUE.getCode());
pointTab.update(material_point); pointTab.update(material_point);
taskObj.put("point_code1", material_point.getString("point_code")); taskObj.put("point_code1", material_point.getString("point_code"));

131
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/YzjCallMaterialTask.java

@ -9,22 +9,20 @@ import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.nl.config.ConfigParam;
import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.common.utils.SecurityUtils; import org.nl.modules.common.utils.SecurityUtils;
import org.nl.modules.system.util.CodeUtil; import org.nl.modules.system.util.CodeUtil;
import org.nl.modules.wql.WQL; import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.sch.SchTaskDto; import org.nl.wms.sch.SchTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.*;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.sch.tasks.AcsTaskDto; import org.nl.wms.sch.tasks.AcsTaskDto;
import org.nl.wms.sch.tasks.PointUpdateUtil;
import org.nl.wms.util.IdUtil; import org.nl.wms.util.IdUtil;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*; import java.util.*;
import java.util.function.BiConsumer;
import java.util.function.Predicate;
/** /**
* @author: lyd * @author: lyd
@ -36,8 +34,6 @@ import java.util.function.Predicate;
@Slf4j @Slf4j
public class YzjCallMaterialTask extends AbstractAcsTask { public class YzjCallMaterialTask extends AbstractAcsTask {
private final String THIS_CLASS = YzjCallMaterialTask.class.getName(); private final String THIS_CLASS = YzjCallMaterialTask.class.getName();
//start point,[endpoint1,endpoin2]
public static Map<String,String> YZJ_OLD_POINT = new HashMap<>();
/** /**
* 添加任务进行下发 * 添加任务进行下发
* *
@ -87,7 +83,7 @@ public class YzjCallMaterialTask extends AbstractAcsTask {
// 物料点 // 物料点
JSONObject material_point = pointTab.query("point_code = '" + taskObj.getString("point_code1") + "'").uniqueResult(0); JSONObject material_point = pointTab.query("point_code = '" + taskObj.getString("point_code1") + "'").uniqueResult(0);
//任务取消 //任务取消
if (StrUtil.equals(status, "0")) { if (StrUtil.equals(status, UpdateTaskStatusEnum.CANCEL.getCode())) {
// 取消删除任务 // 取消删除任务
if (StrUtil.equals(taskObj.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) { if (StrUtil.equals(taskObj.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) {
throw new BadRequestException("已完成不能取消!"); throw new BadRequestException("已完成不能取消!");
@ -96,12 +92,13 @@ public class YzjCallMaterialTask extends AbstractAcsTask {
taskObj.put("remark", "已取消"); taskObj.put("remark", "已取消");
taskTab.update(taskObj); taskTab.update(taskObj);
// 点位解锁 if (ObjectUtil.isEmpty(material_point)) return;
material_point.put("lock_type", "1"); // 解锁
material_point.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode());
pointTab.update(material_point); pointTab.update(material_point);
} }
if ("1".equals(status)) { if (UpdateTaskStatusEnum.EXECUTION.getCode().equals(status)) {
// 更新任务状态为执行中 // 更新任务状态为执行中
taskObj.put("task_status", TaskStatusEnum.EXECUTING.getCode()); taskObj.put("task_status", TaskStatusEnum.EXECUTING.getCode());
taskObj.put("update_time", DateUtil.now()); taskObj.put("update_time", DateUtil.now());
@ -109,52 +106,38 @@ public class YzjCallMaterialTask extends AbstractAcsTask {
taskTab.update(taskObj); taskTab.update(taskObj);
} }
if (StrUtil.equals(status, "2")) { if (StrUtil.equals(status, UpdateTaskStatusEnum.FORCEFINISH.getCode())) {
// 更改任务状态为完成 // 更改任务状态为完成
taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode()); taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
taskObj.put("update_time", DateUtil.now()); taskObj.put("update_time", DateUtil.now());
taskTab.update(taskObj); taskTab.update(taskObj);
if (ObjectUtil.isEmpty(material_point)) return;
JSONObject requestObj = task.getJSONObject("request_param"); JSONObject requestObj = task.getJSONObject("request_param");
// 区域出入表【st_ivt_regionIO】
插入区域表:{ WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO");
//区域出入表【st_ivt_regionIO】 JSONObject regionIoObj = new JSONObject();
WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO"); regionIoObj.put("iostorinv_id", IdUtil.getLongId());
JSONObject regionIoObj = new JSONObject(); regionIoObj.put("bill_code", CodeUtil.getNewCode("IN_STORE_CODE"));
regionIoObj.put("iostorinv_id", IdUtil.getLongId()); regionIoObj.put("buss_date", DateUtil.today());
regionIoObj.put("bill_code", CodeUtil.getNewCode("IN_STORE_CODE")); regionIoObj.put("io_type", RegionIOEnum.IO_TYPE_OUT.getCode()); // 出库
regionIoObj.put("buss_date", DateUtil.today()); regionIoObj.put("region_id", material_point.getString("region_id"));
regionIoObj.put("io_type", "2"); // 出库 regionIoObj.put("region_code", material_point.getString("region_code"));
regionIoObj.put("region_id", material_point.getString("region_id")); regionIoObj.put("region_name", material_point.getString("region_name"));
regionIoObj.put("region_code", material_point.getString("region_code")); regionIoObj.put("material_id", taskObj.getString("material_id"));
regionIoObj.put("region_name", material_point.getString("region_name")); regionIoObj.put("vehicle_code", taskObj.getString("vehicle_code"));
regionIoObj.put("material_id", taskObj.getString("material_id")); regionIoObj.put("qty", requestObj.getString("qty"));
regionIoObj.put("vehicle_code", taskObj.getString("vehicle_code")); regionIoObj.put("bill_status", RegionIOEnum.BILL_STATUS_FINISH.getCode());
regionIoObj.put("qty", requestObj.getString("qty")); regionIoObj.put("start_point_code", taskObj.getString("point_code1"));
regionIoObj.put("bill_status", "3"); regionIoObj.put("end_point_code", taskObj.getString("point_code2"));
regionIoObj.put("start_point_code", taskObj.getString("point_code1")); regionIoObj.put("create_mode", RegionIOEnum.CREATE_MODE_ACS.getCode());
regionIoObj.put("end_point_code", taskObj.getString("point_code2")); regionIoObj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd"));
regionIoObj.put("create_mode", "2"); regionIoObj.put("create_id", SecurityUtils.getCurrentUserId());
regionIoObj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd")); regionIoObj.put("create_name", SecurityUtils.getCurrentNickName());
regionIoObj.put("create_id", SecurityUtils.getCurrentUserId()); regionIoObj.put("create_time", DateUtil.now());
regionIoObj.put("create_name", SecurityUtils.getCurrentNickName()); regionIoTab.insert(regionIoObj);
regionIoObj.put("create_time", DateUtil.now());
regionIoTab.insert(regionIoObj);
}
//完成后 //完成后
// 物料点位解锁 并设置空位 // 物料点位解锁 并设置空位
material_point.put("lock_type", "1"); PointUpdateUtil.clearPoint(material_point.getString("point_code"));
material_point.put("point_status", "1");
material_point.put("task_id", "");
material_point.put("pcsn", "");
material_point.put("ivt_qty", "0");
material_point.put("material_id", "");
material_point.put("instorage_time", "");
material_point.put("is_full", "2");
material_point.put("standing_time", "0");
material_point.put("vehicle_type", "");
material_point.put("vehicle_code", "");
pointTab.update(material_point);
} }
} }
@ -181,20 +164,21 @@ public class YzjCallMaterialTask extends AbstractAcsTask {
String device_code = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0).getString("device_code"); String device_code = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0).getString("device_code");
JSONObject workOrderObj = workOrderTab.query("device_code = '" + device_code + "' and order_status = '3' and is_delete ='0'").uniqueResult(0); JSONObject workOrderObj = workOrderTab.query("device_code = '" + device_code + "' and order_status = '3' and is_delete ='0'").uniqueResult(0);
if (ObjectUtil.isEmpty(workOrderObj)) throw new BadRequestException("该设备当前未生产或者已删除"); if (ObjectUtil.isEmpty(workOrderObj)) throw new BadRequestException("该设备当前未生产或者已删除");
String oldMatSendPoint = ConfigParam.YZJ_OLD_POINT.get(point_code2);//旧料盅终点
if (StringUtils.isNotEmpty(oldMatSendPoint)){
point_code2=oldMatSendPoint;
}
SchTaskDto dto = SchTaskDto.builder() SchTaskDto dto = SchTaskDto.builder()
.task_id(IdUtil.getLongId()) .task_id(IdUtil.getLongId())
.task_code(CodeUtil.getNewCode("TASK_CODE")) .task_code(CodeUtil.getNewCode("TASK_CODE"))
.task_type("task_type") .task_type("task_type")
.task_name("压制机叫料") .task_name("压制机叫料")
.material_qty(qty) .material_qty(qty)
.acs_task_type("2")
.vehicle_type(workOrderObj.getString("is_new"))
.workorder_id(workOrderObj.getLong("workorder_id"))
.task_status(TaskStatusEnum.SURE_END.getCode()) .task_status(TaskStatusEnum.SURE_END.getCode())
.point_code2(point_code2) .point_code2(point_code2)
.vehicle_code(vehicle_code) .vehicle_code(vehicle_code)
.material_info_id(workOrderObj.getLong("workorder_id")) .vehicle_type(workOrderObj.getString("vehicle_type"))
.workorder_id(workOrderObj.getLong("workorder_id"))
.material_id(workOrderObj.getLong("material_id")) .material_id(workOrderObj.getLong("material_id"))
.vehicle_type(vehicle_type) .vehicle_type(vehicle_type)
.handle_class(THIS_CLASS) .handle_class(THIS_CLASS)
@ -216,25 +200,39 @@ public class YzjCallMaterialTask extends AbstractAcsTask {
* @created 2020年6月12日 下午6:01:30 * @created 2020年6月12日 下午6:01:30
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void findStartPoint() { public void findStartPoint() {
/* /**
* 根据业务找对应的起点,直接到困料货架获取 * 根据业务找对应的起点,直接到困料货架获取
* 如果是普通压制机区分新旧物料新料有对接位旧料需要查找放到哪个旧盅货架
* 如果是液压机手持呼叫到困料货架查找相同物料的料盅这里只能是新料盅
*/ */
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表 WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); // 点位表 WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); // 点位表
WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder"); // 工单表 WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder"); // 工单表
WQLObject deviceTab = WQLObject.getWQLObject("PDM_BI_Device"); // 设备表
JSONArray taskArr = taskTab.query("handle_class = '" + THIS_CLASS + "'and is_delete = '0' and task_status = '" + TaskStatusEnum.SURE_END.getCode() + "'").getResultJSONArray(0); JSONArray taskArr = taskTab.query("handle_class = '" + THIS_CLASS + "'and is_delete = '0' and task_status = '" + TaskStatusEnum.SURE_END.getCode() + "'").getResultJSONArray(0);
for (int i = 0; i < taskArr.size(); i++) { for (int i = 0; i < taskArr.size(); i++) {
JSONObject taskObj = taskArr.getJSONObject(i); JSONObject taskObj = taskArr.getJSONObject(i);
// 获取工单 // point_code2是对应的上料点
String point_code2 = taskObj.getString("point_code2"); String point_code2 = taskObj.getString("point_code2");
String device_code = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0).getString("device_code"); JSONObject point = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
String device_code = point.getString("device_code");
JSONObject workOrderObj = workOrderTab.query("device_code = '" + device_code + "' and order_status = '3' and is_delete ='0'").uniqueResult(0); // 获取工单
JSONObject workOrderObj = workOrderTab.query("workorder_id = '" + taskObj.getString("workorder_id") + "'").uniqueResult(0);
JSONObject deviceObj = deviceTab.query("device_code = '" + device_code + "'").uniqueResult(0);
if (deviceObj.getString("device_model").equals("3")) { // 普通压制机:区分新旧物料
// 新物料終点不用修改
if (workOrderObj.getString("is_new").equals(WorkOrderEnum.IS_OLD_MATERIAL.getCode())) { // 旧物料
// 查找该设备对应的旧盅位
JSONObject endPoint = pointTab.query("region_code = 'KLHJ' AND point_type = '4' AND device_code LIKE '%" +
point_code2 + "%' AND point_status = '1' AND is_used = '1' AND is_delete = '0' AND lock_type = '1'").uniqueResult(0);
point_code2 = endPoint.getString("point_code"); // 未锁的旧盅货架位
}
}
String material_id = taskObj.getString("material_id"); String material_id = taskObj.getString("material_id");
String vehicle_type = taskObj.getString("vehicle_type");
JSONObject queryParam = new JSONObject(); JSONObject queryParam = new JSONObject();
queryParam.put("flag", "1"); queryParam.put("flag", "1");
queryParam.put("material_id", material_id); queryParam.put("material_id", material_id);
@ -243,23 +241,22 @@ public class YzjCallMaterialTask extends AbstractAcsTask {
JSONObject json1 = WQL.getWO("QSCH_yzjCallMaterial_01").addParamMap(queryParam).process().uniqueResult(0); JSONObject json1 = WQL.getWO("QSCH_yzjCallMaterial_01").addParamMap(queryParam).process().uniqueResult(0);
if (ObjectUtil.isNotEmpty(json1)) { if (ObjectUtil.isNotEmpty(json1)) {
// 拿到点位 // 拿到点位
JSONObject material_point = pointTab.query("point_id = '" + json1.getString("point_id") + "' and lock_type = '1'").uniqueResult(0); JSONObject material_point = pointTab.query("point_id = '" + json1.getString("point_id") + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(material_point)) throw new BadRequestException("数据错误,请校验!"); if (ObjectUtil.isEmpty(material_point)) throw new BadRequestException("数据错误,请校验!");
// 物料点位上锁 // 物料点位上锁
material_point.put("lock_type", "2"); material_point.put("lock_type", PointEnum.LOCK_TYPE_TRUE.getCode());
material_point.put("task_id", taskObj.getString("task_id"));
pointTab.update(material_point); pointTab.update(material_point);
taskObj.put("point_code2", point_code2);
taskObj.put("point_code1", material_point.getString("point_code")); taskObj.put("point_code1", material_point.getString("point_code"));
taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
taskObj.put("acs_task_type", "2");
taskObj.put("update_time", DateUtil.now()); taskObj.put("update_time", DateUtil.now());
taskTab.update(taskObj);
} else { } else {
taskObj.put("remark", "困料货架无所需物料"); taskObj.put("remark", "困料货架无所需物料");
taskObj.put("update_time", DateUtil.now()); taskObj.put("update_time", DateUtil.now());
taskTab.update(taskObj);
} }
taskTab.update(taskObj);
} }
} }

4
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/wql/QSCH_szCallMaterial_01.wql

@ -54,7 +54,7 @@
WHERE WHERE
p.is_used = '1' p.is_used = '1'
AND is_delete = '0' AND is_delete = '0'
AND lock_type='1' AND lock_type = '1'
AND point_status = '3' AND point_status = '3'
OPTION 输入.material_id <> "" OPTION 输入.material_id <> ""
p.material_id = 输入.material_id p.material_id = 输入.material_id
@ -65,7 +65,7 @@
OPTION 输入.vehicle_type <> "" OPTION 输入.vehicle_type <> ""
p.can_vehicle_type like 输入.vehicle_type p.can_vehicle_type like 输入.vehicle_type
ENDOPTION ENDOPTION
ORDER BY is_full desc,col_num,row_num,layer_num ORDER BY is_full desc
ENDSELECT ENDSELECT
ENDQUERY ENDQUERY
ENDIF ENDIF

5
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/wql/QSCH_yzjCallMaterial_01.wql

@ -49,11 +49,12 @@
FROM FROM
SCH_BASE_Point p SCH_BASE_Point p
WHERE WHERE
p.is_used = '1' lock_type = '1'
AND p.is_used = '1'
AND standing_time is not null AND standing_time is not null
AND now() > DATE_ADD(instorage_time,INTERVAL standing_time MINUTE) AND now() > DATE_ADD(instorage_time,INTERVAL standing_time MINUTE)
AND is_delete = '0' AND is_delete = '0'
AND lock_type='1' AND point_type = '1'
AND point_status = '3' AND point_status = '3'
OPTION 输入.material_id <> "" OPTION 输入.material_id <> ""
p.material_id = 输入.material_id p.material_id = 输入.material_id

56
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/YzjSendEmpVehicleTask.java

@ -9,7 +9,6 @@ import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.nl.config.ConfigParam;
import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.common.utils.SecurityUtils; import org.nl.modules.common.utils.SecurityUtils;
import org.nl.modules.system.util.CodeUtil; import org.nl.modules.system.util.CodeUtil;
@ -17,9 +16,11 @@ import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.sch.SchTaskDto; import org.nl.wms.sch.SchTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.PointEnum;
import org.nl.wms.sch.manage.TaskStatusEnum; import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.sch.manage.UpdateTaskStatusEnum;
import org.nl.wms.sch.tasks.AcsTaskDto; import org.nl.wms.sch.tasks.AcsTaskDto;
import org.nl.wms.sch.tasks.RegionTypeEnum; import org.nl.wms.sch.tasks.PointUpdateUtil;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
@ -83,7 +84,7 @@ public class YzjSendEmpVehicleTask extends AbstractAcsTask {
String point_code2 = taskObj.getString("point_code2"); String point_code2 = taskObj.getString("point_code2");
JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
if (StrUtil.equals(status, "0")) { if (StrUtil.equals(status, UpdateTaskStatusEnum.CANCEL.getCode())) {
// 取消删除任务 // 取消删除任务
if (StrUtil.equals(jsonTask.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) { if (StrUtil.equals(jsonTask.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) {
throw new BadRequestException("已完成不能取消!"); throw new BadRequestException("已完成不能取消!");
@ -91,7 +92,7 @@ public class YzjSendEmpVehicleTask extends AbstractAcsTask {
// 解锁终点位置 // 解锁终点位置
if (ObjectUtil.isNotEmpty(point_code2)) { // 未找到终点的取消只需要完成任务就行 if (ObjectUtil.isNotEmpty(point_code2)) { // 未找到终点的取消只需要完成任务就行
JSONObject point2 = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0); JSONObject point2 = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
point2.put("lock_type", "1"); point2.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode());
pointTab.update(point2); pointTab.update(point2);
} }
// 任务设置为完成 // 任务设置为完成
@ -100,7 +101,7 @@ public class YzjSendEmpVehicleTask extends AbstractAcsTask {
taskTab.update(jsonTask); taskTab.update(jsonTask);
} }
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { if (UpdateTaskStatusEnum.EXECUTION.getCode().equals(status)) {
// 更新任务状态为执行中 // 更新任务状态为执行中
jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode()); jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode());
jsonTask.put("update_time", DateUtil.now()); jsonTask.put("update_time", DateUtil.now());
@ -108,7 +109,7 @@ public class YzjSendEmpVehicleTask extends AbstractAcsTask {
taskTab.update(jsonTask); taskTab.update(jsonTask);
} }
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) { if (StrUtil.equals(status, UpdateTaskStatusEnum.FORCEFINISH.getCode())) {
// 更改任务状态为完成 // 更改任务状态为完成
jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode()); jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode());
jsonTask.put("update_optid", SecurityUtils.getCurrentUserId()); jsonTask.put("update_optid", SecurityUtils.getCurrentUserId());
@ -117,18 +118,10 @@ public class YzjSendEmpVehicleTask extends AbstractAcsTask {
taskTab.update(jsonTask); taskTab.update(jsonTask);
// 释放点位 // 释放点位
if (ObjectUtil.isNotEmpty(point_code2)) { // 防止只有确定起点的任务完成 if (ObjectUtil.isNotEmpty(point_code2)) { // 防止只有确定起点的任务完成
JSONObject point_2 = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0); JSONObject jsonObject = new JSONObject();
point_2.put("lock_type", "1"); jsonObject.put("point_code", point_code2);
point_2.put("point_status", "2"); jsonObject.put("vehicle_code", jsonTask.getString("vehicle_code"));
point_2.put("vehicle_code", jsonTask.getString("vehicle_code")); PointUpdateUtil.setVehicle(jsonObject);
point_2.put("vehicle_qty", "1");
point_2.put("instorage_time", DateUtil.now());
point_2.put("is_full", "1");
point_2.put("ivt_qty", "0");
point_2.put("pcsn", "");
point_2.put("material_id", "");
point_2.put("standing_time", "0");
pointTab.update(point_2);
} }
} }
} }
@ -147,17 +140,13 @@ public class YzjSendEmpVehicleTask extends AbstractAcsTask {
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表 WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表
String point_code1 = form.getString("point_code1"); String point_code1 = form.getString("point_code1");
String oldMatSendPoint = ConfigParam.YZJ_OLD_POINT.get(point_code1);//旧空料盅的回库的话从公共点位返回
if (StringUtils.isNotEmpty(oldMatSendPoint)){
point_code1=oldMatSendPoint;
}
SchTaskDto dto = SchTaskDto.builder().task_id(org.nl.wms.util.IdUtil.getLongId()) SchTaskDto dto = SchTaskDto.builder().task_id(org.nl.wms.util.IdUtil.getLongId())
.task_code(CodeUtil.getNewCode("TASK_CODE")) .task_code(CodeUtil.getNewCode("TASK_CODE"))
.task_type("") .task_type("")
.task_name("压制机空盅入库") .task_name("压制机空盅入库")
.task_status(TaskStatusEnum.SURE_START.getCode()) .task_status(TaskStatusEnum.SURE_START.getCode())
.point_code1(point_code1) .point_code1(point_code1)
.vehicle_code(form.getString("vehicle_code")) .vehicle_code(form.getString("vehicle_code")) // 送空盅需要
.vehicle_type(form.getString("vehicle_type")) .vehicle_type(form.getString("vehicle_type"))
.vehicle_qty(form.getIntValue("qty")) .vehicle_qty(form.getIntValue("qty"))
.handle_class(THIS_CLASS) .handle_class(THIS_CLASS)
@ -206,7 +195,7 @@ public class YzjSendEmpVehicleTask extends AbstractAcsTask {
//锁住终点 //锁住终点
endPoint.put("task_id", taskObj.getString("task_id")); endPoint.put("task_id", taskObj.getString("task_id"));
endPoint.put("lock_type", "2"); endPoint.put("lock_type", PointEnum.LOCK_TYPE_TRUE.getCode());
pointTab.update(endPoint); pointTab.update(endPoint);
} }
} }
@ -221,7 +210,16 @@ public class YzjSendEmpVehicleTask extends AbstractAcsTask {
*/ */
@Override @Override
public void forceFinish(String task_id) { public void forceFinish(String task_id) {
/*
* 强制完成
*/
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0);
if (ObjectUtil.isNotEmpty(taskObj))
this.updateTaskStatus(taskObj,UpdateTaskStatusEnum.FORCEFINISH.getCode());
else {
throw new BadRequestException("未找到该任务或者任务已完成!");
}
} }
/** /**
@ -231,6 +229,12 @@ public class YzjSendEmpVehicleTask extends AbstractAcsTask {
*/ */
@Override @Override
public void cancel(String task_id) { public void cancel(String task_id) {
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0);
if (ObjectUtil.isNotEmpty(taskObj))
this.updateTaskStatus(taskObj,UpdateTaskStatusEnum.CANCEL.getCode());
else {
throw new BadRequestException("未找到该任务或者任务已完成!");
}
} }
} }

2
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/wql/QSCH_yzjSendEmptyVehicle_01.wql

@ -54,7 +54,7 @@
WHERE WHERE
p.is_used = '1' p.is_used = '1'
AND is_delete = '0' AND is_delete = '0'
AND lock_type='1' AND lock_type = '1'
AND point_status = '1' AND point_status = '1'
OPTION 输入.material_id <> "" OPTION 输入.material_id <> ""
p.material_id = 输入.material_id p.material_id = 输入.material_id

4
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/FjSendMaterialTask.java

@ -96,7 +96,7 @@ public class FjSendMaterialTask extends AbstractAcsTask {
JSONObject point2Obj = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0); JSONObject point2Obj = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
JSONObject requestObj = task.getJSONObject("request_param"); JSONObject requestObj = task.getJSONObject("request_param");
//工单标识 //工单标识
String workorder_id = requestObj.getString("material_info_id"); String workorder_id = requestObj.getString("workorder_id");
//生产工单表【PDM_BD_WorkOrder】 //生产工单表【PDM_BD_WorkOrder】
WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder"); WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder");
JSONObject workorderObj = workOrderTab.query("workorder_id", workorder_id).uniqueResult(0); JSONObject workorderObj = workOrderTab.query("workorder_id", workorder_id).uniqueResult(0);
@ -177,7 +177,7 @@ public class FjSendMaterialTask extends AbstractAcsTask {
.point_code1(point_code1) .point_code1(point_code1)
.vehicle_code(vehicle_code) .vehicle_code(vehicle_code)
.vehicle_type(workOrderObj.getString("vehicle_type")) .vehicle_type(workOrderObj.getString("vehicle_type"))
.material_info_id(workOrderObj.getLong("workorder_id")) .workorder_id(workOrderObj.getLong("workorder_id"))
.material_id(workOrderObj.getLong("material_id")) .material_id(workOrderObj.getLong("material_id"))
.handle_class(THIS_CLASS) .handle_class(THIS_CLASS)
.create_time(DateUtil.now()) .create_time(DateUtil.now())

55
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/HnSendMaterialTask.java

@ -126,7 +126,7 @@ public class HnSendMaterialTask extends AbstractAcsTask {
JSONObject point2Obj = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0); JSONObject point2Obj = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
JSONObject requestObj = task.getJSONObject("request_param"); JSONObject requestObj = task.getJSONObject("request_param");
// 工单标识 // 工单标识
String workorder_id = taskObj.getString("material_info_id"); String workorder_id = taskObj.getString("workorder_id");
JSONObject workorderObj = workOrderTab.query("workorder_id = '" + workorder_id + "'").uniqueResult(0); JSONObject workorderObj = workOrderTab.query("workorder_id = '" + workorder_id + "'").uniqueResult(0);
// 物料 // 物料
JSONObject materialObj = materialTab.query("material_id = '" + workorderObj.getString("material_id") + "'").uniqueResult(0); JSONObject materialObj = materialTab.query("material_id = '" + workorderObj.getString("material_id") + "'").uniqueResult(0);
@ -145,7 +145,7 @@ public class HnSendMaterialTask extends AbstractAcsTask {
regionIoObj.put("material_id", taskObj.getString("material_id")); regionIoObj.put("material_id", taskObj.getString("material_id"));
regionIoObj.put("vehicle_code", taskObj.getString("vehicle_code")); regionIoObj.put("vehicle_code", taskObj.getString("vehicle_code"));
regionIoObj.put("qty", requestObj.getString("qty")); regionIoObj.put("qty", requestObj.getString("qty"));
regionIoObj.put("is_new", workorderObj.getString("is_new")); regionIoObj.put("ivt_weight", requestObj.getString("weight"));
regionIoObj.put("bill_status", RegionIOEnum.BILL_STATUS_FINISH.getCode()); regionIoObj.put("bill_status", RegionIOEnum.BILL_STATUS_FINISH.getCode());
regionIoObj.put("start_point_code", taskObj.getString("point_code1")); regionIoObj.put("start_point_code", taskObj.getString("point_code1"));
regionIoObj.put("end_point_code", taskObj.getString("point_code2")); regionIoObj.put("end_point_code", taskObj.getString("point_code2"));
@ -160,6 +160,7 @@ public class HnSendMaterialTask extends AbstractAcsTask {
point2Obj.put("instorage_time", taskObj.getString("create_time")); // 入库时间为任务生成的时间 point2Obj.put("instorage_time", taskObj.getString("create_time")); // 入库时间为任务生成的时间
point2Obj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd")); point2Obj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd"));
point2Obj.put("ivt_qty", requestObj.getString("qty")); point2Obj.put("ivt_qty", requestObj.getString("qty"));
point2Obj.put("ivt_weight", requestObj.getString("weight"));
point2Obj.put("standing_time", materialObj.getString("standing_time")); point2Obj.put("standing_time", materialObj.getString("standing_time"));
point2Obj.put("warn_time", materialObj.getString("warn_time")); point2Obj.put("warn_time", materialObj.getString("warn_time"));
point2Obj.put("material_id", workorderObj.getString("material_id")); point2Obj.put("material_id", workorderObj.getString("material_id"));
@ -186,7 +187,7 @@ public class HnSendMaterialTask extends AbstractAcsTask {
String vehicle_code = form.getString("vehicle_code"); String vehicle_code = form.getString("vehicle_code");
String qty = form.getString("qty"); String qty = form.getString("qty");
String is_full = form.getString("is_full"); String is_full = form.getString("is_full");
String weight = form.getString("weight"); // 未存 String weight = form.getString("weight");
//任务表【SCH_BASE_Task】 //任务表【SCH_BASE_Task】
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
//判断当前点是否有未完成的任务 //判断当前点是否有未完成的任务
@ -212,7 +213,7 @@ public class HnSendMaterialTask extends AbstractAcsTask {
.point_code1(point_code1) .point_code1(point_code1)
.vehicle_code(vehicle_code) .vehicle_code(vehicle_code)
.vehicle_type(workOrderObj.getString("vehicle_type")) .vehicle_type(workOrderObj.getString("vehicle_type"))
.material_info_id(workOrderObj.getLong("workorder_id")) .workorder_id(workOrderObj.getLong("workorder_id"))
.material_id(workOrderObj.getLong("material_id")) .material_id(workOrderObj.getLong("material_id"))
.handle_class(THIS_CLASS) .handle_class(THIS_CLASS)
.create_time(DateUtil.now()) .create_time(DateUtil.now())
@ -235,7 +236,8 @@ public class HnSendMaterialTask extends AbstractAcsTask {
public void findNextPoint() { public void findNextPoint() {
/** /**
* 根据业务找到相应的终点 * 根据业务找到相应的终点
* 高速混碾机下料先找高速压制机旁边的三个困料位没有位置则去公共货架 * 高速混碾机下料先判断高速压制机的工单生产的是不是相同的是的话判断坤料货架是否有相同物料
* 没有就去旁边的三个困料位没有位置则去公共货架工单不同或者困料货架没有相同物料则去公共货架
* 普通混碾机下料直接送到公共困料货架 * 普通混碾机下料直接送到公共困料货架
*/ */
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
@ -243,12 +245,47 @@ public class HnSendMaterialTask extends AbstractAcsTask {
JSONArray taskArr = taskTab.query("handle_class = '" + THIS_CLASS + "'and is_delete = '0' and task_status = '2'").getResultJSONArray(0); JSONArray taskArr = taskTab.query("handle_class = '" + THIS_CLASS + "'and is_delete = '0' and task_status = '2'").getResultJSONArray(0);
for (int i = 0; i < taskArr.size(); i++) { for (int i = 0; i < taskArr.size(); i++) {
JSONObject taskObj = taskArr.getJSONObject(i); JSONObject taskObj = taskArr.getJSONObject(i);
String vehicle_type = taskObj.getString("vehicle_type");//混碾载具类型新旧料? 工單不提供载具类型 // 找生产改物料的液压机的工单
JSONObject paramObj = new JSONObject();
paramObj.put("flag", "1");
paramObj.put("material_id", taskObj.getString("material_id"));
JSONArray workerOrders = WQL.getWO("QSCH_hnSendMaterial_01").addParamMap(paramObj).process().getResultJSONArray(0);
for (int j = 0; j < workerOrders.size(); j++) {
JSONObject workerOrder = workerOrders.getJSONObject(j);
// 判断仓库是否有该物料
JSONObject param2 = new JSONObject();
param2.put("flag", "2");
param2.put("material_id", workerOrder.getString("material_id"));
param2.put("point_type", "1"); // 公用货架
param2.put("point_status", PointEnum.POINT_STATUS_HAVE_MATERIAL.getCode()); // 有料
JSONArray ivts = WQL.getWO("QSCH_hnSendMaterial_01").addParamMap(param2).process().getResultJSONArray(0);
if (ivts.size() > 0) continue;
// 判断是否有空位
JSONObject param3 = new JSONObject();
param3.put("flag", "2");
param3.put("device_code", workerOrder.getString("device_code"));
param3.put("point_type", "2"); // 液压机旁边三个位置
param3.put("point_status", PointEnum.POINT_STATUS_EMPTY_POSITION.getCode()); // 空位
JSONObject endPoint = WQL.getWO("QSCH_hnSendMaterial_01").addParamMap(param3).process().uniqueResult(0);
if (ObjectUtil.isEmpty(endPoint)) continue;
// 找到位置就可以直接搬
taskObj.put("update_time", DateUtil.now());
taskObj.put("point_code2", endPoint.getString("point_code"));
taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
taskTab.update(taskObj);
// 点位上锁
endPoint.put("lock_type", PointEnum.LOCK_TYPE_TRUE.getCode());
endPoint.put("task_id", taskObj.getString("task_id"));
pointTab.update(endPoint);
return;
}
// 其他情况直接搬到困料货架上
JSONObject param1 = new JSONObject(); JSONObject param1 = new JSONObject();
param1.put("flag", "1"); param1.put("flag", "3");
param1.put("region_code", "KLHJ"); param1.put("region_code", "KLHJ");
param1.put("vehicle_type", "%" + vehicle_type + "%"); // 查找困料货架
//1、查找困料货架是否有响应的载具类型和对应的物料
JSONObject endPoint = WQL.getWO("QSCH_hnSendMaterial_01").addParamMap(param1).process().uniqueResult(0); JSONObject endPoint = WQL.getWO("QSCH_hnSendMaterial_01").addParamMap(param1).process().uniqueResult(0);
if (ObjectUtil.isEmpty(endPoint)) { if (ObjectUtil.isEmpty(endPoint)) {
taskObj.put("remark", "困料货架无可用货位"); taskObj.put("remark", "困料货架无可用货位");

4
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/SendMaterialTask.java

@ -111,7 +111,7 @@ public class SendMaterialTask extends AbstractAcsTask {
JSONObject point2Obj = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0); JSONObject point2Obj = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
JSONObject requestObj = task.getJSONObject("request_param"); JSONObject requestObj = task.getJSONObject("request_param");
//工单标识 //工单标识
String workorder_id = requestObj.getString("material_info_id"); String workorder_id = requestObj.getString("workorder_id");
//生产工单表【PDM_BD_WorkOrder】 //生产工单表【PDM_BD_WorkOrder】
WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder"); WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder");
JSONObject workorderObj = workOrderTab.query("workorder_id", workorder_id).uniqueResult(0); JSONObject workorderObj = workOrderTab.query("workorder_id", workorder_id).uniqueResult(0);
@ -193,7 +193,7 @@ public class SendMaterialTask extends AbstractAcsTask {
.point_code1(point_code1) .point_code1(point_code1)
.vehicle_code(vehicle_code) .vehicle_code(vehicle_code)
.vehicle_type(workOrderObj.getString("vehicle_type")) .vehicle_type(workOrderObj.getString("vehicle_type"))
.material_info_id(workOrderObj.getLong("workorder_id")) .workorder_id(workOrderObj.getLong("workorder_id"))
.material_id(workOrderObj.getLong("material_id")) .material_id(workOrderObj.getLong("material_id"))
.handle_class(THIS_CLASS) .handle_class(THIS_CLASS)
.create_time(DateUtil.now()) .create_time(DateUtil.now())

4
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/SzSendMaterialTask.java

@ -117,7 +117,7 @@ public class SzSendMaterialTask extends AbstractAcsTask {
JSONObject point2Obj = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0); JSONObject point2Obj = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
JSONObject requestObj = task.getJSONObject("request_param"); JSONObject requestObj = task.getJSONObject("request_param");
//工单标识 //工单标识
String workorder_id = requestObj.getString("material_info_id"); String workorder_id = requestObj.getString("workorder_id");
//生产工单表【PDM_BD_WorkOrder】 //生产工单表【PDM_BD_WorkOrder】
WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder"); WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder");
JSONObject workorderObj = workOrderTab.query("workorder_id", workorder_id).uniqueResult(0); JSONObject workorderObj = workOrderTab.query("workorder_id", workorder_id).uniqueResult(0);
@ -199,7 +199,7 @@ public class SzSendMaterialTask extends AbstractAcsTask {
.point_code1(point_code1) .point_code1(point_code1)
.vehicle_code(vehicle_code) .vehicle_code(vehicle_code)
.vehicle_type(workOrderObj.getString("vehicle_type")) .vehicle_type(workOrderObj.getString("vehicle_type"))
.material_info_id(workOrderObj.getLong("workorder_id")) .workorder_id(workOrderObj.getLong("workorder_id"))
.material_id(workOrderObj.getLong("material_id")) .material_id(workOrderObj.getLong("material_id"))
.handle_class(THIS_CLASS) .handle_class(THIS_CLASS)
.create_time(DateUtil.now()) .create_time(DateUtil.now())

47
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/YzjSendMaterialTask.java

@ -14,8 +14,7 @@ import org.nl.modules.system.util.CodeUtil;
import org.nl.modules.wql.WQL; import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.sch.SchTaskDto; import org.nl.wms.sch.SchTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.*;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.sch.tasks.AcsTaskDto; import org.nl.wms.sch.tasks.AcsTaskDto;
import org.nl.wms.util.IdUtil; import org.nl.wms.util.IdUtil;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -81,15 +80,15 @@ public class YzjSendMaterialTask extends AbstractAcsTask {
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); JSONObject taskObj = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
//任务取消 //任务取消
if (StrUtil.equals(status, "0")) { if (StrUtil.equals(status, UpdateTaskStatusEnum.CANCEL.getCode())) {
// 取消删除任务 // 取消删除任务
if (StrUtil.equals(taskObj.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) { if (StrUtil.equals(taskObj.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) {
throw new BadRequestException("已完成不能取消!"); throw new BadRequestException("已完成不能取消!");
} }
String point_code2 = taskObj.getString("point_code2"); String point_code2 = taskObj.getString("point_code2");
if (ObjectUtil.isEmpty(point_code2)) { if (ObjectUtil.isNotEmpty(point_code2)) {
JSONObject endPoint = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0); JSONObject endPoint = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
endPoint.put("lock_type", "1"); endPoint.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode());
pointTab.update(endPoint); pointTab.update(endPoint);
} }
taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode()); taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
@ -97,7 +96,7 @@ public class YzjSendMaterialTask extends AbstractAcsTask {
taskTab.update(taskObj); taskTab.update(taskObj);
} }
if ("1".equals(status)) { if (UpdateTaskStatusEnum.EXECUTION.getCode().equals(status)) {
// 更新任务状态为执行中 // 更新任务状态为执行中
taskObj.put("task_status", TaskStatusEnum.EXECUTING.getCode()); taskObj.put("task_status", TaskStatusEnum.EXECUTING.getCode());
taskObj.put("update_time", DateUtil.now()); taskObj.put("update_time", DateUtil.now());
@ -105,7 +104,7 @@ public class YzjSendMaterialTask extends AbstractAcsTask {
taskTab.update(taskObj); taskTab.update(taskObj);
} }
if (StrUtil.equals(status, "2")) { if (StrUtil.equals(status, UpdateTaskStatusEnum.FORCEFINISH.getCode())) {
// 更改任务状态为完成 // 更改任务状态为完成
taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode()); taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
taskObj.put("update_optid", SecurityUtils.getCurrentUserId()); taskObj.put("update_optid", SecurityUtils.getCurrentUserId());
@ -115,9 +114,10 @@ public class YzjSendMaterialTask extends AbstractAcsTask {
String point_code2 = taskObj.getString("point_code2"); String point_code2 = taskObj.getString("point_code2");
JSONObject point2Obj = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0); JSONObject point2Obj = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(point2Obj)) return;
JSONObject requestObj = task.getJSONObject("request_param"); JSONObject requestObj = task.getJSONObject("request_param");
//工单标识 //工单标识
String workorder_id = requestObj.getString("material_info_id"); String workorder_id = requestObj.getString("workorder_id");
//生产工单表【PDM_BD_WorkOrder】 //生产工单表【PDM_BD_WorkOrder】
WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder"); WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder");
JSONObject workorderObj = workOrderTab.query("workorder_id", workorder_id).uniqueResult(0); JSONObject workorderObj = workOrderTab.query("workorder_id", workorder_id).uniqueResult(0);
@ -128,17 +128,18 @@ public class YzjSendMaterialTask extends AbstractAcsTask {
regionIoObj.put("iostorinv_id", IdUtil.getLongId()); regionIoObj.put("iostorinv_id", IdUtil.getLongId());
regionIoObj.put("bill_code", CodeUtil.getNewCode("IN_STORE_CODE")); regionIoObj.put("bill_code", CodeUtil.getNewCode("IN_STORE_CODE"));
regionIoObj.put("buss_date", DateUtil.today()); regionIoObj.put("buss_date", DateUtil.today());
regionIoObj.put("io_type", "1"); // 入库 regionIoObj.put("io_type", RegionIOEnum.IO_TYPE_IN.getCode()); // 入库
regionIoObj.put("region_id", point2Obj.getString("region_id")); regionIoObj.put("region_id", point2Obj.getString("region_id"));
regionIoObj.put("region_code", point2Obj.getString("region_code")); regionIoObj.put("region_code", point2Obj.getString("region_code"));
regionIoObj.put("region_name", point2Obj.getString("region_name")); regionIoObj.put("region_name", point2Obj.getString("region_name"));
regionIoObj.put("material_id", taskObj.getString("material_id")); regionIoObj.put("material_id", taskObj.getString("material_id"));
regionIoObj.put("vehicle_code", taskObj.getString("vehicle_code")); regionIoObj.put("vehicle_code", taskObj.getString("vehicle_code"));
regionIoObj.put("qty", requestObj.getString("qty")); regionIoObj.put("qty", requestObj.getString("qty"));
regionIoObj.put("bill_status", "3"); regionIoObj.put("ivt_weight", requestObj.getString("weight"));
regionIoObj.put("bill_status", RegionIOEnum.BILL_STATUS_FINISH.getCode());
regionIoObj.put("start_point_code", taskObj.getString("point_code1")); regionIoObj.put("start_point_code", taskObj.getString("point_code1"));
regionIoObj.put("end_point_code", taskObj.getString("point_code3")); regionIoObj.put("end_point_code", taskObj.getString("point_code3"));
regionIoObj.put("create_mode", "2"); regionIoObj.put("create_mode", RegionIOEnum.CREATE_MODE_ACS.getCode());
regionIoObj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd")); regionIoObj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd"));
regionIoObj.put("create_id", SecurityUtils.getCurrentUserId()); regionIoObj.put("create_id", SecurityUtils.getCurrentUserId());
regionIoObj.put("create_name", SecurityUtils.getCurrentNickName()); regionIoObj.put("create_name", SecurityUtils.getCurrentNickName());
@ -149,15 +150,18 @@ public class YzjSendMaterialTask extends AbstractAcsTask {
point2Obj.put("instorage_time", DateUtil.now()); point2Obj.put("instorage_time", DateUtil.now());
point2Obj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd")); point2Obj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd"));
point2Obj.put("ivt_qty", requestObj.getString("qty")); point2Obj.put("ivt_qty", requestObj.getString("qty"));
point2Obj.put("ivt_weight", requestObj.getString("weight"));
point2Obj.put("standing_time", workorderObj.getString("standing_time")); point2Obj.put("standing_time", workorderObj.getString("standing_time"));
point2Obj.put("warn_time", workorderObj.getString("warn_time"));
point2Obj.put("material_id", workorderObj.getString("material_id")); point2Obj.put("material_id", workorderObj.getString("material_id"));
point2Obj.put("vehicle_type", workorderObj.getString("vehicle_type")); point2Obj.put("vehicle_type", workorderObj.getString("vehicle_type"));
point2Obj.put("vehicle_code", taskObj.getString("vehicle_code")); point2Obj.put("vehicle_code", taskObj.getString("vehicle_code"));
point2Obj.put("vehicle_qty", "1"); // 入库为1个载具
point2Obj.put("is_full", requestObj.getString("is_full")); point2Obj.put("is_full", requestObj.getString("is_full"));
point2Obj.put("group_id", taskObj.getString("group_id")); // 组盘标识
// 终点解锁 // 解锁终点
point2Obj.put("lock_type", "1"); point2Obj.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode());
point2Obj.put("point_status", "3"); point2Obj.put("point_status", PointEnum.POINT_STATUS_HAVE_MATERIAL.getCode());
pointTab.update(point2Obj); pointTab.update(point2Obj);
} }
} }
@ -198,8 +202,9 @@ public class YzjSendMaterialTask extends AbstractAcsTask {
.task_status(TaskStatusEnum.SURE_START.getCode()) .task_status(TaskStatusEnum.SURE_START.getCode())
.point_code1(point_code1) .point_code1(point_code1)
.vehicle_code(vehicle_code) .vehicle_code(vehicle_code)
.vehicle_type(workOrderObj.getString("vehicle_type")) .group_id(form.getLong("group_id"))
.material_info_id(workOrderObj.getLong("workorder_id")) .vehicle_type(PointEnum.VEHICLE_TYPE_STEEL_TRAY.getCode())
.workorder_id(workOrderObj.getLong("workorder_id"))
.material_id(workOrderObj.getLong("material_id")) .material_id(workOrderObj.getLong("material_id"))
.handle_class(THIS_CLASS) .handle_class(THIS_CLASS)
.create_time(DateUtil.now()) .create_time(DateUtil.now())
@ -247,11 +252,9 @@ public class YzjSendMaterialTask extends AbstractAcsTask {
//锁住终点 //锁住终点
endPoint.put("task_id", taskObj.getString("task_id")); endPoint.put("task_id", taskObj.getString("task_id"));
endPoint.put("lock_type", "2"); endPoint.put("lock_type", PointEnum.LOCK_TYPE_TRUE.getCode());
pointTab.update(endPoint); pointTab.update(endPoint);
} }
} }
} }
@ -270,7 +273,7 @@ public class YzjSendMaterialTask extends AbstractAcsTask {
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0); JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0);
if (ObjectUtil.isNotEmpty(taskObj)) if (ObjectUtil.isNotEmpty(taskObj))
this.updateTaskStatus(taskObj,"2"); this.updateTaskStatus(taskObj,UpdateTaskStatusEnum.FORCEFINISH.getCode());
else { else {
throw new BadRequestException("未找到该任务或者任务已完成!"); throw new BadRequestException("未找到该任务或者任务已完成!");
} }
@ -286,7 +289,7 @@ public class YzjSendMaterialTask extends AbstractAcsTask {
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0); JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0);
if (ObjectUtil.isNotEmpty(taskObj)) if (ObjectUtil.isNotEmpty(taskObj))
this.updateTaskStatus(taskObj,"0"); this.updateTaskStatus(taskObj,UpdateTaskStatusEnum.CANCEL.getCode());
else { else {
throw new BadRequestException("未找到该任务或者任务已完成!"); throw new BadRequestException("未找到该任务或者任务已完成!");
} }

58
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/wql/QSCH_hnSendMaterial_01.wql

@ -14,9 +14,12 @@
## 表字段对应输入参数 ## 表字段对应输入参数
################################################# #################################################
输入.flag TYPEAS s_string 输入.flag TYPEAS s_string
输入.region_code TYPEAS s_string 输入.region_code TYPEAS s_string
输入.material_id TYPEAS s_string 输入.material_id TYPEAS s_string
输入.vehicle_type TYPEAS s_string 输入.vehicle_type TYPEAS s_string
输入.device_code TYPEAS s_string
输入.point_type TYPEAS s_string
输入.point_status TYPEAS s_string
[临时表] [临时表]
@ -40,7 +43,49 @@
########################################## ##########################################
# 3、业务主过程 # # 3、业务主过程 #
########################################## ##########################################
IF 输入.flag = "1" IF 输入.flag = "1"
QUERY
SELECT
workorder.*
FROM
pdm_bd_workorder workorder
LEFT JOIN pdm_bi_device device ON device.device_code = workorder.device_code
WHERE
workorder.order_status = '3'
AND
device.device_model = '4'
OPTION 输入.material_id <> ""
workorder.material_id = 输入.material_id
ENDOPTION
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "2"
QUERY
SELECT
*
FROM
`sch_base_point`
WHERE
lock_type = '1'
AND region_code = 'KLHJ'
AND is_used = '1'
AND is_delete = '0'
OPTION 输入.material_id <> ""
material_id = 输入.material_id
ENDOPTION
OPTION 输入.point_type <> ""
point_type = 输入.point_type
ENDOPTION
OPTION 输入.point_status <> ""
point_status = 输入.point_status
ENDOPTION
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "3"
QUERY QUERY
SELECT SELECT
p.point_id, p.point_id,
@ -49,13 +94,10 @@ IF 输入.flag = "1"
FROM FROM
SCH_BASE_Point p SCH_BASE_Point p
WHERE WHERE
lock_type = '1' lock_type = '1'
AND is_used = '1' AND is_used = '1'
AND is_delete = '0' AND is_delete = '0'
AND point_status = '1' AND point_status = '1'
OPTION 输入.vehicle_type <> ""
p.can_vehicle_type like 输入.vehicle_type
ENDOPTION
OPTION 输入.region_code <> "" OPTION 输入.region_code <> ""
p.region_code = 输入.region_code p.region_code = 输入.region_code
ENDOPTION ENDOPTION

BIN
lms/nladmin-system/src/main/java/org/nl/wms/wms.xls

Binary file not shown.

4
lms/nladmin-ui/src/views/login.vue

@ -56,8 +56,8 @@ export default {
codeUrl: '', codeUrl: '',
cookiePass: '', cookiePass: '',
loginForm: { loginForm: {
username: 'admin', username: '',
password: '123456', password: '',
rememberMe: false, rememberMe: false,
code: '', code: '',
uuid: '' uuid: ''

Loading…
Cancel
Save