rev
This commit is contained in:
@@ -35,7 +35,7 @@ public class PointUpdateUtil {
|
||||
pointObj.put("weight_unit_id", "");
|
||||
pointObj.put("instorage_time", "");
|
||||
pointObj.put("is_full", "0");
|
||||
pointObj.put("standing_time", "0");
|
||||
pointObj.put("stand_time", "0");
|
||||
pointObj.put("warn_time", "0");
|
||||
pointObj.put("group_id", "");
|
||||
pointTab.update(pointObj);
|
||||
@@ -56,7 +56,7 @@ public class PointUpdateUtil {
|
||||
pointObj.put("ivt_qty", "0");
|
||||
pointObj.put("pcsn", null);
|
||||
pointObj.put("material_id", null);
|
||||
pointObj.put("standing_time", "0");
|
||||
pointObj.put("stand_time", "0");
|
||||
pointTab.update(pointObj);
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ public class MaterialDetailDto implements Serializable {
|
||||
/**
|
||||
* 物料编码
|
||||
*/
|
||||
private String material_code;
|
||||
private String material_number;
|
||||
|
||||
/**
|
||||
* 物料名称
|
||||
|
||||
@@ -5,7 +5,6 @@ import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* @author zhouz
|
||||
@@ -21,9 +20,10 @@ public class MaterialbaseDto implements Serializable {
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long material_id;
|
||||
|
||||
private String material_code;
|
||||
private String material_number;
|
||||
private String material_name;
|
||||
|
||||
private Integer standing_time;
|
||||
private Integer stand_time;
|
||||
|
||||
private Integer threshold_time;
|
||||
|
||||
|
||||
@@ -29,8 +29,6 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author zhouz
|
||||
@@ -50,11 +48,8 @@ public class MaterialbaseServiceImpl implements MaterialbaseService {
|
||||
|
||||
HashMap<String, String> map = new HashMap<>();
|
||||
map.put("flag", "1");
|
||||
map.put("search", name);
|
||||
map.put("material_type", MapUtil.getStr(whereJson, "material_type"));
|
||||
map.put("order_code", MapUtil.getStr(whereJson, "order_code"));
|
||||
map.put("product_grade", MapUtil.getStr(whereJson, "product_grade"));
|
||||
map.put("brick_type", MapUtil.getStr(whereJson, "brick_type"));
|
||||
map.put("material_number", MapUtil.getStr(whereJson, "material_number"));
|
||||
map.put("material_name", MapUtil.getStr(whereJson, "material_name"));
|
||||
|
||||
return WQL.getWO("QMD_ME_MATERIAL").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "create_time DESC");
|
||||
}
|
||||
@@ -81,7 +76,7 @@ public class MaterialbaseServiceImpl implements MaterialbaseService {
|
||||
if (StrUtil.isNotEmpty(code) && code.contains("\\")) {
|
||||
code = code.replace("\\", "\\\\");
|
||||
}
|
||||
JSONObject json = wo.query("material_code ='" + code + "'").uniqueResult(0);
|
||||
JSONObject json = wo.query("material_number ='" + code + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(json)) return null;
|
||||
String unit_name = WQLObject.getWQLObject("md_pb_measureunit").query("measure_unit_id= '" + json.getString("base_unit_id") + "'").uniqueResult(0).getString("unit_name");
|
||||
json.put("base_unit_name", unit_name);
|
||||
@@ -93,10 +88,10 @@ public class MaterialbaseServiceImpl implements MaterialbaseService {
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void create(MaterialbaseDto dto) {
|
||||
WQLObject wo = WQLObject.getWQLObject("md_me_materialbase");
|
||||
String material_code = dto.getMaterial_code();
|
||||
JSONObject material = wo.query("material_code = '" + material_code + "'").uniqueResult(0);
|
||||
String material_number = dto.getMaterial_number();
|
||||
JSONObject material = wo.query("material_number = '" + material_number + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(material)) {
|
||||
throw new BadRequestException("物料编码 [" + material_code + "] 已存在!");
|
||||
throw new BadRequestException("物料号 [" + material_number + "] 已存在!");
|
||||
}
|
||||
|
||||
Long currentUserId = SecurityUtils.getCurrentUserId();
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
输入.order_code TYPEAS s_string
|
||||
输入.product_grade TYPEAS s_string
|
||||
输入.brick_type TYPEAS s_string
|
||||
输入.material_number TYPEAS s_string
|
||||
输入.material_name TYPEAS s_string
|
||||
|
||||
[临时表]
|
||||
--这边列出来的临时表就会在运行期动态创建
|
||||
@@ -53,20 +55,11 @@
|
||||
md_me_materialbase mb
|
||||
WHERE
|
||||
is_delete = '0'
|
||||
OPTION 输入.search <> ""
|
||||
mb.material_code like '%' 输入.search '%'
|
||||
OPTION 输入.material_number <> ""
|
||||
mb.material_number like '%' 输入.material_number '%'
|
||||
ENDOPTION
|
||||
OPTION 输入.material_type <> ""
|
||||
mb.material_type = 输入.material_type
|
||||
ENDOPTION
|
||||
OPTION 输入.order_code <> ""
|
||||
mb.order_code LIKE '%' 输入.order_code '%'
|
||||
ENDOPTION
|
||||
OPTION 输入.product_grade <> ""
|
||||
mb.product_grade LIKE '%' 输入.product_grade '%'
|
||||
ENDOPTION
|
||||
OPTION 输入.brick_type <> ""
|
||||
mb.brick_type LIKE '%' 输入.brick_type '%'
|
||||
OPTION 输入.material_name <> ""
|
||||
mb.material_name = like '%' 输入.material_name '%'
|
||||
ENDOPTION
|
||||
ENDSELECT
|
||||
ENDPAGEQUERY
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
SELECT
|
||||
s.*,
|
||||
d.label AS storagevehicle_type_name,
|
||||
mater.material_code,
|
||||
mater.material_number,
|
||||
mater.material_name,
|
||||
point.point_code,
|
||||
point.point_name
|
||||
|
||||
@@ -712,9 +712,9 @@ public class DashboardService {
|
||||
monthlyFailureStatistics.put("average", average);
|
||||
// 真实获取
|
||||
average.put("mix", mixData.isEmpty() ? 0 : mixData.stream().mapToInt(o -> ((JSONObject) o).getIntValue("count")).sum() / mixData.size());
|
||||
average.put("press", mixData.isEmpty() ? 0 : pressData.stream().mapToInt(o -> ((JSONObject) o).getIntValue("count")).sum() / mixData.size());
|
||||
average.put("dry", mixData.isEmpty() ? 0 : dryData.stream().mapToInt(o -> ((JSONObject) o).getIntValue("count")).sum() / mixData.size());
|
||||
average.put("sort", mixData.isEmpty() ? 0 : sortData.stream().mapToInt(o -> ((JSONObject) o).getIntValue("count")).sum() / mixData.size());
|
||||
average.put("press", pressData.isEmpty() ? 0 : pressData.stream().mapToInt(o -> ((JSONObject) o).getIntValue("count")).sum() / mixData.size());
|
||||
average.put("dry", dryData.isEmpty() ? 0 : dryData.stream().mapToInt(o -> ((JSONObject) o).getIntValue("count")).sum() / mixData.size());
|
||||
average.put("sort", sortData.isEmpty() ? 0 : sortData.stream().mapToInt(o -> ((JSONObject) o).getIntValue("count")).sum() / mixData.size());
|
||||
|
||||
// 当日工序生产统计------------------------------------------------------------------------------------------------
|
||||
JSONObject dailyProductionStatistics = new JSONObject();
|
||||
@@ -776,6 +776,7 @@ public class DashboardService {
|
||||
*
|
||||
* @return 大屏首页设备数据
|
||||
*/
|
||||
@SuppressWarnings("all")
|
||||
public JSONObject homepageEquipment1() {
|
||||
JSONObject result = new JSONObject();
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@ public class AcsToWmsController {
|
||||
RLock lock = SpringContextHolder.getBean(RedissonClient.class).getFairLock(type);
|
||||
boolean try_lock = false;
|
||||
try {
|
||||
try_lock = lock.tryLock(5, TimeUnit.SECONDS);
|
||||
try_lock = lock.tryLock(10, TimeUnit.SECONDS);
|
||||
if (try_lock) {
|
||||
return new ResponseEntity<>(acsToWmsService.apply(whereJson), HttpStatus.OK);
|
||||
}
|
||||
@@ -150,8 +150,8 @@ public class AcsToWmsController {
|
||||
}
|
||||
|
||||
@PostMapping("/getVehicleInfoBycode")
|
||||
@Log("根据设备编码编码获取托盘信息")
|
||||
@ApiOperation("根据设备编码编码获取托盘信息")
|
||||
@Log("根据设备号编码获取托盘信息")
|
||||
@ApiOperation("根据设备号编码获取托盘信息")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> getVehicleInfoByDevice_code(@RequestBody Map whereJson) {
|
||||
return new ResponseEntity<>(acsToWmsService.getVehicleInfoByDeviceCode(whereJson), HttpStatus.OK);
|
||||
@@ -189,4 +189,12 @@ public class AcsToWmsController {
|
||||
public ResponseEntity<Object> inKiln(@RequestBody JSONObject param) {
|
||||
return ResponseEntity.ok(acsToWmsService.inKiln(param));
|
||||
}
|
||||
|
||||
@PostMapping("/reportForWork")
|
||||
@Log("报工")
|
||||
@ApiOperation("报工")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> reportForWork(@RequestBody JSONObject param) {
|
||||
return ResponseEntity.ok(acsToWmsService.reportForWork(param));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,7 +96,7 @@ public interface AcsToWmsService {
|
||||
JSONObject reverseGroup(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 根据设备编码获取托盘信息
|
||||
* 根据设备号获取托盘信息
|
||||
*
|
||||
* @param jsonObject 条件
|
||||
* @return Map<String, Object>
|
||||
@@ -108,4 +108,6 @@ public interface AcsToWmsService {
|
||||
JSONObject outKiln(JSONObject whereJson);
|
||||
|
||||
JSONObject inKiln(JSONObject param);
|
||||
|
||||
JSONObject reportForWork(JSONObject param);
|
||||
}
|
||||
|
||||
@@ -14,37 +14,21 @@ import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.modules.wql.WQL;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.modules.wql.util.SpringContextHolder;
|
||||
import org.nl.wms.basedata.eum.StandStatus;
|
||||
import org.nl.wms.basedata.eum.TrueOrFalse;
|
||||
import org.nl.wms.basedata.eum.VehicleType;
|
||||
import org.nl.wms.basedata.service.dto.VehicleDto;
|
||||
import org.nl.wms.common.PickType;
|
||||
import org.nl.wms.ext.acs.service.AcsToWmsService;
|
||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.pdm.service.WorkordeService;
|
||||
import org.nl.wms.sch.manage.*;
|
||||
import org.nl.wms.sch.task.call.empty.FJCallEmptyTask;
|
||||
import org.nl.wms.sch.task.call.empty.GTKCallEmptyTask;
|
||||
import org.nl.wms.sch.task.call.empty.HLCallEmptyTask;
|
||||
import org.nl.wms.sch.task.call.empty.YZCallEmptyTask;
|
||||
import org.nl.wms.sch.task.call.material.FJCallMaterialTask;
|
||||
import org.nl.wms.sch.task.call.material.SZCallMaterialTask;
|
||||
import org.nl.wms.sch.task.call.material.YZCallMaterialTask;
|
||||
import org.nl.wms.sch.task.send.empty.FJSendEmptyTask;
|
||||
import org.nl.wms.sch.task.send.empty.YZSendEmptyTask;
|
||||
import org.nl.wms.sch.task.send.material.FJSendMaterialTask;
|
||||
import org.nl.wms.sch.task.send.material.HLSendMaterialTask;
|
||||
import org.nl.wms.sch.task.send.material.SZSendMaterialTask;
|
||||
import org.nl.wms.sch.task.call.material.GZCallMaterialTask;
|
||||
import org.nl.wms.sch.task.send.material.YZSendMaterialTask;
|
||||
import org.nl.wms.sch.task.to.pack.BTHCToPackageTask;
|
||||
import org.nl.wms.sch.task.to.pack.FJToPackageTask;
|
||||
import org.nl.wms.sch.task.util.TaskUtils;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
|
||||
@Service
|
||||
@@ -52,37 +36,13 @@ import java.util.Map;
|
||||
@Slf4j
|
||||
public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
|
||||
private final HLCallEmptyTask hlCallEmptyTask;
|
||||
|
||||
private final HLSendMaterialTask hlSendMaterialTask;
|
||||
private final WorkordeService workordeService;
|
||||
|
||||
private final YZCallEmptyTask yzCallEmptyTask;
|
||||
|
||||
private final YZSendMaterialTask yzSendMaterialTask;
|
||||
|
||||
private final SZSendMaterialTask szSendMaterialTask;
|
||||
|
||||
private final FJCallMaterialTask fjCallMaterialTask;
|
||||
|
||||
private final FJSendEmptyTask fjSendEmptyTask;
|
||||
|
||||
private final GTKCallEmptyTask gtkCallEmptyTask;
|
||||
|
||||
private final FJSendMaterialTask fjSendMaterialTask;
|
||||
|
||||
private final FJCallEmptyTask fjCallEmptyTask;
|
||||
|
||||
private final FJToPackageTask fjToPackageTask;
|
||||
|
||||
private final BTHCToPackageTask bthcToPackageTask;
|
||||
|
||||
private final YZCallMaterialTask yzCallMaterialTask;
|
||||
|
||||
private final YZSendEmptyTask yzSendEmptyTask;
|
||||
|
||||
private final SZCallMaterialTask szCallMaterialTask;
|
||||
|
||||
private final WmsToAcsService wmsToAcsService;
|
||||
private final GZCallMaterialTask gzCallMaterialTask;
|
||||
|
||||
/**
|
||||
* task_id:任务标识
|
||||
@@ -207,7 +167,91 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public JSONObject apply(JSONObject param) {
|
||||
return null;
|
||||
String type = param.getString("type");
|
||||
if (StrUtil.isBlank(type)) {
|
||||
throw new BadRequestException("任务类型不能为空!");
|
||||
}
|
||||
String pointCode = param.getString("device_code");
|
||||
if (StrUtil.isBlank(pointCode)) {
|
||||
throw new BadRequestException("点位不能为空!");
|
||||
}
|
||||
|
||||
JSONObject point = param.getJSONObject("point");
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
point = WQLObject
|
||||
.getWQLObject("sch_base_point")
|
||||
.query("is_used = '1' AND point_code = '" + pointCode + "'")
|
||||
.uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
throw new BadRequestException("[" + pointCode + "] 已删除或未启用!");
|
||||
}
|
||||
}
|
||||
|
||||
TaskUtils.isLocked(point);
|
||||
|
||||
JSONObject methodParam = new JSONObject();
|
||||
methodParam.put("point", point);
|
||||
methodParam.put("create_mode", CreateMode.ACSSQ.value());
|
||||
String request_param = param.getString("request_param");
|
||||
if (StrUtil.isBlank(request_param)) {
|
||||
request_param = param.toJSONString();
|
||||
}
|
||||
methodParam.put("request_param", request_param);
|
||||
methodParam.put("create_id", ACSSystem.id);
|
||||
methodParam.put("create_name", ACSSystem.nick_name);
|
||||
|
||||
Region region = Region.get(point.getString("region_code"));
|
||||
String taskCode = null;
|
||||
switch (type) {
|
||||
case "1":
|
||||
// 送料
|
||||
switch (region) {
|
||||
case YZ:
|
||||
methodParam.put("workorder", param.getJSONObject("workorder"));
|
||||
methodParam.put("vd", param.getJSONObject("vd"));
|
||||
taskCode = yzSendMaterialTask.createTask(methodParam);
|
||||
break;
|
||||
default:
|
||||
throw new BadRequestException("[" + region.label() + "] 不能发起送料任务!");
|
||||
}
|
||||
break;
|
||||
case "2":
|
||||
// 叫料
|
||||
switch (region) {
|
||||
case GZ:
|
||||
taskCode = gzCallMaterialTask.createTask(methodParam);
|
||||
break;
|
||||
default:
|
||||
throw new BadRequestException("[" + region.label() + "] 不能发起叫料任务!");
|
||||
}
|
||||
break;
|
||||
case "3":
|
||||
// 送空
|
||||
break;
|
||||
case "4":
|
||||
// 叫空
|
||||
JSONObject workOrder = WQLObject
|
||||
.getWQLObject("pdm_bd_workorder")
|
||||
.query("is_delete = '0' AND device_code = '" + point.getString("device_code") + "' AND order_status = '3'")
|
||||
.uniqueResult(0);
|
||||
methodParam.put("workorder", workOrder);
|
||||
|
||||
switch (region) {
|
||||
case YZ:
|
||||
taskCode = yzCallEmptyTask.createTask(methodParam);
|
||||
break;
|
||||
default:
|
||||
throw new BadRequestException("[" + region.label() + "] 不能发起叫空任务!");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw new BadRequestException("未知任务类型!");
|
||||
}
|
||||
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("message", "申请任务成功,任务编码 [" + taskCode + "]");
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -263,7 +307,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
vd.put("vehicle_code", vehicle_code);
|
||||
vd.put("material_id", workorder.getString("material_id"));
|
||||
vd.put("qty", qty);
|
||||
vd.put("weight", weight);
|
||||
vd.put("weight", Long.parseLong(weight) / 1000.00);
|
||||
vd.put("is_full", is_full);
|
||||
vd.put("workorder_id", workorder.getString("workorder_id"));
|
||||
vd.put("point_code", point_code);
|
||||
@@ -395,52 +439,83 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
if (StrUtil.isEmpty(type)) {
|
||||
throw new BadRequestException("类型不能为空!");
|
||||
}
|
||||
String workorder_code = jsonObject.getString("workorder_code");
|
||||
if (StrUtil.isEmpty(type)) {
|
||||
throw new BadRequestException("工单编码不能为空!");
|
||||
String WorkOrderCode = jsonObject.getString("workorder_code");
|
||||
if (StrUtil.isEmpty(WorkOrderCode)) {
|
||||
throw new BadRequestException("工单号不能为空!");
|
||||
}
|
||||
WQLObject workorder_table = WQLObject.getWQLObject("pdm_bd_workorder");
|
||||
JSONObject workorder = workorder_table
|
||||
.query("workorder_code = '" + workorder_code + "'")
|
||||
WQLObject workOrderTable = WQLObject.getWQLObject("pdm_bd_workorder");
|
||||
JSONObject workOrder = workOrderTable
|
||||
.query("workorder_code = '" + WorkOrderCode + "'")
|
||||
.uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(workOrder)) {
|
||||
throw new BadRequestException("工单不存在!");
|
||||
}
|
||||
long workOrderId = workOrder.getLongValue("workorder_id");
|
||||
|
||||
if ("1".equals(type)) {
|
||||
// 排产确认
|
||||
if (workorder.getIntValue("order_status") < 3) {
|
||||
workorder.put("order_status", WorkOrderEnum.ORDER_STATUS_PRODUCING.value());
|
||||
workorder.put("realproducestart_date", DateUtil.now());
|
||||
TaskUtils.addACSUpdateColum(workorder);
|
||||
workorder_table.update(workorder);
|
||||
}
|
||||
} else if ("2".equals(type)) {
|
||||
// 工单完成
|
||||
String qty = jsonObject.getString("qty");
|
||||
if (StrUtil.isBlank(qty)) {
|
||||
throw new BadRequestException("数量不能为空!");
|
||||
}
|
||||
switch (type) {
|
||||
case "1":
|
||||
// 工单确认
|
||||
workOrder.put("order_status", WorkOrderEnum.ORDER_STATUS_PRODUCING.value());
|
||||
workOrder.put("realproducestart_date", DateUtil.now());
|
||||
TaskUtils.addACSUpdateColum(workOrder);
|
||||
workOrderTable.update(workOrder);
|
||||
break;
|
||||
case "2":
|
||||
// 工单完成
|
||||
{
|
||||
int qty = jsonObject.getIntValue("qty");
|
||||
int qualifiedQty = jsonObject.getIntValue("qualified_qty");
|
||||
int unqualifiedQty = jsonObject.getIntValue("unqualified_qty");
|
||||
int weightG = jsonObject.getIntValue("weight");
|
||||
double weightKG = weightG / 1000.00;
|
||||
int avgPieceWeightG = jsonObject.getIntValue("avg_piece_weight");
|
||||
double avgPieceWeightKG = avgPieceWeightG / 1000.00;
|
||||
|
||||
if (workorder.getIntValue("order_status") < 5) {
|
||||
workorder.put("order_status", WorkOrderEnum.ORDER_STATUS_FINISH.value());
|
||||
if (!"0".equals(qty)) {
|
||||
workorder.put("real_qty", qty);
|
||||
} else {
|
||||
workorder.put("real_qty", workorder.getIntValue("unqualified_qty") + workorder.getIntValue("qualified_qty"));
|
||||
}
|
||||
String unqualified_qty = jsonObject.getString("unqualified_qty");
|
||||
if (StrUtil.isNotBlank(unqualified_qty) && !"0".equals(unqualified_qty)) {
|
||||
workorder.put("unqualified_qty", unqualified_qty);
|
||||
}
|
||||
String qualified_qty = jsonObject.getString("qualified_qty");
|
||||
if (StrUtil.isNotBlank(qualified_qty) && !"0".equals(qualified_qty)) {
|
||||
workorder.put("qualified_qty", qualified_qty);
|
||||
} else {
|
||||
workorder.put("qualified_qty", workorder.getIntValue("real_qty") - workorder.getIntValue("unqualified_qty"));
|
||||
}
|
||||
// 报工
|
||||
workordeService.reportWorkOrderDaily(workOrderId, qty, qualifiedQty, unqualifiedQty, weightKG, avgPieceWeightKG);
|
||||
|
||||
workorder.put("realproduceend_date", DateUtil.now());
|
||||
TaskUtils.addACSUpdateColum(workorder);
|
||||
workorder_table.update(workorder);
|
||||
// 汇总
|
||||
JSONArray workOrderDailyList = WQLObject.getWQLObject("pdm_bd_work_order_daily").query("workorder_id = " + workOrderId).getResultJSONArray(0);
|
||||
workOrder.put("real_qty", workOrderDailyList.stream().mapToInt(o -> ((JSONObject) o).getIntValue("qty")).sum());
|
||||
workOrder.put("real_weight", workOrderDailyList.stream().mapToDouble(o -> ((JSONObject) o).getDoubleValue("weight")).sum());
|
||||
workOrder.put("qualified_qty", workOrderDailyList.stream().mapToInt(o -> ((JSONObject) o).getIntValue("qualified_qty")).sum());
|
||||
workOrder.put("unqualified_qty", workOrderDailyList.stream().mapToInt(o -> ((JSONObject) o).getIntValue("unqualified_qty")).sum());
|
||||
workOrder.put("avg_piece_weight", workOrderDailyList.stream().mapToDouble(o -> ((JSONObject) o).getDoubleValue("avg_piece_weight")).sum() / workOrderDailyList.size());
|
||||
workOrder.put("order_status", WorkOrderEnum.ORDER_STATUS_FINISH.value());
|
||||
workOrder.put("realproduceend_date", DateUtil.now());
|
||||
TaskUtils.addACSUpdateColum(workOrder);
|
||||
workOrderTable.update(workOrder);
|
||||
}
|
||||
break;
|
||||
case "3":
|
||||
// 工单暂停
|
||||
{
|
||||
int qty = jsonObject.getIntValue("qty");
|
||||
int qualifiedQty = jsonObject.getIntValue("qualified_qty");
|
||||
int unqualifiedQty = jsonObject.getIntValue("unqualified_qty");
|
||||
int weightG = jsonObject.getIntValue("weight");
|
||||
double weightKG = weightG / 1000.00;
|
||||
int avgPieceWeightG = jsonObject.getIntValue("avg_piece_weight");
|
||||
double avgPieceWeightKG = avgPieceWeightG / 1000.00;
|
||||
|
||||
// 报工
|
||||
workordeService.reportWorkOrderDaily(workOrderId, qty, qualifiedQty, unqualifiedQty, weightKG, avgPieceWeightKG);
|
||||
|
||||
// 汇总
|
||||
JSONArray workOrderDailyList = WQLObject.getWQLObject("pdm_bd_work_order_daily").query("workorder_id = " + workOrderId).getResultJSONArray(0);
|
||||
workOrder.put("real_qty", workOrderDailyList.stream().mapToInt(o -> ((JSONObject) o).getIntValue("qty")).sum());
|
||||
workOrder.put("real_weight", workOrderDailyList.stream().mapToDouble(o -> ((JSONObject) o).getDoubleValue("weight")).sum());
|
||||
workOrder.put("qualified_qty", workOrderDailyList.stream().mapToInt(o -> ((JSONObject) o).getIntValue("qualified_qty")).sum());
|
||||
workOrder.put("unqualified_qty", workOrderDailyList.stream().mapToInt(o -> ((JSONObject) o).getIntValue("unqualified_qty")).sum());
|
||||
workOrder.put("avg_piece_weight", workOrderDailyList.stream().mapToDouble(o -> ((JSONObject) o).getDoubleValue("avg_piece_weight")).sum() / workOrderDailyList.size());
|
||||
workOrder.put("order_status", WorkOrderEnum.ORDER_STATUS_STOP.value());
|
||||
workOrder.put("realproduceend_date", DateUtil.now());
|
||||
TaskUtils.addACSUpdateColum(workOrder);
|
||||
workOrderTable.update(workOrder);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw new BadRequestException("未知操作类型!");
|
||||
}
|
||||
|
||||
JSONObject result = new JSONObject();
|
||||
@@ -475,27 +550,42 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
/**
|
||||
* 入窑口反向组盘
|
||||
*
|
||||
* @param whereJson
|
||||
* @param param
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public JSONObject reverseGroup(JSONObject whereJson) {
|
||||
String vehicle_code = whereJson.getString("vehicle_code");
|
||||
if (StrUtil.isBlank(vehicle_code)) {
|
||||
public JSONObject reverseGroup(JSONObject param) {
|
||||
String vehicle_code = TaskUtils.formatVehicleCode(param.getString("vehicle_code"));
|
||||
if ("0000".equals(vehicle_code)) {
|
||||
throw new BadRequestException("条码不能为空!");
|
||||
}
|
||||
String task_code = whereJson.getString("task_code");
|
||||
if (StrUtil.isBlank(task_code)) {
|
||||
throw new BadRequestException("任务编码不能为空!");
|
||||
String device_code = param.getString("device_code");
|
||||
if (StrUtil.isBlank(device_code)) {
|
||||
throw new BadRequestException("设备号不能为空!");
|
||||
}
|
||||
|
||||
JSONObject task = WQLObject.getWQLObject("sch_base_task").query("task_code = '" + task_code + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(task)) {
|
||||
throw new BadRequestException("未查询到任务 [" + task_code + "] !");
|
||||
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
|
||||
JSONObject point = pointTable.query("point_code = '" + device_code + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
throw new BadRequestException("[" + device_code + "] 点位不存在!");
|
||||
}
|
||||
// 等待任务完成
|
||||
TaskUtils.isLocked(point);
|
||||
|
||||
String vdId = point.getString("vd_id");
|
||||
if (StrUtil.isNotBlank(vdId)) {
|
||||
JSONObject vdUpdate = new JSONObject();
|
||||
vdUpdate.put("vehicle_code", vehicle_code);
|
||||
WQLObject.getWQLObject("st_ivt_vehicle_detail").update(vdUpdate, "vd_id = " + vdId);
|
||||
|
||||
// 解绑点位防止人工放料出错
|
||||
point.put("vehicle_type", "");
|
||||
point.put("vehicle_code", "");
|
||||
point.put("vd_id", null);
|
||||
point.put("point_status", PointStatus.EMPTY.value());
|
||||
TaskUtils.addACSUpdateColum(point);
|
||||
pointTable.update(point);
|
||||
}
|
||||
JSONObject vd_update = new JSONObject();
|
||||
vd_update.put("vehicle_code", vehicle_code);
|
||||
WQLObject.getWQLObject("st_ivt_vehicle_detail").update(vd_update, "vd_id = " + task.getString("group_id"));
|
||||
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
@@ -504,7 +594,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据设备编码获取托盘信息
|
||||
* 根据设备号获取托盘信息
|
||||
*
|
||||
* @param jsonObject 条件
|
||||
* @return Map<String, Object>
|
||||
@@ -622,12 +712,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
.query("is_delete = '0' AND vehicle_type = '2' AND vehicle_code = '" + vehicle_code + "'")
|
||||
.uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(vd)) {
|
||||
vd.put("is_fire", "1");
|
||||
vd.put("is_in_kiln", "0");
|
||||
vd_table.update(vd);
|
||||
|
||||
JSONObject workorder = WQLObject.getWQLObject("pdm_bd_workorder").query("workorder_id = " + vd.getString("workorder_id")).uniqueResult(0);
|
||||
to_package = TrueOrFalse.trueOrFalse(workorder.getString("is_pri"));
|
||||
|
||||
vd.put("out_kiln_time", DateUtil.now());
|
||||
TaskUtils.addACSUpdateColum(vd);
|
||||
vd_table.update(vd);
|
||||
}
|
||||
|
||||
JSONObject result = new JSONObject();
|
||||
@@ -645,13 +735,25 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
@Override
|
||||
public JSONObject inKiln(JSONObject param) {
|
||||
String vehicle_code = TaskUtils.formatVehicleCode(param.getString("vehicle_code"));
|
||||
if (StrUtil.isNotBlank(vehicle_code)) {
|
||||
String kiln_number = param.getString("kiln_number");
|
||||
if (StrUtil.isNotBlank(kiln_number)) {
|
||||
JSONObject vd_update = new JSONObject();
|
||||
vd_update.put("kiln_number", "Y0" + kiln_number);
|
||||
vd_update.put("in_kiln_time", DateUtil.now());
|
||||
WQLObject.getWQLObject("st_ivt_vehicle_detail").update(vd_update, "is_delete = '0' AND vehicle_code = '" + vehicle_code + "'");
|
||||
if (!"0000".equals(vehicle_code)) {
|
||||
String type = param.getString("type");
|
||||
if ("1".equals(type)) {
|
||||
String kilnNumber = param.getString("kiln_number");
|
||||
if (StrUtil.isNotBlank(kilnNumber) && !"0".equals(kilnNumber)) {
|
||||
JSONObject vd_update = new JSONObject();
|
||||
vd_update.put("kiln_number", "Y0" + kilnNumber);
|
||||
vd_update.put("in_kiln_time", DateUtil.now());
|
||||
TaskUtils.addACSUpdateColum(vd_update);
|
||||
WQLObject.getWQLObject("st_ivt_vehicle_detail").update(vd_update, "is_delete = '0' AND vehicle_code = '" + vehicle_code + "'");
|
||||
}
|
||||
} else if ("2".equals(type)) {
|
||||
String coolNumber = param.getString("cool_number");
|
||||
if (StrUtil.isNotBlank(coolNumber) && !"0".equals(coolNumber)) {
|
||||
JSONObject vd_update = new JSONObject();
|
||||
vd_update.put("cool_number", "LQD0" + coolNumber);
|
||||
TaskUtils.addACSUpdateColum(vd_update);
|
||||
WQLObject.getWQLObject("st_ivt_vehicle_detail").update(vd_update, "is_delete = '0' AND vehicle_code = '" + vehicle_code + "'");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -660,4 +762,67 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
result.put("message", "反馈成功!");
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject reportForWork(JSONObject param) {
|
||||
String WorkOrderCode = param.getString("workorder_code");
|
||||
if (StrUtil.isEmpty(WorkOrderCode)) {
|
||||
throw new BadRequestException("工单号不能为空!");
|
||||
}
|
||||
WQLObject workOrderTable = WQLObject.getWQLObject("pdm_bd_workorder");
|
||||
JSONObject workOrder = workOrderTable
|
||||
.query("workorder_code = '" + WorkOrderCode + "'")
|
||||
.uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(workOrder)) {
|
||||
throw new BadRequestException("工单不存在!");
|
||||
}
|
||||
long workOrderId = workOrder.getLongValue("workorder_id");
|
||||
int qty = param.getIntValue("qty");
|
||||
int qualifiedQty = param.getIntValue("qualified_qty");
|
||||
int unqualifiedQty = param.getIntValue("unqualified_qty");
|
||||
int weightG = param.getIntValue("weight");
|
||||
double weightKG = weightG / 1000.00;
|
||||
int avgPieceWeightG = param.getIntValue("avg_piece_weight");
|
||||
double avgPieceWeightKG = avgPieceWeightG / 1000.00;
|
||||
|
||||
String today = DateUtil.today();
|
||||
WQLObject wodTable = WQLObject.getWQLObject("pdm_bd_work_order_daily");
|
||||
JSONObject workOrderDaily = wodTable.query("workorder_id = " + workOrderId + " AND date = '" + today + "'").uniqueResult(0);
|
||||
|
||||
if (ObjectUtil.isEmpty(workOrderDaily)) {
|
||||
workOrderDaily = new JSONObject();
|
||||
workOrderDaily.put("id", IdUtil.getSnowflake().nextId());
|
||||
workOrderDaily.put("date", today);
|
||||
workOrderDaily.put("workorder_id", workOrderId);
|
||||
workOrderDaily.put("qty", qty);
|
||||
workOrderDaily.put("qualified_qty", qualifiedQty);
|
||||
workOrderDaily.put("unqualified_qty", unqualifiedQty);
|
||||
workOrderDaily.put("weight", weightKG);
|
||||
workOrderDaily.put("avg_piece_weight", avgPieceWeightKG);
|
||||
workOrderDaily.put("is_report", TrueOrFalse.TRUE.value());
|
||||
TaskUtils.addACSCreateColum(workOrderDaily);
|
||||
wodTable.insert(workOrderDaily);
|
||||
} else {
|
||||
if ("1".equals(workOrderDaily.getString("is_report"))) {
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("status", HttpStatus.CREATED.value());
|
||||
result.put("message", "当日已报工!");
|
||||
return result;
|
||||
}
|
||||
|
||||
workOrderDaily.put("qty", qty);
|
||||
workOrderDaily.put("qualified_qty", qualifiedQty);
|
||||
workOrderDaily.put("unqualified_qty", unqualifiedQty);
|
||||
workOrderDaily.put("weight", weightKG);
|
||||
workOrderDaily.put("avg_piece_weight", avgPieceWeightKG);
|
||||
workOrderDaily.put("is_report", TrueOrFalse.TRUE.value());
|
||||
TaskUtils.addACSUpdateColum(workOrderDaily);
|
||||
wodTable.update(workOrderDaily);
|
||||
}
|
||||
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "反馈成功!");
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
QUERY
|
||||
SELECT
|
||||
vd.is_package,
|
||||
material.material_code,
|
||||
material.material_number,
|
||||
material.furnace,
|
||||
material.material_brick_type,
|
||||
material.product_grade,
|
||||
|
||||
@@ -32,7 +32,7 @@ public interface PdaService {
|
||||
* 查询设备
|
||||
*
|
||||
* @param func 手持功能
|
||||
* @return 设备编码 设备名称
|
||||
* @return 设备号 设备名称
|
||||
*/
|
||||
JSONArray device(String func);
|
||||
|
||||
@@ -47,7 +47,7 @@ public interface PdaService {
|
||||
/**
|
||||
* 不合格品上报
|
||||
*
|
||||
* @param device_code 设备编码
|
||||
* @param device_code 设备号
|
||||
* @param unqualified_qty 不合格数量
|
||||
*/
|
||||
void report(String device_code, String unqualified_qty);
|
||||
@@ -120,7 +120,7 @@ public interface PdaService {
|
||||
/**
|
||||
* 呼叫次品料
|
||||
*
|
||||
* @param device_code 设备编码
|
||||
* @param device_code 设备号
|
||||
*/
|
||||
void callDefective(String device_code, String request_param);
|
||||
}
|
||||
|
||||
@@ -126,4 +126,6 @@ public interface WorkordeService {
|
||||
JSONArray getMaterial();
|
||||
|
||||
void downloadExcel(Map<String, Object> params, HttpServletResponse response);
|
||||
|
||||
void reportWorkOrderDaily(long workOrderId, int qty, int qualifiedQty, int unqualifiedQty, double weight, double avgPieceWeight);
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ public class DeviceDto implements Serializable {
|
||||
private Long device_id;
|
||||
|
||||
/**
|
||||
* 设备编码
|
||||
* 设备号
|
||||
*/
|
||||
private String device_code;
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@ public class WorkorderDto implements Serializable {
|
||||
/** 回传MES状态 */
|
||||
private String passback_status;
|
||||
|
||||
/** 设备编码 */
|
||||
/** 设备号 */
|
||||
private String device_code;
|
||||
|
||||
/** 外部标识 */
|
||||
@@ -96,7 +96,7 @@ public class WorkorderDto implements Serializable {
|
||||
private String update_time;
|
||||
|
||||
/** 静置时间 */
|
||||
private String standing_time;
|
||||
private String stand_time;
|
||||
|
||||
/** 阈值时间 */
|
||||
private String warn_time;
|
||||
@@ -112,4 +112,10 @@ public class WorkorderDto implements Serializable {
|
||||
private String region_code;
|
||||
|
||||
private String plan_date;
|
||||
|
||||
private BigDecimal plan_weight;
|
||||
|
||||
private BigDecimal real_weight;
|
||||
|
||||
private BigDecimal avg_piece_weight;
|
||||
}
|
||||
|
||||
@@ -19,12 +19,10 @@ import org.nl.modules.wql.WQL;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.modules.wql.util.WqlUtil;
|
||||
import org.nl.wms.basedata.eum.TrueOrFalse;
|
||||
import org.nl.wms.basedata.eum.VehicleType;
|
||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.pdm.service.WorkordeService;
|
||||
import org.nl.wms.pdm.service.dto.WorkorderDto;
|
||||
import org.nl.wms.sch.manage.Region;
|
||||
import org.nl.wms.sch.manage.RegionInType;
|
||||
import org.nl.wms.sch.manage.WorkOrderEnum;
|
||||
import org.nl.wms.sch.task.util.TaskUtils;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
@@ -34,7 +32,6 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -127,15 +124,7 @@ public class WorkorderServiceImpl implements WorkordeService {
|
||||
work_order.put("planproducestart_date", dto.getPlanproducestart_date());
|
||||
work_order.put("planproduceend_date", dto.getPlanproduceend_date());
|
||||
work_order.put("material_id", dto.getMaterial_id());
|
||||
String region_code = dto.getRegion_code();
|
||||
String vehicle_type = dto.getVehicle_type();
|
||||
if (!Region.FJ.value().equals(region_code)) {
|
||||
if (Region.YZ.value().equals(region_code)) {
|
||||
vehicle_type = VehicleType.STEEL_TRAY.value();
|
||||
} else if (Region.HL.value().equals(region_code)) {
|
||||
vehicle_type = VehicleType.CUP.value();
|
||||
}
|
||||
}
|
||||
work_order.put("vehicle_type", vehicle_type);
|
||||
work_order.put("device_id", dto.getDevice_id());
|
||||
work_order.put("device_code", dto.getDevice_code());
|
||||
@@ -145,6 +134,7 @@ public class WorkorderServiceImpl implements WorkordeService {
|
||||
work_order.put("ext_code", dto.getExt_code());
|
||||
work_order.put("is_delete", TrueOrFalse.FALSE.value());
|
||||
work_order.put("plan_date", dto.getPlan_date());
|
||||
work_order.put("plan_weight", dto.getPlan_weight());
|
||||
Long user_id = SecurityUtils.getCurrentUserId();
|
||||
String nick_name = SecurityUtils.getCurrentNickName();
|
||||
String now = DateUtil.now();
|
||||
@@ -209,8 +199,20 @@ public class WorkorderServiceImpl implements WorkordeService {
|
||||
.addParam("workorder_id", workorder_id)
|
||||
.process()
|
||||
.uniqueResult(0);
|
||||
if (submit_obj.getIntValue("order_status") > 2) {
|
||||
throw new BadRequestException("工单已开工!");
|
||||
int orderStatus = submit_obj.getIntValue("order_status");
|
||||
if (orderStatus == 3) {
|
||||
throw new BadRequestException("工单已在生产中!");
|
||||
}
|
||||
if (orderStatus == 5) {
|
||||
throw new BadRequestException("工单已完成!");
|
||||
}
|
||||
int product_code = submit_obj.getIntValue("product_code");
|
||||
int a = submit_obj.getIntValue("a");
|
||||
int b = submit_obj.getIntValue("b");
|
||||
int h = submit_obj.getIntValue("h");
|
||||
int w = submit_obj.getIntValue("w");
|
||||
if (product_code == 0 || a == 0 || b == 0 || h == 0 || w == 0) {
|
||||
throw new BadRequestException("工单所生产物料的砖型参数未正确配置!");
|
||||
}
|
||||
|
||||
JSONObject workorder = WQLObject
|
||||
@@ -222,29 +224,34 @@ public class WorkorderServiceImpl implements WorkordeService {
|
||||
}
|
||||
|
||||
if (Region.HL.value().equals(submit_obj.getString("region_code"))) {
|
||||
String material_code = submit_obj.getString("material_code");
|
||||
submit_obj.put("material_code", material_code.substring(5, 11));
|
||||
}
|
||||
JSONObject order_update = new JSONObject();
|
||||
order_update.put("order_status", WorkOrderEnum.ORDER_STATUS_PRODUCING.value());
|
||||
TaskUtils.addCurrentUpdateColum(order_update);
|
||||
WQLObject
|
||||
.getWQLObject("pdm_bd_workorder")
|
||||
.update(order_update, "workorder_id = " + workorder_id);
|
||||
} else {
|
||||
|
||||
JSONArray request = new JSONArray();
|
||||
request.add(submit_obj);
|
||||
Map<String, Object> result;
|
||||
try {
|
||||
result = wmsToAcsService.order(request);
|
||||
} catch (Exception e) {
|
||||
log.error("工单开工报错!", e);
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
if (HttpStatus.OK.value() != MapUtil.getInt(result, "status")) {
|
||||
throw new BadRequestException(String.valueOf(result.get("message")));
|
||||
}
|
||||
JSONArray request = new JSONArray();
|
||||
request.add(submit_obj);
|
||||
Map<String, Object> result;
|
||||
try {
|
||||
result = wmsToAcsService.order(request);
|
||||
} catch (Exception e) {
|
||||
log.error("工单开工报错!", e);
|
||||
throw new BadRequestException(e.getMessage());
|
||||
}
|
||||
if (HttpStatus.OK.value() != MapUtil.getInt(result, "status")) {
|
||||
throw new BadRequestException(String.valueOf(result.get("message")));
|
||||
}
|
||||
|
||||
JSONObject order_update = new JSONObject();
|
||||
order_update.put("order_status", WorkOrderEnum.ORDER_STATUS_DELIVERED.value());
|
||||
TaskUtils.addCurrentUpdateColum(order_update);
|
||||
WQLObject
|
||||
.getWQLObject("pdm_bd_workorder")
|
||||
.update(order_update, "workorder_id = " + workorder_id);
|
||||
JSONObject order_update = new JSONObject();
|
||||
order_update.put("order_status", WorkOrderEnum.ORDER_STATUS_DELIVERED.value());
|
||||
TaskUtils.addCurrentUpdateColum(order_update);
|
||||
WQLObject
|
||||
.getWQLObject("pdm_bd_workorder")
|
||||
.update(order_update, "workorder_id = " + workorder_id);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -307,7 +314,7 @@ public class WorkorderServiceImpl implements WorkordeService {
|
||||
String workprocedure_id = row.getString("workprocedure_id");
|
||||
String produceorder_code = row.getString("produceorder_code");
|
||||
String material_id = row.getString("material_id");
|
||||
String material_code = row.getString("material_code");
|
||||
String material_number = row.getString("material_number");
|
||||
String material_name = row.getString("material_name");
|
||||
String material_spec = row.getString("material_spec");
|
||||
String is_needmove = row.getString("is_needmove");
|
||||
@@ -323,7 +330,7 @@ public class WorkorderServiceImpl implements WorkordeService {
|
||||
produceorderMap.put("update_optid", currentUserId);
|
||||
produceorderMap.put("update_optname", nickName);
|
||||
produceorderMap.put("update_time", now);
|
||||
if (order_status.equals("01")){
|
||||
if (order_status.equals("01")) {
|
||||
produceorderMap.put("realproducestart_date", now);
|
||||
}
|
||||
wo.update(produceorderMap);
|
||||
@@ -346,15 +353,15 @@ public class WorkorderServiceImpl implements WorkordeService {
|
||||
// TODO
|
||||
JSONArray array = new JSONArray();
|
||||
JSONObject acsObj = new JSONObject();
|
||||
acsObj.put("ext_order_id",workorder_id);
|
||||
acsObj.put("is_needmove",is_needmove);
|
||||
acsObj.put("order_code",produceorder_code);
|
||||
acsObj.put("qty",plan_qty);
|
||||
acsObj.put("material_uuid",material_id);
|
||||
acsObj.put("material_code",material_code);
|
||||
acsObj.put("material_name",material_name);
|
||||
acsObj.put("material_spec",material_spec);
|
||||
acsObj.put("device_code",device_code);
|
||||
acsObj.put("ext_order_id", workorder_id);
|
||||
acsObj.put("is_needmove", is_needmove);
|
||||
acsObj.put("order_code", produceorder_code);
|
||||
acsObj.put("qty", plan_qty);
|
||||
acsObj.put("material_uuid", material_id);
|
||||
acsObj.put("material_number", material_number);
|
||||
acsObj.put("material_name", material_name);
|
||||
acsObj.put("material_spec", material_spec);
|
||||
acsObj.put("device_code", device_code);
|
||||
array.add(acsObj);
|
||||
wmsToAcsService.order(array);
|
||||
} else {
|
||||
@@ -372,8 +379,8 @@ public class WorkorderServiceImpl implements WorkordeService {
|
||||
// TODO
|
||||
JSONArray array = new JSONArray();
|
||||
JSONObject map = new JSONObject();
|
||||
map.put("ext_order_id",workorder_id);
|
||||
map.put("type","2");
|
||||
map.put("ext_order_id", workorder_id);
|
||||
map.put("type", "2");
|
||||
array.add(map);
|
||||
wmsToAcsService.orderStatusUpdate(array);
|
||||
}
|
||||
@@ -395,12 +402,12 @@ public class WorkorderServiceImpl implements WorkordeService {
|
||||
WQLObject wo = WQLObject.getWQLObject("PDM_BD_WORKORDER");
|
||||
JSONObject jsonObject = wo.query("workorder_id = '" + workorder_id + "'").uniqueResult(0);
|
||||
JSONObject produceorderMap = new JSONObject();
|
||||
produceorderMap.put("workorder_id",workorder_id);
|
||||
if (row.getString("report_qty").equals("0") || StrUtil.isEmpty(row.getString("report_qty"))){
|
||||
produceorderMap.put("report_qty",report_qty);
|
||||
}else {
|
||||
produceorderMap.put("workorder_id", workorder_id);
|
||||
if (row.getString("report_qty").equals("0") || StrUtil.isEmpty(row.getString("report_qty"))) {
|
||||
produceorderMap.put("report_qty", report_qty);
|
||||
} else {
|
||||
Integer sum = Integer.parseInt(row.getString("report_qty")) + Integer.parseInt(report_qty);
|
||||
produceorderMap.put("report_qty",sum);
|
||||
produceorderMap.put("report_qty", sum);
|
||||
}
|
||||
produceorderMap.put("order_status", "03");
|
||||
produceorderMap.put("update_optid", currentUserId);
|
||||
@@ -410,20 +417,20 @@ public class WorkorderServiceImpl implements WorkordeService {
|
||||
//同时修改这条工单对应的记录表中最新的一条数据的报工数量
|
||||
WQLObject wo_record = WQLObject.getWQLObject("MPS_BD_MacOperateRecord");
|
||||
//获取最新的工单的对应记录信息
|
||||
JSONObject newRecord = wo_record.query("workorder_id = '"+workorder_id+"' and (operatetime_end is null or operatetime_end = '')").uniqueResult(0);
|
||||
newRecord.put("report_qty",report_qty);
|
||||
newRecord.put("finish_qty",jsonObject.getString("real_qty"));
|
||||
JSONObject newRecord = wo_record.query("workorder_id = '" + workorder_id + "' and (operatetime_end is null or operatetime_end = '')").uniqueResult(0);
|
||||
newRecord.put("report_qty", report_qty);
|
||||
newRecord.put("finish_qty", jsonObject.getString("real_qty"));
|
||||
Integer finishproduct_qty = Integer.parseInt(jsonObject.getString("real_qty")) - Integer.parseInt(newRecord.getString("init_qty"));
|
||||
newRecord.put("finishproduct_qty",finishproduct_qty);
|
||||
newRecord.put("operatetime_end",now);
|
||||
newRecord.put("finishproduct_qty", finishproduct_qty);
|
||||
newRecord.put("operatetime_end", now);
|
||||
wo_record.update(newRecord);
|
||||
//wms向acs发送请求 工单暂停
|
||||
// 报工的时候同时向acs发送工单暂停状态
|
||||
// TODO
|
||||
JSONArray array = new JSONArray();
|
||||
JSONObject map = new JSONObject();
|
||||
map.put("ext_order_id",workorder_id);
|
||||
map.put("type","1");
|
||||
map.put("ext_order_id", workorder_id);
|
||||
map.put("type", "1");
|
||||
array.add(map);
|
||||
wmsToAcsService.orderStatusUpdate(array);
|
||||
}
|
||||
@@ -468,11 +475,11 @@ public class WorkorderServiceImpl implements WorkordeService {
|
||||
JSONObject jsonProduceShiftOrder = wo.query("workorder_id = '" + workorder_id + "'").uniqueResult(0);
|
||||
WQLObject wo_record = WQLObject.getWQLObject("MPS_BD_MacOperateRecord");
|
||||
//获取最新的工单的对应记录信息
|
||||
JSONObject jsonObject = wo_record.query("workorder_id = '"+workorder_id+"' and (operatetime_end is null or operatetime_end = '')").uniqueResult(0);
|
||||
JSONObject jsonObject = wo_record.query("workorder_id = '" + workorder_id + "' and (operatetime_end is null or operatetime_end = '')").uniqueResult(0);
|
||||
String finish_qty = jsonProduceShiftOrder.getString("real_qty");
|
||||
jsonObject.put("finish_qty",finish_qty);
|
||||
jsonObject.put("finish_qty", finish_qty);
|
||||
Integer finishproduct_qty = Integer.parseInt(finish_qty) - Integer.parseInt(jsonObject.getString("init_qty"));
|
||||
jsonObject.put("finishproduct_qty",finishproduct_qty);
|
||||
jsonObject.put("finishproduct_qty", finishproduct_qty);
|
||||
return jsonObject;
|
||||
}
|
||||
|
||||
@@ -486,8 +493,8 @@ public class WorkorderServiceImpl implements WorkordeService {
|
||||
public JSONArray getDtl(JSONObject param) {
|
||||
final String workorder_id = param.getString("workorder_id");
|
||||
JSONObject map = new JSONObject();
|
||||
map.put("flag","5");
|
||||
map.put("workorder_id",workorder_id);
|
||||
map.put("flag", "5");
|
||||
map.put("workorder_id", workorder_id);
|
||||
JSONArray resultJSONArray = WQL.getWO("MPS_PRODUCEDURE001").addParamMap(map).process().getResultJSONArray(0);
|
||||
return resultJSONArray;
|
||||
}
|
||||
@@ -532,10 +539,10 @@ public class WorkorderServiceImpl implements WorkordeService {
|
||||
List<Map<String, Object>> list = workorders.stream().map(o -> {
|
||||
JSONObject workorder = (JSONObject) o;
|
||||
Map<String, Object> workorder_map = new LinkedHashMap<>();
|
||||
workorder_map.put("工单编码", workorder.getString("workorder_code"));
|
||||
workorder_map.put("工单号", workorder.getString("workorder_code"));
|
||||
workorder_map.put("工单状态", workorder.getString("order_status"));
|
||||
workorder_map.put("设备", workorder.getString("device_name"));
|
||||
workorder_map.put("物料编码", workorder.getString("material_code"));
|
||||
workorder_map.put("物料编码", workorder.getString("material_number"));
|
||||
workorder_map.put("载具类型", workorder.getString("vehicle_type"));
|
||||
workorder_map.put("计划数量", workorder.getString("plan_qty"));
|
||||
workorder_map.put("计划生产日期", workorder.getString("plan_date"));
|
||||
@@ -553,4 +560,35 @@ public class WorkorderServiceImpl implements WorkordeService {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reportWorkOrderDaily(long workOrderId, int qty, int qualifiedQty, int unqualifiedQty, double weight, double avgPieceWeight) {
|
||||
String today = DateUtil.today();
|
||||
WQLObject wodTable = WQLObject.getWQLObject("pdm_bd_work_order_daily");
|
||||
JSONObject workOrderDaily = wodTable.query("workorder_id = " + workOrderId + " AND date = '" + today + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(workOrderDaily)) {
|
||||
workOrderDaily = new JSONObject();
|
||||
workOrderDaily.put("id", IdUtil.getSnowflake().nextId());
|
||||
workOrderDaily.put("date", today);
|
||||
workOrderDaily.put("workorder_id", workOrderId);
|
||||
workOrderDaily.put("qty", qty);
|
||||
workOrderDaily.put("qualified_qty", qualifiedQty);
|
||||
workOrderDaily.put("unqualified_qty", unqualifiedQty);
|
||||
workOrderDaily.put("weight", weight);
|
||||
workOrderDaily.put("avg_piece_weight", avgPieceWeight);
|
||||
workOrderDaily.put("is_report", "1");
|
||||
TaskUtils.addACSCreateColum(workOrderDaily);
|
||||
wodTable.insert(workOrderDaily);
|
||||
} else {
|
||||
workOrderDaily.put("qty", qty);
|
||||
workOrderDaily.put("qualified_qty", qualifiedQty);
|
||||
workOrderDaily.put("unqualified_qty", unqualifiedQty);
|
||||
workOrderDaily.put("weight", weight);
|
||||
workOrderDaily.put("avg_piece_weight", avgPieceWeight);
|
||||
workOrderDaily.put("is_report", "1");
|
||||
TaskUtils.addACSUpdateColum(workOrderDaily);
|
||||
wodTable.update(workOrderDaily);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,7 +55,8 @@
|
||||
PAGEQUERY
|
||||
SELECT
|
||||
ShiftOrder.*,
|
||||
material.material_code,
|
||||
material.material_number,
|
||||
material.material_name,
|
||||
device.device_name
|
||||
FROM
|
||||
PDM_BD_WORKORDER ShiftOrder
|
||||
@@ -84,7 +85,7 @@
|
||||
ENDOPTION
|
||||
OPTION 输入.material <> ""
|
||||
(
|
||||
material.material_code like 输入.material
|
||||
material.material_number like 输入.material
|
||||
)
|
||||
ENDOPTION
|
||||
OPTION 输入.region_code <> ""
|
||||
@@ -115,7 +116,7 @@
|
||||
SELECT
|
||||
shiftOrder.*,
|
||||
workprocedure.workprocedure_name,
|
||||
material.material_code,
|
||||
material.material_number,
|
||||
material.material_spec
|
||||
FROM
|
||||
PDM_BD_WORKORDER shiftOrder
|
||||
@@ -172,7 +173,7 @@
|
||||
workorder.order_status,
|
||||
workorder.device_id,
|
||||
device.device_code,
|
||||
material.material_code,
|
||||
material.material_number,
|
||||
material.product_code,
|
||||
material.a,
|
||||
material.b,
|
||||
@@ -197,7 +198,7 @@
|
||||
ShiftOrder.workorder_code,
|
||||
d1.label AS order_status,
|
||||
device.device_name,
|
||||
material.material_code,
|
||||
material.material_number,
|
||||
d2.label AS vehicle_type,
|
||||
ShiftOrder.plan_qty,
|
||||
ShiftOrder.plan_date,
|
||||
@@ -235,7 +236,7 @@
|
||||
ENDOPTION
|
||||
OPTION 输入.material <> ""
|
||||
(
|
||||
material.material_code like 输入.material
|
||||
material.material_number like 输入.material
|
||||
)
|
||||
ENDOPTION
|
||||
OPTION 输入.region_code <> ""
|
||||
|
||||
@@ -257,6 +257,7 @@ public abstract class AbstractAcsTask {
|
||||
point1.put("task_code", "");
|
||||
point1.put("vehicle_type", "");
|
||||
point1.put("vehicle_code", "");
|
||||
point1.put("vd_id", null);
|
||||
point1.put("point_status", PointStatus.EMPTY.value());
|
||||
TaskUtils.addACSUpdateColum(point1);
|
||||
point_table.update(point1);
|
||||
|
||||
@@ -11,18 +11,20 @@ import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.modules.wql.util.SpringContextHolder;
|
||||
import org.nl.wms.sch.AcsUtil;
|
||||
import org.nl.wms.sch.task.AcsTaskDTO;
|
||||
import org.redisson.api.RLock;
|
||||
import org.redisson.api.RedissonClient;
|
||||
import org.reflections.Reflections;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@Slf4j
|
||||
@Component("autoCreateTask")
|
||||
public class AutoCreateTask {
|
||||
// 下发acs的任务集合
|
||||
private List<AcsTaskDTO> taskList = null;
|
||||
private Set<Class<? extends AbstractAcsTask>> subTypes = null;
|
||||
|
||||
WQLObject taskTab = null;
|
||||
@@ -34,13 +36,26 @@ public class AutoCreateTask {
|
||||
subTypes = reflections.getSubTypesOf(AbstractAcsTask.class);
|
||||
}
|
||||
if (ObjectUtil.isNull(taskTab)) taskTab = WQLObject.getWQLObject("sch_base_task");
|
||||
taskList = new ArrayList<>();
|
||||
|
||||
this.doExecute();
|
||||
RLock lock = SpringContextHolder.getBean(RedissonClient.class).getFairLock("autoCreateTask");
|
||||
boolean try_lock = false;
|
||||
try {
|
||||
try_lock = lock.tryLock(0, TimeUnit.SECONDS);
|
||||
if (try_lock) {
|
||||
this.doExecute();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("auto create task error !", e);
|
||||
} finally {
|
||||
if (try_lock) {
|
||||
lock.unlock();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void doExecute() {
|
||||
ArrayList<AcsTaskDTO> taskList = new ArrayList<>();
|
||||
subTypes.forEach(clz -> {
|
||||
// 调用AbstractAcsTask类的每个子类的schedule()方法
|
||||
try {
|
||||
|
||||
@@ -36,7 +36,7 @@ public class AutoUpdateStandStatus {
|
||||
for (int i = 0; i < vds.size(); i++) {
|
||||
JSONObject vd = vds.getJSONObject(i);
|
||||
DateTime create_time = DateUtil.parse(vd.getString("create_time"));
|
||||
DateTime time = DateUtil.offsetMinute(create_time, vd.getIntValue("standing_time"));
|
||||
DateTime time = DateUtil.offsetMinute(create_time, vd.getIntValue("stand_time"));
|
||||
int compare = DateUtil.compare(DateUtil.date(), time);
|
||||
if (compare >= 0) {
|
||||
ids.add(vd.getLong("vd_id"));
|
||||
@@ -58,8 +58,8 @@ public class AutoUpdateStandStatus {
|
||||
JSONObject vd = vds.getJSONObject(i);
|
||||
DateTime create_time = DateUtil.parse(vd.getString("create_time"));
|
||||
int threshold_time = vd.getIntValue("threshold_time");
|
||||
int standing_time = vd.getIntValue("standing_time");
|
||||
if (threshold_time != 0 && threshold_time < standing_time) {
|
||||
int stand_time = vd.getIntValue("stand_time");
|
||||
if (threshold_time != 0 && threshold_time < stand_time) {
|
||||
DateTime time = DateUtil.offsetMinute(create_time, threshold_time);
|
||||
int compare = DateUtil.compare(DateUtil.date(), time);
|
||||
if (compare >= 0) {
|
||||
|
||||
@@ -12,7 +12,7 @@ public enum PointStatus {
|
||||
|
||||
EMPTY("空位", "1"),
|
||||
EMPTY_VEHICLE("空载具", "2"),
|
||||
HAS_GOODS("有货", "3");
|
||||
HAS_GOODS("有箱有料", "3");
|
||||
|
||||
private final String label;
|
||||
|
||||
|
||||
@@ -17,10 +17,10 @@ public enum Region {
|
||||
HL("混料区", "HL"),
|
||||
KLHJ("困料货架", "KLHJ"),
|
||||
YZ("压制区", "YZ"),
|
||||
BCPHJ("半成品货架", "BCPHJ"),
|
||||
SZ("烧制区", "SZ"),
|
||||
YQHJ("窑前货架", "YQHJ"),
|
||||
GZ("干燥区", "GZ"),
|
||||
YHHJ("窑后货架", "YHHJ"),
|
||||
FJ("分拣区", "FJ"),
|
||||
BTHC("半托缓存区", "BTHC"),
|
||||
GTK("钢托库", "GTK");
|
||||
|
||||
private final String label;
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
QUERY
|
||||
SELECT
|
||||
vd.*,
|
||||
mb.standing_time
|
||||
mb.stand_time
|
||||
FROM
|
||||
st_ivt_vehicle_detail vd
|
||||
LEFT JOIN md_me_materialbase mb ON vd.material_id = mb.material_id
|
||||
@@ -57,7 +57,7 @@
|
||||
QUERY
|
||||
SELECT
|
||||
vd.*,
|
||||
mb.standing_time,
|
||||
mb.stand_time,
|
||||
mb.threshold_time
|
||||
FROM
|
||||
st_ivt_vehicle_detail vd
|
||||
|
||||
@@ -43,7 +43,7 @@ public class PointDto implements Serializable {
|
||||
/** 锁定类型 */
|
||||
private String lock_type;
|
||||
|
||||
/** 设备编码 */
|
||||
/** 设备号 */
|
||||
private String device_code;
|
||||
|
||||
/** 载具类型 */
|
||||
|
||||
@@ -72,7 +72,7 @@ public class TaskQueryDto implements Serializable {
|
||||
/**
|
||||
* 物料编码
|
||||
*/
|
||||
private String material_code;
|
||||
private String material_number;
|
||||
|
||||
/**
|
||||
* 车号
|
||||
|
||||
@@ -112,7 +112,7 @@ public class PointServiceImpl implements PointService {
|
||||
String point_code = dto.getPoint_code();
|
||||
PointDto byCode = this.findByCode(point_code);
|
||||
if (ObjectUtil.isNotEmpty(byCode)) {
|
||||
throw new BadRequestException("存在相同的点位编码");
|
||||
throw new BadRequestException("存在相同的点位号");
|
||||
}
|
||||
Long currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
|
||||
@@ -45,7 +45,7 @@ public class RegionServiceImpl implements RegionService {
|
||||
map.put("flag", "1");
|
||||
if (ObjectUtil.isNotEmpty(region_code)) map.put("region_code",region_code+"%");
|
||||
|
||||
JSONObject json = WQL.getWO("QSCH_REGION_01").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "region.region_code ASC");
|
||||
JSONObject json = WQL.getWO("QSCH_REGION_01").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "region.create_time DESC");
|
||||
return json;
|
||||
}
|
||||
|
||||
|
||||
@@ -39,12 +39,12 @@ public class YZCallEmptyTask extends AbstractAcsTask {
|
||||
@Override
|
||||
public String createTask(JSONObject form) {
|
||||
JSONObject point = form.getJSONObject("point");
|
||||
JSONObject work_order = form.getJSONObject("workorder");
|
||||
JSONObject workOrder = form.getJSONObject("workorder");
|
||||
int priority = 1;
|
||||
String material_id = null;
|
||||
if (ObjectUtil.isNotEmpty(work_order)) {
|
||||
priority = TrueOrFalse.trueOrFalse(work_order.getString("is_urgent")) ? 50 : 1;
|
||||
material_id = work_order.getString("material_id");
|
||||
String materialId = null;
|
||||
if (ObjectUtil.isNotEmpty(workOrder)) {
|
||||
priority = TrueOrFalse.trueOrFalse(workOrder.getString("is_urgent")) ? 2 : 1;
|
||||
materialId = workOrder.getString("material_id");
|
||||
}
|
||||
|
||||
JSONObject task = TaskUtils.buildTask(
|
||||
@@ -54,7 +54,7 @@ public class YZCallEmptyTask extends AbstractAcsTask {
|
||||
null,
|
||||
point.getString("point_code"),
|
||||
null,
|
||||
material_id,
|
||||
materialId,
|
||||
VehicleType.STEEL_TRAY.value(),
|
||||
null,
|
||||
priority,
|
||||
@@ -90,34 +90,52 @@ public class YZCallEmptyTask extends AbstractAcsTask {
|
||||
JSONObject point = null;
|
||||
String material_id = task.getString("material_id");
|
||||
if (StrUtil.isNotBlank(material_id)) {
|
||||
point = WQL
|
||||
point = WQL
|
||||
.getWO("CALL_EMPTY_TASK")
|
||||
.addParam("flag", "1")
|
||||
.addParam("flag", "2")
|
||||
.addParam("point_code", task.getString("point_code2"))
|
||||
.addParam("material_id", material_id)
|
||||
.process()
|
||||
.uniqueResult(0);
|
||||
|
||||
if (ObjectUtil.isNotEmpty(point)) {
|
||||
task.put("task_status", TaskStatus.START_AND_END.value());
|
||||
task.put("point_code1", point.getString("point_code"));
|
||||
task.put("vehicle_type", VehicleType.STEEL_TRAY.value());
|
||||
task.put("vehicle_code", TaskUtils.formatVehicleCode(point.getString("vehicle_code")));
|
||||
task.put("group_id", point.getLongValue("vd_id"));
|
||||
task.put("remark", "");
|
||||
TaskUtils.addAutoUpdateColum(task);
|
||||
task_table.update(task);
|
||||
|
||||
point.put("lock_type", LockType.TASK_LOCKED.value());
|
||||
point.put("task_code", task.getString("task_code"));
|
||||
TaskUtils.addAutoUpdateColum(point);
|
||||
point_table.update(point);
|
||||
}
|
||||
}
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
task.put("material_id", null);
|
||||
point = WQL
|
||||
.getWO("CALL_EMPTY_TASK")
|
||||
.addParam("flag", "2")
|
||||
.addParam("flag", "1")
|
||||
.process()
|
||||
.uniqueResult(0);
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(point)) {
|
||||
task.put("task_status", TaskStatus.START_AND_END.value());
|
||||
task.put("point_code1", point.getString("point_code"));
|
||||
task.put("vehicle_code", TaskUtils.formatVehicleCode(point.getString("vehicle_code")));
|
||||
task.put("remark", "");
|
||||
TaskUtils.addAutoUpdateColum(task);
|
||||
task_table.update(task);
|
||||
|
||||
point.put("lock_type", LockType.TASK_LOCKED.value());
|
||||
point.put("task_code", task.getString("task_code"));
|
||||
TaskUtils.addAutoUpdateColum(point);
|
||||
point_table.update(point);
|
||||
if (ObjectUtil.isNotEmpty(point)) {
|
||||
task.put("task_status", TaskStatus.START_AND_END.value());
|
||||
task.put("point_code1", point.getString("point_code"));
|
||||
task.put("vehicle_type", VehicleType.STEEL_TRAY.value());
|
||||
task.put("vehicle_code", TaskUtils.formatVehicleCode(point.getString("vehicle_code")));
|
||||
task.put("material_id", null);
|
||||
task.put("remark", "");
|
||||
TaskUtils.addAutoUpdateColum(task);
|
||||
task_table.update(task);
|
||||
|
||||
point.put("lock_type", LockType.TASK_LOCKED.value());
|
||||
point.put("task_code", task.getString("task_code"));
|
||||
TaskUtils.addAutoUpdateColum(point);
|
||||
point_table.update(point);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -186,14 +204,14 @@ public class YZCallEmptyTask extends AbstractAcsTask {
|
||||
}
|
||||
}
|
||||
|
||||
public void finishTask(JSONObject task, OperationType operation_type) {
|
||||
public void finishTask(JSONObject task, OperationType operation_type) {
|
||||
int current_task_status = task.getIntValue("task_status");
|
||||
if (current_task_status < Integer.parseInt(TaskStatus.FINISHED.value())) {
|
||||
if (operation_type == OperationType.MANUAL
|
||||
&& current_task_status < Integer.parseInt(TaskStatus.START_AND_END.value())) {
|
||||
&& current_task_status < Integer.parseInt(TaskStatus.START_AND_END.value())) {
|
||||
throw new BadRequestException("只能手动完成 [确认起点和终点] 之后的任务!");
|
||||
}
|
||||
|
||||
|
||||
task.put("task_status", TaskStatus.FINISHED.value());
|
||||
if (operation_type == OperationType.AUTO) {
|
||||
TaskUtils.addACSUpdateColum(task);
|
||||
@@ -232,6 +250,7 @@ public class YZCallEmptyTask extends AbstractAcsTask {
|
||||
point2.put("task_code", "");
|
||||
point2.put("vehicle_type", task.getString("vehicle_type"));
|
||||
point2.put("vehicle_code", task.getString("vehicle_code"));
|
||||
point2.put("vd_id", task.getString("group_id"));
|
||||
point2.put("point_status", PointStatus.EMPTY_VEHICLE.value());
|
||||
if (operation_type == OperationType.AUTO) {
|
||||
TaskUtils.addACSUpdateColum(point2);
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
#################################################
|
||||
输入.flag TYPEAS s_string
|
||||
输入.point_code TYPEAS s_string
|
||||
输入.vehicle_type TYPEAS s_string
|
||||
输入.material_id TYPEAS f_string
|
||||
|
||||
[临时表]
|
||||
@@ -42,29 +41,6 @@
|
||||
|
||||
IF 输入.flag = "1"
|
||||
QUERY
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
sch_base_point point
|
||||
LEFT JOIN st_ivt_vehicle_detail vd ON point.vehicle_type = vd.vehicle_type
|
||||
AND point.vehicle_code = vd.vehicle_code
|
||||
WHERE
|
||||
point.is_used = '1'
|
||||
AND point.lock_type = '1'
|
||||
AND point.region_code = 'BCPHJ'
|
||||
AND point.point_status = '1'
|
||||
AND point.vehicle_type = '2'
|
||||
AND vd.is_delete = '0'
|
||||
AND vd.point_code = 输入.point_code
|
||||
AND vd.material_id = 输入.material_id
|
||||
AND vd.is_full = '0'
|
||||
AND vd.is_in_kiln = '0'
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
IF 输入.flag = "2"
|
||||
QUERY
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
@@ -73,90 +49,25 @@
|
||||
is_used = '1'
|
||||
AND lock_type = '1'
|
||||
AND region_code = 'GTK'
|
||||
AND point_type = '3'
|
||||
AND point_type = '1'
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
IF 输入.flag = "3"
|
||||
QUERY
|
||||
SELECT
|
||||
point.*
|
||||
IF 输入.flag = "2"
|
||||
QUERY
|
||||
SELECT
|
||||
p.*
|
||||
FROM
|
||||
sch_base_point point
|
||||
LEFT JOIN sch_base_task task ON point.point_code = task.point_code1
|
||||
AND task.task_status <> '7'
|
||||
AND task_status <> '8'
|
||||
sch_base_point p
|
||||
LEFT JOIN st_ivt_vehicle_detail vd ON p.vd_id = vd.vd_id
|
||||
WHERE
|
||||
point.is_used = '1'
|
||||
AND point.lock_type = '1'
|
||||
AND point.region_code = 'GTK'
|
||||
AND point.point_type = '1'
|
||||
AND task.task_id IS NULL
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
IF 输入.flag = "4"
|
||||
QUERY
|
||||
SELECT
|
||||
tpw.*
|
||||
FROM
|
||||
sch_base_point tpw
|
||||
LEFT JOIN sch_base_point djw ON tpw.device_code = djw.point_code
|
||||
WHERE
|
||||
tpw.is_used = '1'
|
||||
AND djw.is_used = '1'
|
||||
AND tpw.region_code = 'FJ'
|
||||
AND djw.region_code = 'FJ'
|
||||
AND tpw.point_type = '4'
|
||||
AND djw.point_type = '3'
|
||||
AND djw.lock_type = '1'
|
||||
AND tpw.vehicle_type = 输入.vehicle_type
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
IF 输入.flag = "5"
|
||||
QUERY
|
||||
SELECT
|
||||
point.*
|
||||
FROM
|
||||
sch_base_point point
|
||||
LEFT JOIN st_ivt_vehicle_detail vd ON point.vehicle_type = vd.vehicle_type
|
||||
AND point.vehicle_code = vd.vehicle_code
|
||||
AND vd.is_delete = '0'
|
||||
WHERE
|
||||
is_used = '1'
|
||||
AND lock_type = '1'
|
||||
AND region_code = 'KLHJ'
|
||||
AND point_type = '1'
|
||||
AND point_status = '1'
|
||||
AND point.vehicle_type = '1'
|
||||
AND vd.vd_id IS NULL
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
IF 输入.flag = "6"
|
||||
QUERY
|
||||
SELECT
|
||||
point.*,
|
||||
vd.vd_id
|
||||
FROM
|
||||
sch_base_point point
|
||||
LEFT JOIN st_ivt_vehicle_detail vd ON point.vehicle_type = vd.vehicle_type
|
||||
AND point.vehicle_code = vd.vehicle_code
|
||||
p.is_used = '1'
|
||||
AND p.lock_type = '1'
|
||||
AND vd.is_delete = '0'
|
||||
WHERE
|
||||
point.is_used = '1'
|
||||
AND point.lock_type = '1'
|
||||
AND point.region_code = 'BTHC'
|
||||
AND point.point_type = '1'
|
||||
AND point.point_status = '1'
|
||||
AND point.vehicle_type = 输入.vehicle_type
|
||||
AND vd.material_id = 输入.material_id
|
||||
AND vd.is_full = '0'
|
||||
AND vd.point_code = 输入.point_code
|
||||
AND vd.material_id = 输入.material_id
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
@@ -2,7 +2,6 @@ package org.nl.wms.sch.task.call.material;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
@@ -18,7 +17,7 @@ import org.springframework.stereotype.Component;
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Component
|
||||
public class SZCallMaterialTask extends AbstractAcsTask {
|
||||
public class GZCallMaterialTask extends AbstractAcsTask {
|
||||
|
||||
|
||||
@Override
|
||||
@@ -40,7 +39,7 @@ public class SZCallMaterialTask extends AbstractAcsTask {
|
||||
JSONObject point = form.getJSONObject("point");
|
||||
|
||||
JSONObject task = TaskUtils.buildTask(
|
||||
"烧制区叫料",
|
||||
"干燥区叫料",
|
||||
TaskType.CALL_MATERIAL.value(),
|
||||
TaskStatus.SURE_END.value(),
|
||||
null,
|
||||
@@ -50,7 +49,7 @@ public class SZCallMaterialTask extends AbstractAcsTask {
|
||||
VehicleType.STEEL_TRAY.value(),
|
||||
null,
|
||||
1,
|
||||
SZCallMaterialTask.class.getName(),
|
||||
GZCallMaterialTask.class.getName(),
|
||||
form.getString("create_mode"),
|
||||
form.getString("request_param"),
|
||||
form.getString("create_id"),
|
||||
@@ -181,6 +180,7 @@ public class SZCallMaterialTask extends AbstractAcsTask {
|
||||
point1.put("task_code", "");
|
||||
point1.put("vehicle_type", "");
|
||||
point1.put("vehicle_code", "");
|
||||
point1.put("vd_id", null);
|
||||
point1.put("point_status", PointStatus.EMPTY.value());
|
||||
if (operation_type == OperationType.AUTO) {
|
||||
TaskUtils.addACSUpdateColum(point1);
|
||||
@@ -191,8 +191,12 @@ public class SZCallMaterialTask extends AbstractAcsTask {
|
||||
}
|
||||
|
||||
JSONObject point2 = new JSONObject();
|
||||
point2.put("point_status", PointStatus.HAS_GOODS.value());
|
||||
point2.put("lock_type", LockType.UNLOCKED.value());
|
||||
point2.put("task_code", "");
|
||||
point2.put("vehicle_type", task.getString("vehicle_type"));
|
||||
point2.put("vehicle_code", task.getString("vehicle_code"));
|
||||
point2.put("vd_id", task.getString("group_id"));
|
||||
if (operation_type == OperationType.AUTO) {
|
||||
TaskUtils.addACSUpdateColum(point2);
|
||||
} else if (operation_type == OperationType.MANUAL) {
|
||||
@@ -42,26 +42,22 @@
|
||||
IF 输入.flag = "1"
|
||||
QUERY
|
||||
SELECT
|
||||
point.*,
|
||||
vd.vd_id,
|
||||
p.*,
|
||||
vd.material_id,
|
||||
workorder.is_urgent
|
||||
wo.is_urgent
|
||||
FROM
|
||||
sch_base_point point
|
||||
JOIN st_ivt_vehicle_detail vd ON point.vehicle_type = vd.vehicle_type
|
||||
AND point.vehicle_code = vd.vehicle_code
|
||||
AND vd.is_delete = '0'
|
||||
LEFT JOIN pdm_bd_workorder workorder ON vd.workorder_id = workorder.workorder_id
|
||||
sch_base_point p
|
||||
LEFT JOIN st_ivt_vehicle_detail vd ON p.vd_id = vd.vd_id
|
||||
LEFT JOIN pdm_bd_workorder wo ON vd.workorder_id = wo.workorder_id
|
||||
WHERE
|
||||
point.is_used = '1'
|
||||
AND point.lock_type = '1'
|
||||
AND point.region_code = 'BCPHJ'
|
||||
AND point.point_status = '1'
|
||||
AND point.vehicle_type = '2'
|
||||
AND vd.is_fire = '0'
|
||||
AND vd.is_in_kiln = '1'
|
||||
p.is_used = '1'
|
||||
AND p.lock_type = '1'
|
||||
AND p.region_code = 'YQHJ'
|
||||
AND p.point_type = '1'
|
||||
AND p.point_status = '3'
|
||||
ORDER BY
|
||||
workorder.is_urgent DESC, vd.create_time ASC
|
||||
wo.is_urgent DESC,
|
||||
vd.create_time ASC
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
@@ -17,7 +17,7 @@ import org.springframework.stereotype.Component;
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Component
|
||||
public class SZSendMaterialTask extends AbstractAcsTask {
|
||||
public class GZSendMaterialTask extends AbstractAcsTask {
|
||||
|
||||
|
||||
@Override
|
||||
@@ -50,7 +50,7 @@ public class SZSendMaterialTask extends AbstractAcsTask {
|
||||
vd.getString("vehicle_type"),
|
||||
vd.getString("vehicle_code"),
|
||||
1,
|
||||
SZSendMaterialTask.class.getName(),
|
||||
GZSendMaterialTask.class.getName(),
|
||||
form.getString("create_mode"),
|
||||
form.getString("request_param"),
|
||||
form.getString("create_id"),
|
||||
@@ -71,7 +71,7 @@ public class SZSendMaterialTask extends AbstractAcsTask {
|
||||
public void findNextPoint() {
|
||||
WQLObject task_table = WQLObject.getWQLObject("sch_base_task");
|
||||
JSONArray tasks = task_table
|
||||
.query("is_delete = '0' AND task_status = '" + TaskStatus.SURE_START.value() + "' AND handle_class = '" + SZSendMaterialTask.class.getName() + "'", "priority DESC, create_time ASC")
|
||||
.query("is_delete = '0' AND task_status = '" + TaskStatus.SURE_START.value() + "' AND handle_class = '" + GZSendMaterialTask.class.getName() + "'", "priority DESC, create_time ASC")
|
||||
.getResultJSONArray(0);
|
||||
if (ObjectUtil.isNotEmpty(tasks)) {
|
||||
WQLObject point_table = WQLObject.getWQLObject("sch_base_point");
|
||||
@@ -39,7 +39,7 @@ public class YZSendMaterialTask extends AbstractAcsTask {
|
||||
public String createTask(JSONObject form) {
|
||||
JSONObject point = form.getJSONObject("point");
|
||||
JSONObject work_order = form.getJSONObject("workorder");
|
||||
int priority = TrueOrFalse.trueOrFalse(work_order.getString("is_urgent")) ? 50 : 1;
|
||||
int priority = TrueOrFalse.trueOrFalse(work_order.getString("is_urgent")) ? 2 : 1;
|
||||
JSONObject vd = form.getJSONObject("vd");
|
||||
|
||||
JSONObject task = TaskUtils.buildTask(
|
||||
@@ -48,7 +48,7 @@ public class YZSendMaterialTask extends AbstractAcsTask {
|
||||
TaskStatus.SURE_START.value(),
|
||||
point.getString("point_code"),
|
||||
null,
|
||||
vd.getLong("vd_id"),
|
||||
vd.getLongValue("vd_id"),
|
||||
vd.getString("material_id"),
|
||||
vd.getString("vehicle_type"),
|
||||
vd.getString("vehicle_code"),
|
||||
@@ -63,6 +63,7 @@ public class YZSendMaterialTask extends AbstractAcsTask {
|
||||
|
||||
point.put("lock_type", LockType.TASK_LOCKED.value());
|
||||
point.put("task_code", task.getString("task_code"));
|
||||
point.put("vd_id", vd.getLongValue("vd_id"));
|
||||
TaskUtils.addFormUpdateColum(point, form);
|
||||
WQLObject.getWQLObject("sch_base_point").update(point);
|
||||
|
||||
@@ -145,6 +146,7 @@ public class YZSendMaterialTask extends AbstractAcsTask {
|
||||
&& task.getString("task_code").equals(point1.getString("task_code"))) {
|
||||
point1.put("lock_type", LockType.UNLOCKED.value());
|
||||
point1.put("task_code", "");
|
||||
point1.put("vd_id", null);
|
||||
if (operation_type == OperationType.AUTO) {
|
||||
TaskUtils.addACSUpdateColum(point1);
|
||||
} else if (operation_type == OperationType.MANUAL) {
|
||||
@@ -172,14 +174,14 @@ public class YZSendMaterialTask extends AbstractAcsTask {
|
||||
}
|
||||
|
||||
|
||||
public void finishTask(JSONObject task, OperationType operation_type) {
|
||||
public void finishTask(JSONObject task, OperationType operation_type) {
|
||||
int current_task_status = task.getIntValue("task_status");
|
||||
if (current_task_status < Integer.parseInt(TaskStatus.FINISHED.value())) {
|
||||
if (operation_type == OperationType.MANUAL
|
||||
&& current_task_status < Integer.parseInt(TaskStatus.START_AND_END.value())) {
|
||||
&& current_task_status < Integer.parseInt(TaskStatus.START_AND_END.value())) {
|
||||
throw new BadRequestException("只能手动完成 [确认起点和终点] 之后的任务!");
|
||||
}
|
||||
|
||||
|
||||
task.put("task_status", TaskStatus.FINISHED.value());
|
||||
if (operation_type == OperationType.AUTO) {
|
||||
TaskUtils.addACSUpdateColum(task);
|
||||
@@ -217,6 +219,7 @@ public class YZSendMaterialTask extends AbstractAcsTask {
|
||||
point2.put("task_code", "");
|
||||
point2.put("vehicle_type", task.getString("vehicle_type"));
|
||||
point2.put("vehicle_code", task.getString("vehicle_code"));
|
||||
point2.put("vd_id", task.getLongValue("group_id"));
|
||||
point2.put("point_status", PointStatus.HAS_GOODS.value());
|
||||
if (operation_type == OperationType.AUTO) {
|
||||
TaskUtils.addACSUpdateColum(point2);
|
||||
@@ -225,19 +228,6 @@ public class YZSendMaterialTask extends AbstractAcsTask {
|
||||
}
|
||||
point_table.update(point2, "point_code = '" + point_code2 + "'");
|
||||
}
|
||||
|
||||
JSONObject workorder = WQL
|
||||
.getWO("SEND_MATERIAL_TASK")
|
||||
.addParam("flag", "7")
|
||||
.addParam("vd_id", task.getString("group_id"))
|
||||
.process()
|
||||
.uniqueResult(0);
|
||||
|
||||
JSONObject workorder_update = new JSONObject();
|
||||
workorder_update.put("real_qty", workorder.getIntValue("real_qty") + workorder.getIntValue("qty"));
|
||||
workorder_update.put("qualified_qty", workorder.getIntValue("qualified_qty") + workorder.getIntValue("qty"));
|
||||
TaskUtils.addACSUpdateColum(workorder_update);
|
||||
WQLObject.getWQLObject("pdm_bd_workorder").update(workorder_update, "workorder_id = " + workorder.getString("workorder_id"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,11 +50,9 @@
|
||||
WHERE
|
||||
is_used = '1'
|
||||
AND lock_type = '1'
|
||||
AND region_code = 'BCPHJ'
|
||||
AND point_status = '1'
|
||||
AND region_code = 'YQHJ'
|
||||
AND point_type = '1'
|
||||
AND point_status = '0'
|
||||
ORDER BY
|
||||
point_code ASC
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
@@ -132,6 +132,12 @@ public class TaskUtils {
|
||||
return vehicle_code;
|
||||
}
|
||||
|
||||
public static void addACSCreateColum(JSONObject row) {
|
||||
row.put("create_id", ACSSystem.id);
|
||||
row.put("create_name", ACSSystem.nick_name);
|
||||
row.put("create_time", DateUtil.now());
|
||||
}
|
||||
|
||||
public static void addACSUpdateColum(JSONObject row) {
|
||||
row.put("update_optid", ACSSystem.id);
|
||||
row.put("update_optname", ACSSystem.nick_name);
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
vd.qty,
|
||||
vd.weight AS vd_weight,
|
||||
material.weight AS material_weight,
|
||||
material.material_code,
|
||||
material.material_number,
|
||||
material.order_code
|
||||
FROM
|
||||
st_ivt_vehicle_detail vd
|
||||
@@ -60,7 +60,7 @@
|
||||
QUERY
|
||||
SELECT
|
||||
workorder.unqualified_qty AS qty,
|
||||
material.material_code AS material_code,
|
||||
material.material_number AS material_number,
|
||||
material.weight AS material_weight,
|
||||
material.order_code,
|
||||
device.region_code
|
||||
|
||||
@@ -50,10 +50,10 @@
|
||||
PAGEQUERY
|
||||
SELECT
|
||||
point.*,
|
||||
material.material_code
|
||||
material.material_number
|
||||
FROM
|
||||
sch_base_point point
|
||||
LEFT JOIN st_ivt_vehicle_detail vd ON point.vehicle_type = vd.vehicle_type AND point.vehicle_code = vd.vehicle_code AND vd.is_delete = '0'
|
||||
LEFT JOIN st_ivt_vehicle_detail vd ON point.vd_id = vd.vd_id
|
||||
LEFT JOIN md_me_materialbase material ON vd.material_id = material.material_id
|
||||
WHERE
|
||||
1 = 1
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
point1.region_name AS point1_region_name,
|
||||
point2.point_name AS point2_name,
|
||||
point2.region_name AS point2_region_name,
|
||||
material.material_code,
|
||||
material.material_number,
|
||||
dd.label AS task_status_name
|
||||
FROM
|
||||
sch_base_task task
|
||||
|
||||
Binary file not shown.
@@ -6,7 +6,7 @@ spring:
|
||||
druid:
|
||||
db-type: com.alibaba.druid.pool.DruidDataSource
|
||||
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
|
||||
url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.4.220}:${DB_PORT:3306}/${DB_NAME:lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useOldAliasMetadataBehavior=true
|
||||
url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.4.220}:${DB_PORT:3306}/${DB_NAME:lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true
|
||||
username: ${DB_USER:root}
|
||||
password: ${DB_PWD:123456}
|
||||
# 初始连接数
|
||||
|
||||
@@ -2,7 +2,7 @@ spring:
|
||||
freemarker:
|
||||
check-template-location: false
|
||||
profiles:
|
||||
active: dev
|
||||
active: prod
|
||||
jackson:
|
||||
time-zone: GMT+8
|
||||
data:
|
||||
|
||||
@@ -22,14 +22,14 @@ public class PointTest {
|
||||
JSONObject point = new JSONObject();
|
||||
WQLObject point_table = WQLObject.getWQLObject("sch_base_point");
|
||||
String now = DateUtil.now();
|
||||
for (int i = 1; i < 10; i++) {
|
||||
for (int i = 1; i <= 24; i++) {
|
||||
point.put("point_id", IdUtil.getSnowflake(1L, 1L).nextId());
|
||||
point.put("point_code", "YJ" + String.format("%02d", i + 1) + "SL01");
|
||||
point.put("point_name", "压机" + (i + 1) + "上料位");
|
||||
point.put("region_id", "1643438714497667072");
|
||||
point.put("region_code", "YZ");
|
||||
point.put("region_name", "压制区");
|
||||
point.put("point_type", "2");
|
||||
point.put("point_code", "YHHW" + String.format("%02d", i));
|
||||
point.put("point_name", "窑后货位" + i);
|
||||
point.put("region_id", 1695713466955993088L);
|
||||
point.put("region_code", "YHHJ");
|
||||
point.put("region_name", "窑后货架");
|
||||
point.put("point_type", "1");
|
||||
point.put("lock_type", "1");
|
||||
point.put("create_id", 1);
|
||||
point.put("create_name", "管理员");
|
||||
|
||||
Reference in New Issue
Block a user