rev
This commit is contained in:
@@ -18,68 +18,68 @@ import java.sql.SQLException;
|
||||
@Configuration
|
||||
@Slf4j
|
||||
public class DataBaseConfig {
|
||||
//
|
||||
// @Value("${erp.sqlserver.enabled}")
|
||||
// private boolean sqlserverIsConnect;
|
||||
// @Value("${erp.sqlserver.jdbcurl}")
|
||||
// private String sqlserverJdbcUrl;
|
||||
// @Value("${erp.sqlserver.username}")
|
||||
// private String sqlserverUserName;
|
||||
// @Value("${erp.sqlserver.password}")
|
||||
// private String sqlserverPassword;
|
||||
//
|
||||
// @Primary
|
||||
// @Bean(name = "dataSource")
|
||||
// @ConfigurationProperties(prefix = "spring.datasource.druid")
|
||||
// public DataSource dataSource() {
|
||||
// return new DruidDataSource();
|
||||
// }
|
||||
//
|
||||
// @Bean("dataSource1")
|
||||
// @ConditionalOnExpression("${erp.sqlserver.enabled:true}")
|
||||
// public DataSource dataSource1() {
|
||||
// log.info("是否连接Sqlserver" + sqlserverIsConnect);
|
||||
// String jdbcUrl = sqlserverJdbcUrl;
|
||||
// String userName = sqlserverUserName;
|
||||
// String password = sqlserverPassword;
|
||||
// DruidDataSource druidDataSource = new DruidDataSource();
|
||||
// String className;
|
||||
// try {
|
||||
// className = DriverManager.getDriver(jdbcUrl.trim()).getClass().getName();
|
||||
// } catch (SQLException e) {
|
||||
// throw new RuntimeException("Get class name error: =" + jdbcUrl);
|
||||
// }
|
||||
// if (StrUtil.isEmpty(className)) {
|
||||
// DataTypeEnum dataTypeEnum = DataTypeEnum.urlOf(jdbcUrl);
|
||||
// if (null == dataTypeEnum) {
|
||||
// throw new RuntimeException("Not supported data type: jdbcUrl=" + jdbcUrl);
|
||||
// }
|
||||
// druidDataSource.setDriverClassName(dataTypeEnum.getDriver());
|
||||
// } else {
|
||||
// druidDataSource.setDriverClassName(className);
|
||||
// }
|
||||
//
|
||||
//
|
||||
// druidDataSource.setUrl(jdbcUrl);
|
||||
// druidDataSource.setUsername(userName);
|
||||
// druidDataSource.setPassword(password);
|
||||
// // 配置获取连接等待超时的时间
|
||||
// druidDataSource.setMaxWait(3000);
|
||||
// // 配置初始化大小、最小、最大
|
||||
// druidDataSource.setInitialSize(5);
|
||||
// druidDataSource.setMinIdle(5);
|
||||
// druidDataSource.setMaxActive(10);
|
||||
//
|
||||
// // 如果链接出现异常则直接判定为失败而不是一直重试
|
||||
// druidDataSource.setBreakAfterAcquireFailure(true);
|
||||
// try {
|
||||
// druidDataSource.init();
|
||||
// } catch (SQLException e) {
|
||||
// log.error("Exception during pool initialization", e);
|
||||
// throw new RuntimeException(e.getMessage());
|
||||
// }
|
||||
//
|
||||
// return druidDataSource;
|
||||
// }
|
||||
|
||||
@Value("${erp.sqlserver.enabled}")
|
||||
private boolean sqlserverIsConnect;
|
||||
@Value("${erp.sqlserver.jdbcurl}")
|
||||
private String sqlserverJdbcUrl;
|
||||
@Value("${erp.sqlserver.username}")
|
||||
private String sqlserverUserName;
|
||||
@Value("${erp.sqlserver.password}")
|
||||
private String sqlserverPassword;
|
||||
|
||||
@Primary
|
||||
@Bean(name = "dataSource")
|
||||
@ConfigurationProperties(prefix = "spring.datasource.druid")
|
||||
public DataSource dataSource() {
|
||||
return new DruidDataSource();
|
||||
}
|
||||
|
||||
@Bean("dataSource1")
|
||||
@ConditionalOnExpression("${erp.sqlserver.enabled:true}")
|
||||
public DataSource dataSource1() {
|
||||
log.info("是否连接Sqlserver" + sqlserverIsConnect);
|
||||
String jdbcUrl = sqlserverJdbcUrl;
|
||||
String userName = sqlserverUserName;
|
||||
String password = sqlserverPassword;
|
||||
DruidDataSource druidDataSource = new DruidDataSource();
|
||||
String className;
|
||||
try {
|
||||
className = DriverManager.getDriver(jdbcUrl.trim()).getClass().getName();
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException("Get class name error: =" + jdbcUrl);
|
||||
}
|
||||
if (StrUtil.isEmpty(className)) {
|
||||
DataTypeEnum dataTypeEnum = DataTypeEnum.urlOf(jdbcUrl);
|
||||
if (null == dataTypeEnum) {
|
||||
throw new RuntimeException("Not supported data type: jdbcUrl=" + jdbcUrl);
|
||||
}
|
||||
druidDataSource.setDriverClassName(dataTypeEnum.getDriver());
|
||||
} else {
|
||||
druidDataSource.setDriverClassName(className);
|
||||
}
|
||||
|
||||
|
||||
druidDataSource.setUrl(jdbcUrl);
|
||||
druidDataSource.setUsername(userName);
|
||||
druidDataSource.setPassword(password);
|
||||
// 配置获取连接等待超时的时间
|
||||
druidDataSource.setMaxWait(3000);
|
||||
// 配置初始化大小、最小、最大
|
||||
druidDataSource.setInitialSize(5);
|
||||
druidDataSource.setMinIdle(5);
|
||||
druidDataSource.setMaxActive(10);
|
||||
|
||||
// 如果链接出现异常则直接判定为失败而不是一直重试
|
||||
druidDataSource.setBreakAfterAcquireFailure(true);
|
||||
try {
|
||||
druidDataSource.init();
|
||||
} catch (SQLException e) {
|
||||
log.error("Exception during pool initialization", e);
|
||||
throw new RuntimeException(e.getMessage());
|
||||
}
|
||||
|
||||
return druidDataSource;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -90,8 +90,8 @@ public class MaterialbaseController {
|
||||
@Log("物料同步")
|
||||
@ApiOperation("物料同步")
|
||||
//@SaCheckPermission("materialtype:list")
|
||||
public ResponseEntity<Object> synchronize(@RequestBody Map whereJson) {
|
||||
materialBaseService.synchronize(whereJson);
|
||||
public ResponseEntity<Object> synchronize() {
|
||||
materialBaseService.synchronize();
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@@ -89,7 +89,7 @@ public interface MaterialbaseService {
|
||||
*/
|
||||
JSONObject getMaterOptType(String materOpt_code);
|
||||
|
||||
void synchronize(Map whereJson);
|
||||
void synchronize();
|
||||
|
||||
JSONArray getProductSeries(String parent_class_id);
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ import org.nl.wms.basedata.eum.MaterOptTypeEnum;
|
||||
import org.nl.wms.basedata.service.ClassstandardService;
|
||||
import org.nl.wms.basedata.service.MaterialbaseService;
|
||||
import org.nl.wms.basedata.service.dto.MaterialbaseDto;
|
||||
import org.nl.wms.sch.task.util.TaskUtils;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -150,9 +151,31 @@ public class MaterialbaseServiceImpl implements MaterialbaseService {
|
||||
return MaterOptTypeEnum.getObj(materOpt_code);
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public void synchronize(Map whereJson) {
|
||||
public void synchronize() {
|
||||
JSONArray data = WQL
|
||||
.getWO("QMD_ME_MATERIAL")
|
||||
.setDbname("dataSource1")
|
||||
.addParam("flag", "2")
|
||||
.process()
|
||||
.getResultJSONArray(0);
|
||||
|
||||
JSONObject material = new JSONObject();
|
||||
TaskUtils.addCurrentCreateColum(material);
|
||||
WQLObject materialTable = WQLObject.getWQLObject("md_me_materialbase");
|
||||
for (int i = 0; i < data.size(); i++) {
|
||||
JSONObject datum = data.getJSONObject(i);
|
||||
String cinvcode = datum.getString("cinvcode");
|
||||
JSONObject oldMaterial = materialTable.query("material_number = '" + cinvcode + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(oldMaterial)) {
|
||||
material.put("material_id", IdUtil.getSnowflake().nextId());
|
||||
material.put("material_name", datum.getString("cinvname"));
|
||||
material.put("material_number", cinvcode);
|
||||
material.put("dd", datum.getString("free3"));
|
||||
materialTable.insert(material);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -70,12 +70,10 @@
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
dbo.EFV_MO_ORDER
|
||||
dbo.EFV_BASE_INVENTORY
|
||||
WHERE
|
||||
STATUS = 3
|
||||
AND AuxQty > QualifiedInNum
|
||||
AND LEFT ( cinvcode, 1 ) <> '1'
|
||||
AND cInvCode LIKE 'W%'
|
||||
cstate = '在用'
|
||||
AND ( LEFT ( cinvcode, 1 ) = 'W' OR LEFT ( cinvcode, 3 ) = '902' )
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
@@ -197,4 +197,28 @@ public class AcsToWmsController {
|
||||
public ResponseEntity<Object> reportForWork(@RequestBody JSONObject param) {
|
||||
return ResponseEntity.ok(acsToWmsService.reportForWork(param));
|
||||
}
|
||||
|
||||
@PostMapping("/fjPalletizationCompleted")
|
||||
@Log("分拣码垛完成")
|
||||
@ApiOperation("分拣码垛完成")
|
||||
@SaIgnore
|
||||
public ResponseEntity<JSONObject> fjPalletizationCompleted(@RequestBody JSONObject param) {
|
||||
return ResponseEntity.ok(acsToWmsService.fjPalletizationCompleted(param));
|
||||
}
|
||||
|
||||
@PostMapping("/fjCallEmpty")
|
||||
@Log("分拣呼叫空托")
|
||||
@ApiOperation("分拣呼叫空托")
|
||||
@SaIgnore
|
||||
public ResponseEntity<JSONObject> fjCallEmpty(@RequestBody JSONObject param) {
|
||||
return ResponseEntity.ok(acsToWmsService.fjCallEmpty(param));
|
||||
}
|
||||
|
||||
@PostMapping("/fjNeed")
|
||||
@Log("分拣需要半托回码")
|
||||
@ApiOperation("分拣需要半托回码")
|
||||
@SaIgnore
|
||||
public ResponseEntity<JSONObject> fjNeed(@RequestBody JSONObject param) {
|
||||
return ResponseEntity.ok(acsToWmsService.fjNeed(param));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -110,4 +110,10 @@ public interface AcsToWmsService {
|
||||
JSONObject inKiln(JSONObject param);
|
||||
|
||||
JSONObject reportForWork(JSONObject param);
|
||||
|
||||
JSONObject fjPalletizationCompleted(JSONObject param);
|
||||
|
||||
JSONObject fjCallEmpty(JSONObject param);
|
||||
|
||||
JSONObject fjNeed(JSONObject param);
|
||||
}
|
||||
|
||||
@@ -20,9 +20,14 @@ import org.nl.wms.basedata.service.dto.VehicleDto;
|
||||
import org.nl.wms.ext.acs.service.AcsToWmsService;
|
||||
import org.nl.wms.pdm.service.WorkordeService;
|
||||
import org.nl.wms.sch.manage.*;
|
||||
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.GZCallMaterialTask;
|
||||
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.GZSendMaterialTask;
|
||||
import org.nl.wms.sch.task.send.material.HLSendMaterialTask;
|
||||
import org.nl.wms.sch.task.send.material.YZSendMaterialTask;
|
||||
@@ -53,6 +58,16 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
|
||||
private final HLSendMaterialTask hlSendMaterialTask;
|
||||
|
||||
private final HLCallEmptyTask hlCallEmptyTask;
|
||||
|
||||
private final YZCallMaterialTask yzCallMaterialTask;
|
||||
|
||||
private final YZSendEmptyTask yzSendEmptyTask;
|
||||
|
||||
private final FJSendEmptyTask fjSendEmptyTask;
|
||||
|
||||
private final GTKCallEmptyTask gtkCallEmptyTask;
|
||||
|
||||
/**
|
||||
* task_id:任务标识
|
||||
* task_code:任务编码
|
||||
@@ -233,7 +248,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
vd.put("vehicle_type", VehicleType.CUP.value());
|
||||
vd.put("vehicle_code", vehicleCode);
|
||||
vd.put("material_id", workOrder.getString("material_id"));
|
||||
vd.put("weight", Long.parseLong(weight) / 1000.00);
|
||||
vd.put("weight", Long.parseLong(weight));
|
||||
vd.put("workorder_id", workOrder.getString("workorder_id"));
|
||||
vd.put("point_code", pointCode);
|
||||
vd.put("create_id", ACSSystem.id);
|
||||
@@ -270,6 +285,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
case "2":
|
||||
// 叫料
|
||||
switch (region) {
|
||||
case YZ:
|
||||
methodParam.put("workorder", TaskUtils.hasWorkOrder(point));
|
||||
taskCode = yzCallMaterialTask.createTask(methodParam);
|
||||
break;
|
||||
case GZ:
|
||||
taskCode = gzCallMaterialTask.createTask(methodParam);
|
||||
break;
|
||||
@@ -283,9 +302,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
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'")
|
||||
@@ -293,9 +309,34 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
methodParam.put("workorder", workOrder);
|
||||
|
||||
switch (region) {
|
||||
case YZ:
|
||||
taskCode = yzSendEmptyTask.createTask(methodParam);
|
||||
break;
|
||||
case FJ:
|
||||
taskCode = fjSendEmptyTask.createTask(methodParam);
|
||||
break;
|
||||
default:
|
||||
throw new BadRequestException("[" + region.label() + "] 不能发起送空任务!");
|
||||
}
|
||||
break;
|
||||
case "4":
|
||||
// 叫空
|
||||
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 HL:
|
||||
taskCode = hlCallEmptyTask.createTask(methodParam);
|
||||
break;
|
||||
case YZ:
|
||||
taskCode = yzCallEmptyTask.createTask(methodParam);
|
||||
break;
|
||||
case GTK:
|
||||
taskCode = gtkCallEmptyTask.createTask(methodParam);
|
||||
break;
|
||||
default:
|
||||
throw new BadRequestException("[" + region.label() + "] 不能发起叫空任务!");
|
||||
}
|
||||
@@ -324,12 +365,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
if (StrUtil.isBlank(point_code)) {
|
||||
throw new BadRequestException("点位不能为空!");
|
||||
}
|
||||
String qty = jsonObject.getString("qty");
|
||||
if (StrUtil.isBlank(qty)) {
|
||||
int qty = jsonObject.getIntValue("qty");
|
||||
if (qty == 0) {
|
||||
throw new BadRequestException("数量不能为空!");
|
||||
}
|
||||
String weight = jsonObject.getString("weight");
|
||||
if (StrUtil.isBlank(weight)) {
|
||||
double weight = jsonObject.getDoubleValue("weight");
|
||||
if (weight == 0) {
|
||||
throw new BadRequestException("重量不能为空!");
|
||||
}
|
||||
String is_full = jsonObject.getString("is_full");
|
||||
@@ -363,7 +404,8 @@ 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", Long.parseLong(weight) / 1000.00);
|
||||
vd.put("weight", weight);
|
||||
vd.put("dz", weight / qty);
|
||||
vd.put("is_full", is_full);
|
||||
vd.put("workorder_id", workorder.getString("workorder_id"));
|
||||
vd.put("point_code", point_code);
|
||||
@@ -522,11 +564,17 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
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 weightKG = jsonObject.getIntValue("weight");
|
||||
int avgPieceWeightG = jsonObject.getIntValue("avg_piece_weight");
|
||||
double avgPieceWeightKG = avgPieceWeightG / 1000.00;
|
||||
|
||||
JSONObject device = WQLObject.getWQLObject("pdm_bi_device").query("device_id = " + workOrder.getString("device_id")).uniqueResult(0);
|
||||
if (Region.FJ.value().equals(device.getString("region_code"))) {
|
||||
JSONObject vd = WQLObject.getWQLObject("st_ivt_vehicle_detail").query("vehicle_code = '2' AND material_id = " + workOrder.getString("material_id"), "create_time DESC").uniqueResult(0);
|
||||
avgPieceWeightKG = vd.getDoubleValue("dz") * 0.95;
|
||||
weightKG = (int) avgPieceWeightKG * qty;
|
||||
}
|
||||
|
||||
// 报工
|
||||
workordeService.reportWorkOrderDaily(workOrderId, qty, qualifiedQty, unqualifiedQty, weightKG, avgPieceWeightKG);
|
||||
|
||||
@@ -549,8 +597,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
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 weightKG = jsonObject.getIntValue("weight");
|
||||
int avgPieceWeightG = jsonObject.getIntValue("avg_piece_weight");
|
||||
double avgPieceWeightKG = avgPieceWeightG / 1000.00;
|
||||
|
||||
@@ -669,17 +716,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
throw new BadRequestException("[" + point_code + "] 已删除或未启用!");
|
||||
}
|
||||
TaskUtils.isLocked(point);
|
||||
String vehicle_type = point.getString("vehicle_type");
|
||||
String vehicle_code = point.getString("vehicle_code");
|
||||
if (StrUtil.isBlank(vehicle_type) || StrUtil.isBlank(vehicle_code)) {
|
||||
throw new BadRequestException("[" + point_code + "] 上缺少载具类型或载具编码!");
|
||||
}
|
||||
|
||||
String vdId = point.getString("vd_id");
|
||||
JSONObject data = null;
|
||||
if (!"0000".equals(vehicle_code)) {
|
||||
if (StrUtil.isNotBlank(vdId)) {
|
||||
data = WQLObject
|
||||
.getWQLObject("st_ivt_vehicle_detail")
|
||||
.query("is_delete = '0' AND vehicle_type = '" + vehicle_type + "' AND vehicle_code = '" + vehicle_code + "'")
|
||||
.query("vd_id = " + vdId)
|
||||
.uniqueResult(0);
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(data)) {
|
||||
@@ -758,7 +801,11 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
public JSONObject outKiln(JSONObject whereJson) {
|
||||
String vehicle_code = TaskUtils.formatVehicleCode(whereJson.getString("vehicle_code"));
|
||||
if ("0000".equals(vehicle_code)) {
|
||||
throw new BadRequestException("载具编码不能为空!");
|
||||
throw new BadRequestException("载具号不能为空!");
|
||||
}
|
||||
String coolNumber = whereJson.getString("cool_number");
|
||||
if (StrUtil.isBlank(coolNumber)) {
|
||||
throw new BadRequestException("冷却道号不能为空!");
|
||||
}
|
||||
|
||||
Boolean to_package = null;
|
||||
@@ -772,6 +819,24 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
to_package = TrueOrFalse.trueOrFalse(workorder.getString("is_pri"));
|
||||
|
||||
vd.put("out_kiln_time", DateUtil.now());
|
||||
if (to_package) {
|
||||
JSONObject point = WQLObject.getWQLObject("sch_base_point").query("point_code = 'YXCY01'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(point)) {
|
||||
JSONObject methodParam = new JSONObject();
|
||||
methodParam.put("point", point);
|
||||
methodParam.put("vd", vd);
|
||||
methodParam.put("workorder", workorder);
|
||||
methodParam.put("create_mode", CreateMode.ACSSQ.value());
|
||||
methodParam.put("request_param", whereJson.toJSONString());
|
||||
methodParam.put("create_id", ACSSystem.id);
|
||||
methodParam.put("create_name", ACSSystem.nick_name);
|
||||
TaskUtils.addACSCreateColum(methodParam);
|
||||
gzSendMaterialTask.createTask(methodParam);
|
||||
}
|
||||
}
|
||||
if (!to_package) {
|
||||
vd.put("cool_number", "LQD0" + coolNumber);
|
||||
}
|
||||
TaskUtils.addACSUpdateColum(vd);
|
||||
vd_table.update(vd);
|
||||
}
|
||||
@@ -836,8 +901,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
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 weightKG = param.getIntValue("weight");
|
||||
int avgPieceWeightG = param.getIntValue("avg_piece_weight");
|
||||
double avgPieceWeightKG = avgPieceWeightG / 1000.00;
|
||||
|
||||
@@ -881,4 +945,224 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
result.put("message", "反馈成功!");
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject fjPalletizationCompleted(JSONObject param) {
|
||||
String point_code = param.getString("device_code"); // 对接位
|
||||
if (StrUtil.isBlank(point_code)) {
|
||||
throw new BadRequestException("点位不能为空!");
|
||||
}
|
||||
int qty = param.getIntValue("qty");
|
||||
if (0 == qty) {
|
||||
throw new BadRequestException("数量不能为空!");
|
||||
}
|
||||
String is_full = param.getString("is_full");
|
||||
if (StrUtil.isBlank(is_full)) {
|
||||
throw new BadRequestException("是否满垛不能为空!");
|
||||
}
|
||||
|
||||
JSONObject point = WQLObject
|
||||
.getWQLObject("sch_base_point")
|
||||
.query("is_used = '1' AND point_code = '" + point_code + "'")
|
||||
.uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
throw new BadRequestException("[" + point_code + "] 已删除或未启用!");
|
||||
}
|
||||
TaskUtils.isLocked(point);
|
||||
JSONObject workOrder = TaskUtils.hasWorkOrder(point);
|
||||
WQLObject vdTable = WQLObject.getWQLObject("st_ivt_vehicle_detail");
|
||||
|
||||
String vdId = point.getString("vd_id");
|
||||
if (StrUtil.isBlank(vdId)) {
|
||||
// 新托盘
|
||||
JSONObject vd = new JSONObject();
|
||||
vd.put("vd_id", IdUtil.getSnowflake(1, 1).nextId());
|
||||
vd.put("vehicle_type", workOrder.getString("vehicle_type"));
|
||||
vd.put("vehicle_code", CodeUtil.getNewCode("WOOD_VEHICLE_CODE"));
|
||||
String materialId = workOrder.getString("material_id");
|
||||
vd.put("material_id", materialId);
|
||||
vd.put("qty", qty);
|
||||
double dz = vdTable.query("vehicle_type = '2' AND material_id = " + materialId, "create_time DESC").uniqueResult(0).getDoubleValue("dz");
|
||||
vd.put("weight", dz * qty);
|
||||
vd.put("dz", dz);
|
||||
vd.put("is_full", is_full);
|
||||
vd.put("workorder_id", workOrder.getString("workorder_id"));
|
||||
vd.put("point_code", point_code);
|
||||
vd.put("tray_high", param.get("tray_high"));
|
||||
vd.put("crib_category", param.get("crib_category"));
|
||||
vd.put("palletX1_line", param.get("palletX1_line"));
|
||||
vd.put("palletY1_row", param.get("palletY1_row"));
|
||||
vd.put("palletA1_angle", param.get("palletA1_angle"));
|
||||
vd.put("palletX2_line", param.get("palletX2_line"));
|
||||
vd.put("palletY2_row", param.get("palletY2_row"));
|
||||
vd.put("palletA2_angle", param.get("palletA2_angle"));
|
||||
vd.put("palletX3_line", param.get("palletX3_line"));
|
||||
vd.put("palletY3_row", param.get("palletY3_row"));
|
||||
vd.put("palletA3_angle", param.get("palletA3_angle"));
|
||||
vd.put("pressCribX1_line", param.get("pressCribX1_line"));
|
||||
vd.put("pressCribY1_row", param.get("pressCribY1_row"));
|
||||
vd.put("pressCribA1_angle", param.get("pressCribA1_angle"));
|
||||
vd.put("pressCribX2_line", param.get("pressCribX2_line"));
|
||||
vd.put("pressCribY2_row", param.get("pressCribY2_row"));
|
||||
vd.put("pressCribA2_angle", param.get("pressCribA2_angle"));
|
||||
vd.put("pressCribX3_line", param.get("pressCribX3_line"));
|
||||
vd.put("pressCribY3_row", param.get("pressCribY3_row"));
|
||||
vd.put("pressCribA3_angle", param.get("pressCribA3_angle"));
|
||||
vd.put("Zoffset", param.get("Zoffset"));
|
||||
vd.put("pallet_layerQty", param.get("pallet_layerQty"));
|
||||
vd.put("pressCrib_layerQty", param.get("pressCrib_layerQty"));
|
||||
vd.put("codeLayerX1_interval", param.get("codeLayerX1_interval"));
|
||||
vd.put("codeLayerY1_interval", param.get("codeLayerY1_interval"));
|
||||
vd.put("codeLayerX2_interval", param.get("codeLayerX2_interval"));
|
||||
vd.put("codeLayerY2_interval", param.get("codeLayerY2_interval"));
|
||||
vd.put("codeLayerX3_interval", param.get("codeLayerX3_interval"));
|
||||
vd.put("codeLayerY3_interval", param.get("codeLayerY3_interval"));
|
||||
vd.put("codeLayerX1_offset", param.get("codeLayerX1_offset"));
|
||||
vd.put("codeLayerY1_offset", param.get("codeLayerY1_offset"));
|
||||
vd.put("codeLayerX2_offset", param.get("codeLayerX2_offset"));
|
||||
vd.put("codeLayerY2_offset", param.get("codeLayerY2_offset"));
|
||||
vd.put("codeLayerX3_offset", param.get("codeLayerX3_offset"));
|
||||
vd.put("codeLayerY3_offset", param.get("codeLayerY3_offset"));
|
||||
vd.put("pressLayerX1_interval", param.get("pressLayerX1_interval"));
|
||||
vd.put("pressLayerY1_interval", param.get("pressLayerY1_interval"));
|
||||
vd.put("pressLayerX2_interval", param.get("pressLayerX2_interval"));
|
||||
vd.put("pressLayerY2_interval", param.get("pressLayerY2_interval"));
|
||||
vd.put("pressLayerX3_interval", param.get("pressLayerX3_interval"));
|
||||
vd.put("pressLayerY3_interval", param.get("pressLayerY3_interval"));
|
||||
vd.put("pressLayerX1_offset", param.get("pressLayerX1_offset"));
|
||||
vd.put("pressLayerY1_offset", param.get("pressLayerY1_offset"));
|
||||
vd.put("pressLayerX2_offset", param.get("pressLayerX2_offset"));
|
||||
vd.put("pressLayerY2_offset", param.get("pressLayerY2_offset"));
|
||||
vd.put("pressLayerX3_offset", param.get("pressLayerX3_offset"));
|
||||
vd.put("pressLayerY3_offset", param.get("pressLayerY3_offset"));
|
||||
vd.put("tool_coordinate", param.get("tool_coordinate"));
|
||||
vd.put("create_id", ACSSystem.id);
|
||||
vd.put("create_name", ACSSystem.nick_name);
|
||||
vd.put("create_time", DateUtil.now());
|
||||
vd.put("is_delete", TrueOrFalse.FALSE.value());
|
||||
|
||||
vdTable.insert(vd);
|
||||
// todo 反馈ERP成品入库
|
||||
} else {
|
||||
// 半托
|
||||
JSONObject vd = vdTable.query("vd_id = " + vdId).uniqueResult(0);
|
||||
int qty2 = qty - vd.getIntValue("qty");
|
||||
double dz = vd.getDoubleValue("dz");
|
||||
vd.put("is_full", is_full);
|
||||
vd.put("qty2", qty2);
|
||||
vd.put("weight2", dz * qty2);
|
||||
vd.put("workorder_id2", workOrder.getString("workorder_id"));
|
||||
vd.put("point_code", point_code);
|
||||
vd.put("tray_high", param.get("tray_high"));
|
||||
vd.put("crib_category", param.get("crib_category"));
|
||||
vd.put("palletX1_line", param.get("palletX1_line"));
|
||||
vd.put("palletY1_row", param.get("palletY1_row"));
|
||||
vd.put("palletA1_angle", param.get("palletA1_angle"));
|
||||
vd.put("palletX2_line", param.get("palletX2_line"));
|
||||
vd.put("palletY2_row", param.get("palletY2_row"));
|
||||
vd.put("palletA2_angle", param.get("palletA2_angle"));
|
||||
vd.put("palletX3_line", param.get("palletX3_line"));
|
||||
vd.put("palletY3_row", param.get("palletY3_row"));
|
||||
vd.put("palletA3_angle", param.get("palletA3_angle"));
|
||||
vd.put("pressCribX1_line", param.get("pressCribX1_line"));
|
||||
vd.put("pressCribY1_row", param.get("pressCribY1_row"));
|
||||
vd.put("pressCribA1_angle", param.get("pressCribA1_angle"));
|
||||
vd.put("pressCribX2_line", param.get("pressCribX2_line"));
|
||||
vd.put("pressCribY2_row", param.get("pressCribY2_row"));
|
||||
vd.put("pressCribA2_angle", param.get("pressCribA2_angle"));
|
||||
vd.put("pressCribX3_line", param.get("pressCribX3_line"));
|
||||
vd.put("pressCribY3_row", param.get("pressCribY3_row"));
|
||||
vd.put("pressCribA3_angle", param.get("pressCribA3_angle"));
|
||||
vd.put("Zoffset", param.get("Zoffset"));
|
||||
vd.put("pallet_layerQty", param.get("pallet_layerQty"));
|
||||
vd.put("pressCrib_layerQty", param.get("pressCrib_layerQty"));
|
||||
vd.put("codeLayerX1_interval", param.get("codeLayerX1_interval"));
|
||||
vd.put("codeLayerY1_interval", param.get("codeLayerY1_interval"));
|
||||
vd.put("codeLayerX2_interval", param.get("codeLayerX2_interval"));
|
||||
vd.put("codeLayerY2_interval", param.get("codeLayerY2_interval"));
|
||||
vd.put("codeLayerX3_interval", param.get("codeLayerX3_interval"));
|
||||
vd.put("codeLayerY3_interval", param.get("codeLayerY3_interval"));
|
||||
vd.put("codeLayerX1_offset", param.get("codeLayerX1_offset"));
|
||||
vd.put("codeLayerY1_offset", param.get("codeLayerY1_offset"));
|
||||
vd.put("codeLayerX2_offset", param.get("codeLayerX2_offset"));
|
||||
vd.put("codeLayerY2_offset", param.get("codeLayerY2_offset"));
|
||||
vd.put("codeLayerX3_offset", param.get("codeLayerX3_offset"));
|
||||
vd.put("codeLayerY3_offset", param.get("codeLayerY3_offset"));
|
||||
vd.put("pressLayerX1_interval", param.get("pressLayerX1_interval"));
|
||||
vd.put("pressLayerY1_interval", param.get("pressLayerY1_interval"));
|
||||
vd.put("pressLayerX2_interval", param.get("pressLayerX2_interval"));
|
||||
vd.put("pressLayerY2_interval", param.get("pressLayerY2_interval"));
|
||||
vd.put("pressLayerX3_interval", param.get("pressLayerX3_interval"));
|
||||
vd.put("pressLayerY3_interval", param.get("pressLayerY3_interval"));
|
||||
vd.put("pressLayerX1_offset", param.get("pressLayerX1_offset"));
|
||||
vd.put("pressLayerY1_offset", param.get("pressLayerY1_offset"));
|
||||
vd.put("pressLayerX2_offset", param.get("pressLayerX2_offset"));
|
||||
vd.put("pressLayerY2_offset", param.get("pressLayerY2_offset"));
|
||||
vd.put("pressLayerX3_offset", param.get("pressLayerX3_offset"));
|
||||
vd.put("pressLayerY3_offset", param.get("pressLayerY3_offset"));
|
||||
vd.put("tool_coordinate", param.get("tool_coordinate"));
|
||||
TaskUtils.addACSUpdateColum(vd);
|
||||
vdTable.update(vd);
|
||||
}
|
||||
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "反馈成功!");
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject fjCallEmpty(JSONObject param) {
|
||||
String point_code = param.getString("device_code"); // 对接位
|
||||
if (StrUtil.isBlank(point_code)) {
|
||||
throw new BadRequestException("点位不能为空!");
|
||||
}
|
||||
JSONObject point = WQLObject
|
||||
.getWQLObject("sch_base_point")
|
||||
.query("is_used = '1' AND point_code = '" + point_code + "'")
|
||||
.uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
throw new BadRequestException("[" + point_code + "] 已删除或未启用!");
|
||||
}
|
||||
TaskUtils.isLocked(point);
|
||||
JSONObject workOrder = TaskUtils.hasWorkOrder(point);
|
||||
JSONObject data = WQLObject.getWQLObject("st_ivt_vehicle_detail").query("is_delete = '0' AND if_full = '0' AND vehicle_type = '" + workOrder.getString("vehicle_type") + "' AND material_id = " + workOrder.getString("material_id")).uniqueResult(0);
|
||||
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "反馈成功!");
|
||||
result.put("data", data);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject fjNeed(JSONObject param) {
|
||||
String point_code = param.getString("device_code"); // 对接位
|
||||
if (StrUtil.isBlank(point_code)) {
|
||||
throw new BadRequestException("点位不能为空!");
|
||||
}
|
||||
long vdId = param.getLongValue("vd_id");
|
||||
if (vdId == 0) {
|
||||
throw new BadRequestException("组盘id不能为空!");
|
||||
}
|
||||
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
|
||||
JSONObject point = pointTable
|
||||
.query("is_used = '1' AND point_code = '" + point_code + "'")
|
||||
.uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
throw new BadRequestException("[" + point_code + "] 已删除或未启用!");
|
||||
}
|
||||
JSONObject vd = WQLObject.getWQLObject("st_ivt_vehicle_detail").query("vd_id = " + vdId).uniqueResult(0);
|
||||
point.put("vehicle_type", vd.getString("vehicle_type"));
|
||||
point.put("vehicle_code", vd.getString("vehicle_code"));
|
||||
point.put("vd_id", vdId);
|
||||
point.put("point_status", PointStatus.HAS_GOODS.value());
|
||||
TaskUtils.addACSUpdateColum(point);
|
||||
pointTable.update(point);
|
||||
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "反馈成功!");
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,6 @@ import org.nl.wms.pda.service.PdaService;
|
||||
import org.nl.wms.sch.manage.CreateMode;
|
||||
import org.nl.wms.sch.manage.PointStatus;
|
||||
import org.nl.wms.sch.manage.Region;
|
||||
import org.nl.wms.sch.task.call.empty.FJCallEmptyTask;
|
||||
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;
|
||||
@@ -57,8 +56,6 @@ public class PdaServiceImpl implements PdaService {
|
||||
|
||||
private final YZCallEmptyTask yzCallEmptyTask;
|
||||
|
||||
private final FJCallEmptyTask fjCallEmptyTask;
|
||||
|
||||
private final WmsToAcsService wmsToAcsService;
|
||||
|
||||
@Override
|
||||
@@ -514,11 +511,6 @@ public class PdaServiceImpl implements PdaService {
|
||||
method_param.put("workorder", workorder);
|
||||
yzCallEmptyTask.createTask(method_param);
|
||||
break;
|
||||
case FJ:
|
||||
workorder = TaskUtils.hasWorkOrder(point);
|
||||
method_param.put("workorder", workorder);
|
||||
fjCallEmptyTask.createTask(method_param);
|
||||
break;
|
||||
default:
|
||||
throw new BadRequestException("[" + region.label() + "] 不能发起叫空任务!");
|
||||
}
|
||||
|
||||
@@ -158,4 +158,13 @@ public class WorkorderController {
|
||||
workordeService.downloadExcel(params, response);
|
||||
}
|
||||
|
||||
@PostMapping("/synchronize")
|
||||
@Log("同步工单")
|
||||
@ApiOperation("同步工单")
|
||||
//@SaCheckPermission("materialtype:list")
|
||||
public ResponseEntity<Object> synchronize() {
|
||||
workordeService.synchronize();
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -128,4 +128,6 @@ public interface WorkordeService {
|
||||
void downloadExcel(Map<String, Object> params, HttpServletResponse response);
|
||||
|
||||
void reportWorkOrderDaily(long workOrderId, int qty, int qualifiedQty, int unqualifiedQty, double weight, double avgPieceWeight);
|
||||
|
||||
void synchronize();
|
||||
}
|
||||
|
||||
@@ -118,4 +118,8 @@ public class WorkorderDto implements Serializable {
|
||||
private BigDecimal real_weight;
|
||||
|
||||
private BigDecimal avg_piece_weight;
|
||||
private BigDecimal dz;
|
||||
|
||||
private String gg;
|
||||
private String kh;
|
||||
}
|
||||
|
||||
@@ -16,9 +16,12 @@ import org.nl.modules.common.utils.FileUtil;
|
||||
import org.nl.modules.common.utils.SecurityUtils;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.modules.wql.WQL;
|
||||
import org.nl.modules.wql.core.bean.ResultBean;
|
||||
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.basedata.service.MaterialbaseService;
|
||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.pdm.service.WorkordeService;
|
||||
import org.nl.wms.pdm.service.dto.WorkorderDto;
|
||||
@@ -51,6 +54,8 @@ public class WorkorderServiceImpl implements WorkordeService {
|
||||
|
||||
private final WmsToAcsService wmsToAcsService;
|
||||
|
||||
private final MaterialbaseService materialbaseService;
|
||||
|
||||
@Override
|
||||
public Map<String, Object> queryAll(Map whereJson, Pageable page) {
|
||||
String produceorder_code = MapUtil.getStr(whereJson, "produceorder_code");
|
||||
@@ -135,6 +140,9 @@ public class WorkorderServiceImpl implements WorkordeService {
|
||||
work_order.put("is_delete", TrueOrFalse.FALSE.value());
|
||||
work_order.put("plan_date", dto.getPlan_date());
|
||||
work_order.put("plan_weight", dto.getPlan_weight());
|
||||
work_order.put("dz", dto.getDz());
|
||||
work_order.put("gg", dto.getGg());
|
||||
work_order.put("kh", dto.getKh());
|
||||
Long user_id = SecurityUtils.getCurrentUserId();
|
||||
String nick_name = SecurityUtils.getCurrentNickName();
|
||||
String now = DateUtil.now();
|
||||
@@ -206,14 +214,6 @@ public class WorkorderServiceImpl implements WorkordeService {
|
||||
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
|
||||
.getWQLObject("pdm_bd_workorder")
|
||||
@@ -226,11 +226,20 @@ public class WorkorderServiceImpl implements WorkordeService {
|
||||
if (Region.HL.value().equals(submit_obj.getString("region_code"))) {
|
||||
JSONObject order_update = new JSONObject();
|
||||
order_update.put("order_status", WorkOrderEnum.ORDER_STATUS_PRODUCING.value());
|
||||
order_update.put("realproducestart_date", DateUtil.now());
|
||||
TaskUtils.addCurrentUpdateColum(order_update);
|
||||
WQLObject
|
||||
.getWQLObject("pdm_bd_workorder")
|
||||
.update(order_update, "workorder_id = " + workorder_id);
|
||||
} else {
|
||||
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("工单所生产物料的砖型参数未正确配置!");
|
||||
}
|
||||
|
||||
JSONArray request = new JSONArray();
|
||||
request.add(submit_obj);
|
||||
@@ -591,4 +600,54 @@ public class WorkorderServiceImpl implements WorkordeService {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public void synchronize() {
|
||||
materialbaseService.synchronize();
|
||||
JSONArray data = WQL
|
||||
.getWO("MPS_PRODUCEDURE001")
|
||||
.setDbname("dataSource1")
|
||||
.addParam("flag", "8")
|
||||
.process()
|
||||
.getResultJSONArray(0);
|
||||
|
||||
JSONObject workOrder = new JSONObject();
|
||||
TaskUtils.addCurrentCreateColum(workOrder);
|
||||
WQLObject workOrderTable = WQLObject.getWQLObject("pdm_bd_workorder");
|
||||
WQLObject materialTable = WQLObject.getWQLObject("md_me_materialbase");
|
||||
WQLObject deviceTable = WQLObject.getWQLObject("pdm_bi_device");
|
||||
for (int i = 0; i < data.size(); i++) {
|
||||
JSONObject datum = data.getJSONObject(i);
|
||||
String plansid = datum.getString("plansid");
|
||||
JSONObject oldWorkOrder = workOrderTable.query("ext_code = '" + plansid + "'").uniqueResult(0);
|
||||
String cinvcode = datum.getString("cinvcode");
|
||||
JSONObject material = materialTable.query("material_number = '" + cinvcode + "'").uniqueResult(0);
|
||||
String sbh = datum.getString("sbh");
|
||||
JSONObject device = deviceTable.query("is_workorder = '1' AND device_code = '" + sbh + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(oldWorkOrder) && ObjectUtil.isNotEmpty(material) && ObjectUtil.isNotEmpty(device)) {
|
||||
if ("HL".equals(device.getString("region_code"))) {
|
||||
workOrder.put("vehicle_type", VehicleType.CUP.value());
|
||||
} else if ("YZ".equals(device.getString("region_code"))) {
|
||||
workOrder.put("vehicle_type", VehicleType.STEEL_TRAY.value());
|
||||
workOrder.put("is_pri", TrueOrFalse.FALSE.value());
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
workOrder.put("workorder_id", IdUtil.getSnowflake().nextId());
|
||||
workOrder.put("workorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER"));
|
||||
workOrder.put("plan_qty", datum.getDoubleValue("ks"));
|
||||
workOrder.put("plan_weight", datum.getDoubleValue("ds") * 1000);
|
||||
workOrder.put("material_id", material.getString("material_id"));
|
||||
workOrder.put("device_id", device.getString("device_id"));
|
||||
workOrder.put("device_code", device.getString("device_code"));
|
||||
workOrder.put("order_status", WorkOrderEnum.ORDER_STATUS_UNPRODUCED.value());
|
||||
workOrder.put("ext_code", plansid);
|
||||
workOrder.put("dz", datum.getDoubleValue("dz") * 1000);
|
||||
workOrder.put("gg", datum.getString("cinvstd"));
|
||||
workOrder.put("kh", datum.getString("ccusname"));
|
||||
workOrderTable.insert(workOrder);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -247,3 +247,15 @@
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
IF 输入.flag = "8"
|
||||
QUERY
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
dbo.EFV_MO_ORDERPLAN
|
||||
WHERE
|
||||
( LEFT ( cinvcode, 1 ) = 'W' OR LEFT ( cinvcode, 3 ) = '902' )
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
@@ -1,250 +0,0 @@
|
||||
package org.nl.wms.sch.task.call.empty;
|
||||
|
||||
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;
|
||||
import org.nl.modules.wql.WQL;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.wms.basedata.eum.TrueOrFalse;
|
||||
import org.nl.wms.sch.manage.*;
|
||||
import org.nl.wms.sch.task.util.TaskUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @author zhangjiangwei
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Component
|
||||
public class FJCallEmptyTask extends AbstractAcsTask {
|
||||
|
||||
@Override
|
||||
public void updateTaskStatus(JSONObject task, String status) {
|
||||
if (TaskStatus.EXECUTING.value().equals(status)) {
|
||||
task.put("task_status", TaskStatus.EXECUTING.value());
|
||||
TaskUtils.addACSUpdateColum(task);
|
||||
WQLObject.getWQLObject("sch_base_task").update(task);
|
||||
} else if (TaskStatus.FINISHED.value().equals(status)) {
|
||||
this.finishTask(task, OperationType.AUTO);
|
||||
} else if (TaskStatus.CANCELLED.value().equals(status)) {
|
||||
this.cancelTask(task, OperationType.AUTO);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createTask(JSONObject form) {
|
||||
JSONObject point = form.getJSONObject("point");
|
||||
JSONObject work_order = form.getJSONObject("workorder");
|
||||
|
||||
JSONObject task = TaskUtils.buildTask(
|
||||
"分拣区叫空",
|
||||
TaskType.CALL_EMPTY.value(),
|
||||
TaskStatus.SURE_END.value(),
|
||||
null,
|
||||
point.getString("point_code"),
|
||||
null,
|
||||
work_order.getString("material_id"),
|
||||
work_order.getString("vehicle_type"),
|
||||
null,
|
||||
TrueOrFalse.trueOrFalse(work_order.getString("is_urgent")) ? 100 : 1,
|
||||
FJCallEmptyTask.class.getName(),
|
||||
form.getString("create_mode"),
|
||||
form.getString("request_param"),
|
||||
form.getString("create_id"),
|
||||
form.getString("create_name")
|
||||
);
|
||||
WQLObject.getWQLObject("sch_base_task").insert(task);
|
||||
|
||||
point.put("lock_type", LockType.TASK_LOCKED.value());
|
||||
point.put("task_code", task.getString("task_code"));
|
||||
TaskUtils.addFormUpdateColum(point, form);
|
||||
WQLObject.getWQLObject("sch_base_point").update(point);
|
||||
|
||||
return task.getString("task_code");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void findStartPoint() {
|
||||
WQLObject task_table = WQLObject.getWQLObject("sch_base_task");
|
||||
JSONArray tasks = task_table
|
||||
.query("is_delete = '0' AND task_status = '" + TaskStatus.SURE_END.value() + "' AND handle_class = '" + FJCallEmptyTask.class.getName() + "'", "priority DESC, create_time ASC")
|
||||
.getResultJSONArray(0);
|
||||
|
||||
if (ObjectUtil.isNotEmpty(tasks)) {
|
||||
WQLObject point_table = WQLObject.getWQLObject("sch_base_point");
|
||||
|
||||
for (int i = 0; i < tasks.size(); i++) {
|
||||
JSONObject task = tasks.getJSONObject(i);
|
||||
|
||||
JSONObject bthc_point = WQL
|
||||
.getWO("CALL_EMPTY_TASK")
|
||||
.addParam("flag", "6")
|
||||
.addParam("vehicle_type", task.getString("vehicle_type"))
|
||||
.addParam("material_id", task.getString("material_id"))
|
||||
.addParam("point_code", task.getString("point_code2"))
|
||||
.process()
|
||||
.uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(bthc_point)) {
|
||||
task.put("task_status", TaskStatus.START_AND_END.value());
|
||||
task.put("point_code1", bthc_point.getString("device_code"));
|
||||
task.put("vehicle_code", TaskUtils.formatVehicleCode(bthc_point.getString("vehicle_code")));
|
||||
task.put("group_id", bthc_point.getLongValue("vd_id"));
|
||||
task.put("remark", "");
|
||||
TaskUtils.addAutoUpdateColum(task);
|
||||
task_table.update(task);
|
||||
|
||||
JSONObject update_point = new JSONObject();
|
||||
update_point.put("lock_type", LockType.TASK_LOCKED.value());
|
||||
update_point.put("task_code", task.getString("task_code"));
|
||||
TaskUtils.addAutoUpdateColum(update_point);
|
||||
point_table.update(update_point, "point_code = '" + bthc_point.getString("device_code") + "'");
|
||||
} else {
|
||||
|
||||
JSONObject point = WQL
|
||||
.getWO("CALL_EMPTY_TASK")
|
||||
.addParam("flag", "4")
|
||||
.addParam("vehicle_type", task.getString("vehicle_type"))
|
||||
.process()
|
||||
.uniqueResult(0);
|
||||
|
||||
if (ObjectUtil.isNotEmpty(point)) {
|
||||
|
||||
task.put("task_status", TaskStatus.START_AND_END.value());
|
||||
task.put("point_code1", point.getString("device_code"));
|
||||
task.put("vehicle_code", TaskUtils.formatVehicleCode(point.getString("vehicle_code")));
|
||||
task.put("material_id", "");
|
||||
task.put("remark", "");
|
||||
TaskUtils.addAutoUpdateColum(task);
|
||||
task_table.update(task);
|
||||
|
||||
JSONObject update_point = new JSONObject();
|
||||
update_point.put("lock_type", LockType.TASK_LOCKED.value());
|
||||
update_point.put("task_code", task.getString("task_code"));
|
||||
TaskUtils.addAutoUpdateColum(update_point);
|
||||
point_table.update(update_point, "point_code = '" + point.getString("device_code") + "'");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void forceFinish(String task_id) {
|
||||
JSONObject task = WQLObject.getWQLObject("sch_base_task").query("task_id = " + task_id).uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(task)) {
|
||||
throw new BadRequestException("未找到任务!");
|
||||
}
|
||||
this.finishTask(task, OperationType.MANUAL);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void cancel(String task_id) {
|
||||
JSONObject task = WQLObject.getWQLObject("sch_base_task").query("task_id = " + task_id).uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(task)) {
|
||||
throw new BadRequestException("未找到任务!");
|
||||
}
|
||||
this.cancelTask(task, OperationType.MANUAL);
|
||||
}
|
||||
|
||||
public void cancelTask(JSONObject task, OperationType operation_type) {
|
||||
if (task.getIntValue("task_status") < Integer.parseInt(TaskStatus.FINISHED.value())) {
|
||||
task.put("task_status", TaskStatus.CANCELLED.value());
|
||||
if (operation_type == OperationType.AUTO) {
|
||||
TaskUtils.addACSUpdateColum(task);
|
||||
} else if (operation_type == OperationType.MANUAL) {
|
||||
TaskUtils.addCurrentUpdateColum(task);
|
||||
}
|
||||
WQLObject.getWQLObject("sch_base_task").update(task);
|
||||
|
||||
WQLObject point_table = WQLObject.getWQLObject("sch_base_point");
|
||||
|
||||
String point_code1 = task.getString("point_code1");
|
||||
if (StrUtil.isNotBlank(point_code1)) {
|
||||
JSONObject point1 = point_table.query("point_code = '" + point_code1 + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(point1)
|
||||
&& LockType.TASK_LOCKED.value().equals(point1.getString("lock_type"))
|
||||
&& task.getString("task_code").equals(point1.getString("task_code"))) {
|
||||
point1.put("lock_type", LockType.UNLOCKED.value());
|
||||
point1.put("task_code", "");
|
||||
if (operation_type == OperationType.AUTO) {
|
||||
TaskUtils.addACSUpdateColum(point1);
|
||||
} else if (operation_type == OperationType.MANUAL) {
|
||||
TaskUtils.addCurrentUpdateColum(point1);
|
||||
}
|
||||
point_table.update(point1);
|
||||
}
|
||||
}
|
||||
|
||||
String point_code2 = task.getString("point_code2");
|
||||
if (StrUtil.isNotBlank(point_code2)) {
|
||||
JSONObject point2 = new JSONObject();
|
||||
point2.put("lock_type", LockType.UNLOCKED.value());
|
||||
point2.put("task_code", "");
|
||||
if (operation_type == OperationType.AUTO) {
|
||||
TaskUtils.addACSUpdateColum(point2);
|
||||
} else if (operation_type == OperationType.MANUAL) {
|
||||
TaskUtils.addCurrentUpdateColum(point2);
|
||||
}
|
||||
point_table.update(point2, "point_code = '" + point_code2 + "'");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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())) {
|
||||
throw new BadRequestException("只能手动完成 [确认起点和终点] 之后的任务!");
|
||||
}
|
||||
|
||||
task.put("task_status", TaskStatus.FINISHED.value());
|
||||
if (operation_type == OperationType.AUTO) {
|
||||
TaskUtils.addACSUpdateColum(task);
|
||||
} else if (operation_type == OperationType.MANUAL) {
|
||||
TaskUtils.addCurrentUpdateColum(task);
|
||||
}
|
||||
WQLObject.getWQLObject("sch_base_task").update(task);
|
||||
|
||||
WQLObject point_table = WQLObject.getWQLObject("sch_base_point");
|
||||
|
||||
String point_code1 = task.getString("point_code1");
|
||||
if (StrUtil.isNotBlank(point_code1)) {
|
||||
JSONObject point1 = point_table.query("point_code = '" + point_code1 + "'").uniqueResult(0);
|
||||
if (LockType.TASK_LOCKED.value().equals(point1.getString("lock_type"))
|
||||
&& task.getString("task_code").equals(point1.getString("task_code"))) {
|
||||
point1.put("lock_type", LockType.UNLOCKED.value());
|
||||
point1.put("task_code", "");
|
||||
point1.put("vehicle_type", "");
|
||||
point1.put("vehicle_code", "");
|
||||
point1.put("point_status", PointStatus.EMPTY.value());
|
||||
if (operation_type == OperationType.AUTO) {
|
||||
TaskUtils.addACSUpdateColum(point1);
|
||||
} else if (operation_type == OperationType.MANUAL) {
|
||||
TaskUtils.addCurrentUpdateColum(point1);
|
||||
}
|
||||
point_table.update(point1);
|
||||
}
|
||||
}
|
||||
|
||||
String point_code2 = task.getString("point_code2");
|
||||
if (StrUtil.isNotBlank(point_code2)) {
|
||||
JSONObject point2 = new JSONObject();
|
||||
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("point_status", PointStatus.EMPTY_VEHICLE.value());
|
||||
if (operation_type == OperationType.AUTO) {
|
||||
TaskUtils.addACSUpdateColum(point2);
|
||||
} else if (operation_type == OperationType.MANUAL) {
|
||||
TaskUtils.addCurrentUpdateColum(point2);
|
||||
}
|
||||
point_table.update(point2, "point_code = '" + point_code2 + "'");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -76,7 +76,7 @@ public class GTKCallEmptyTask extends AbstractAcsTask {
|
||||
|
||||
JSONObject point = WQL
|
||||
.getWO("CALL_EMPTY_TASK")
|
||||
.addParam("flag", "3")
|
||||
.addParam("flag", "4")
|
||||
.process()
|
||||
.uniqueResult(0);
|
||||
|
||||
|
||||
@@ -87,7 +87,7 @@ public class HLCallEmptyTask extends AbstractAcsTask {
|
||||
|
||||
JSONObject point = WQL
|
||||
.getWO("CALL_EMPTY_TASK")
|
||||
.addParam("flag", "5")
|
||||
.addParam("flag", "3")
|
||||
.process()
|
||||
.uniqueResult(0);
|
||||
|
||||
|
||||
@@ -88,32 +88,32 @@ public class YZCallEmptyTask extends AbstractAcsTask {
|
||||
JSONObject task = tasks.getJSONObject(i);
|
||||
|
||||
JSONObject point = null;
|
||||
String material_id = task.getString("material_id");
|
||||
if (StrUtil.isNotBlank(material_id)) {
|
||||
point = WQL
|
||||
.getWO("CALL_EMPTY_TASK")
|
||||
.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);
|
||||
}
|
||||
}
|
||||
// String material_id = task.getString("material_id");
|
||||
// if (StrUtil.isNotBlank(material_id)) {
|
||||
// point = WQL
|
||||
// .getWO("CALL_EMPTY_TASK")
|
||||
// .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)) {
|
||||
point = WQL
|
||||
.getWO("CALL_EMPTY_TASK")
|
||||
@@ -250,8 +250,13 @@ 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());
|
||||
String groupId = task.getString("group_id");
|
||||
point2.put("vd_id", groupId);
|
||||
if (StrUtil.isBlank(groupId)) {
|
||||
point2.put("point_status", PointStatus.EMPTY_VEHICLE.value());
|
||||
} else {
|
||||
point2.put("point_status", PointStatus.HAS_GOODS.value());
|
||||
}
|
||||
if (operation_type == OperationType.AUTO) {
|
||||
TaskUtils.addACSUpdateColum(point2);
|
||||
} else if (operation_type == OperationType.MANUAL) {
|
||||
|
||||
@@ -64,6 +64,10 @@
|
||||
WHERE
|
||||
p.is_used = '1'
|
||||
AND p.lock_type = '1'
|
||||
AND p.region_code = 'YQHJ'
|
||||
AND p.point_type = '1'
|
||||
AND p.point_status = '3'
|
||||
AND p.vehicle_type = '2'
|
||||
AND vd.is_delete = '0'
|
||||
AND vd.is_full = '0'
|
||||
AND vd.point_code = 输入.point_code
|
||||
@@ -71,3 +75,35 @@
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
IF 输入.flag = "3"
|
||||
QUERY
|
||||
SELECT
|
||||
p.*
|
||||
FROM
|
||||
sch_base_point p
|
||||
WHERE
|
||||
p.is_used = '1'
|
||||
AND p.lock_type = '1'
|
||||
AND p.region_code = 'KLHJ'
|
||||
AND p.point_type = '1'
|
||||
AND p.point_status = '2'
|
||||
AND p.vehicle_type = '1'
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
IF 输入.flag = "4"
|
||||
QUERY
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
sch_base_point
|
||||
WHERE
|
||||
is_used = '1'
|
||||
AND lock_type = '1'
|
||||
AND region_code = 'GTK'
|
||||
AND point_type = '4'
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
@@ -75,7 +75,6 @@ public class FJCallMaterialTask extends AbstractAcsTask {
|
||||
task.put("task_status", TaskStatus.START_AND_END.value());
|
||||
task.put("point_code1", point1.getString("point_code"));
|
||||
task.put("vehicle_code", TaskUtils.formatVehicleCode(point1.getString("vehicle_code")));
|
||||
task.put("material_id", point1.getString("material_id"));
|
||||
task.put("group_id", point1.getString("vd_id"));
|
||||
task.put("remark", "");
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ import lombok.RequiredArgsConstructor;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.wql.WQL;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.wms.basedata.eum.TrueOrFalse;
|
||||
import org.nl.wms.basedata.eum.VehicleType;
|
||||
import org.nl.wms.sch.manage.*;
|
||||
import org.nl.wms.sch.task.util.TaskUtils;
|
||||
@@ -75,6 +76,9 @@ public class GZCallMaterialTask extends AbstractAcsTask {
|
||||
task.put("vehicle_code", TaskUtils.formatVehicleCode(point1.getString("vehicle_code")));
|
||||
task.put("group_id", point1.getString("vd_id"));
|
||||
task.put("remark", "");
|
||||
if (TrueOrFalse.TRUE.value().equals(point1.getString("is_urgent"))) {
|
||||
task.put("priority", 100);
|
||||
}
|
||||
|
||||
JSONObject point_update = new JSONObject();
|
||||
point_update.put("lock_type", LockType.TASK_LOCKED.value());
|
||||
|
||||
@@ -59,14 +59,48 @@ public class YZCallMaterialTask extends AbstractAcsTask {
|
||||
form.getString("create_id"),
|
||||
form.getString("create_name")
|
||||
);
|
||||
WQLObject.getWQLObject("sch_base_task").insert(task);
|
||||
|
||||
point.put("lock_type", LockType.TASK_LOCKED.value());
|
||||
point.put("task_code", task.getString("task_code"));
|
||||
TaskUtils.addFormUpdateColum(point, form);
|
||||
WQLObject.getWQLObject("sch_base_point").update(point);
|
||||
JSONObject point1 = WQL
|
||||
.getWO("CALL_MATERIAL_TASK")
|
||||
.addParam("flag", "3")
|
||||
.addParam("material_id", task.getString("material_id"))
|
||||
.addParam("device_code", workorder.getString("device_code"))
|
||||
.process()
|
||||
.uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(point1)) {
|
||||
point1 = WQL
|
||||
.getWO("CALL_MATERIAL_TASK")
|
||||
.addParam("flag", "4")
|
||||
.addParam("material_id", task.getString("material_id"))
|
||||
.process()
|
||||
.uniqueResult(0);
|
||||
}
|
||||
|
||||
return task.getString("task_code");
|
||||
if (ObjectUtil.isNotEmpty(point1)) {
|
||||
point.put("lock_type", LockType.TASK_LOCKED.value());
|
||||
point.put("task_code", task.getString("task_code"));
|
||||
TaskUtils.addFormUpdateColum(point, form);
|
||||
WQLObject point_table = WQLObject.getWQLObject("sch_base_point");
|
||||
point_table.update(point);
|
||||
|
||||
task.put("task_status", TaskStatus.START_AND_END.value());
|
||||
task.put("point_code1", point1.getString("point_code"));
|
||||
task.put("vehicle_code", TaskUtils.formatVehicleCode(point1.getString("vehicle_code")));
|
||||
task.put("group_id", point1.getString("vd_id"));
|
||||
task.put("remark", "");
|
||||
|
||||
JSONObject point_update = new JSONObject();
|
||||
point_update.put("lock_type", LockType.TASK_LOCKED.value());
|
||||
point_update.put("task_code", task.getString("task_code"));
|
||||
TaskUtils.addFormUpdateColum(point_update, form);
|
||||
point_table.update(point_update, "point_id = " + point1.getLongValue("point_id"));
|
||||
|
||||
WQLObject.getWQLObject("sch_base_task").insert(task);
|
||||
|
||||
return task.getString("task_code");
|
||||
} else {
|
||||
throw new BadRequestException("[" + point.get("point_code") + "] 的叫料任务未找到起点!");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -82,36 +116,7 @@ public class YZCallMaterialTask extends AbstractAcsTask {
|
||||
for (int i = 0; i < tasks.size(); i++) {
|
||||
JSONObject task = tasks.getJSONObject(i);
|
||||
|
||||
WO wo = WQL
|
||||
.getWO("CALL_MATERIAL_TASK")
|
||||
.addParam("flag", "4")
|
||||
.addParam("material_id", task.getString("material_id"));
|
||||
|
||||
JSONObject point2 = point_table.query("point_code = '" + task.getString("point_code2") + "'").uniqueResult(0);
|
||||
if ("2".equals(point2.getString("point_type"))) {
|
||||
wo.addParam("is_new", TrueOrFalse.TRUE.value());
|
||||
} else if ("3".equals(point2.getString("point_type"))) {
|
||||
wo.addParam("is_new", TrueOrFalse.FALSE.value());
|
||||
}
|
||||
|
||||
JSONObject point = wo.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("group_id", point.getString("vd_id"));
|
||||
task.put("material_id", point.getString("material_id"));
|
||||
task.put("remark", "");
|
||||
TaskUtils.addAutoUpdateColum(task);
|
||||
task_table.update(task);
|
||||
|
||||
JSONObject point_update = new JSONObject();
|
||||
point_update.put("lock_type", LockType.TASK_LOCKED.value());
|
||||
point_update.put("task_code", task.getString("task_code"));
|
||||
TaskUtils.addAutoUpdateColum(point_update);
|
||||
point_table.update(point_update, "point_id = " + point.getLongValue("point_id"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -209,6 +214,7 @@ public class YZCallMaterialTask 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);
|
||||
@@ -226,6 +232,7 @@ public class YZCallMaterialTask 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.HAS_GOODS.value());
|
||||
if (operation_type == OperationType.AUTO) {
|
||||
TaskUtils.addACSUpdateColum(point2);
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
#################################################
|
||||
输入.flag TYPEAS s_string
|
||||
输入.material_id TYPEAS f_string
|
||||
输入.is_new TYPEAS s_string
|
||||
输入.device_code TYPEAS s_string
|
||||
|
||||
[临时表]
|
||||
--这边列出来的临时表就会在运行期动态创建
|
||||
@@ -81,8 +81,8 @@
|
||||
AND p.vehicle_type = '2'
|
||||
AND vd.material_id = 输入.material_id
|
||||
ORDER BY
|
||||
wo.is_pri DESC,
|
||||
wo.is_urgent DESC,
|
||||
wo.is_pri DESC,
|
||||
vd.create_time ASC
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
@@ -91,25 +91,23 @@
|
||||
IF 输入.flag = "3"
|
||||
QUERY
|
||||
SELECT
|
||||
point.*,
|
||||
vd.material_id,
|
||||
vd.vd_id
|
||||
p.*
|
||||
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 = '1'
|
||||
p.is_used = '1'
|
||||
AND p.lock_type = '1'
|
||||
AND p.region_code = 'KLHJ'
|
||||
AND p.point_type = '3'
|
||||
AND p.point_status = '3'
|
||||
AND p.device_code = 输入.device_code
|
||||
AND p.vehicle_type = '1'
|
||||
AND vd.material_id = 输入.material_id
|
||||
ORDER BY
|
||||
workorder.is_urgent DESC, vd.create_time ASC
|
||||
wo.is_pri DESC,
|
||||
vd.create_time ASC
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
@@ -117,30 +115,22 @@
|
||||
IF 输入.flag = "4"
|
||||
QUERY
|
||||
SELECT
|
||||
point.*,
|
||||
mb1.material_id,
|
||||
vd.vd_id
|
||||
p.*
|
||||
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 md_me_materialbase mb1 ON vd.material_id = mb1.material_id
|
||||
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 = 'KLHJ'
|
||||
AND point.point_type = '1'
|
||||
AND point.point_status = '1'
|
||||
AND point.vehicle_type = '1'
|
||||
AND mb1.material_id = 输入.material_id
|
||||
AND vd.stand_status IN ('3', '4')
|
||||
OPTION 输入.is_new <> ""
|
||||
workorder.is_new = 输入.is_new
|
||||
ENDOPTION
|
||||
p.is_used = '1'
|
||||
AND p.lock_type = '1'
|
||||
AND p.region_code = 'KLHJ'
|
||||
AND p.point_type = '1'
|
||||
AND p.point_status = '3'
|
||||
AND p.vehicle_type = '1'
|
||||
AND vd.material_id = 输入.material_id
|
||||
ORDER BY
|
||||
vd.create_time ASC
|
||||
wo.is_pri DESC,
|
||||
vd.create_time ASC
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
@@ -54,7 +54,7 @@ public class FJSendEmptyTask extends AbstractAcsTask {
|
||||
null,
|
||||
null,
|
||||
VehicleType.STEEL_TRAY.value(),
|
||||
form.getString("vehicle_code"),
|
||||
point.getString("vehicle_code"),
|
||||
priority,
|
||||
FJSendEmptyTask.class.getName(),
|
||||
form.getString("create_mode"),
|
||||
@@ -80,14 +80,12 @@ public class FJSendEmptyTask extends AbstractAcsTask {
|
||||
.query("is_delete = '0' AND task_status = '" + TaskStatus.SURE_START.value() + "' AND handle_class = '" + FJSendEmptyTask.class.getName() + "'", "priority DESC, create_time ASC")
|
||||
.getResultJSONArray(0);
|
||||
if (ObjectUtil.isNotEmpty(tasks)) {
|
||||
WQLObject point_table = WQLObject.getWQLObject("sch_base_point");
|
||||
|
||||
for (int i = 0; i < tasks.size(); i++) {
|
||||
JSONObject task = tasks.getJSONObject(i);
|
||||
|
||||
JSONObject point = WQL
|
||||
.getWO("SEND_EMPTY_TASK")
|
||||
.addParam("flag", "1")
|
||||
.addParam("flag", "2")
|
||||
.process()
|
||||
.uniqueResult(0);
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.wql.WQL;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.wms.basedata.eum.TrueOrFalse;
|
||||
import org.nl.wms.basedata.eum.VehicleType;
|
||||
import org.nl.wms.sch.manage.*;
|
||||
import org.nl.wms.sch.task.util.TaskUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -43,10 +44,8 @@ public class YZSendEmptyTask extends AbstractAcsTask {
|
||||
if (ObjectUtil.isNotEmpty(work_order)) {
|
||||
priority = TrueOrFalse.trueOrFalse(work_order.getString("is_urgent")) ? 100 : 1;
|
||||
}
|
||||
if (Region.KLHJ.value().equals(point.getString("region_code"))) {
|
||||
priority++;
|
||||
}
|
||||
|
||||
String vehicleCode = TaskUtils.formatVehicleCode(point.getString("vehicle_code"));
|
||||
JSONObject task = TaskUtils.buildTask(
|
||||
"压制区送空",
|
||||
TaskType.SEND_EMPTY.value(),
|
||||
@@ -55,8 +54,8 @@ public class YZSendEmptyTask extends AbstractAcsTask {
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
point.getString("vehicle_type"),
|
||||
point.getString("vehicle_code"),
|
||||
VehicleType.CUP.value(),
|
||||
vehicleCode,
|
||||
priority,
|
||||
YZSendEmptyTask.class.getName(),
|
||||
form.getString("create_mode"),
|
||||
@@ -68,9 +67,16 @@ public class YZSendEmptyTask extends AbstractAcsTask {
|
||||
|
||||
point.put("lock_type", LockType.TASK_LOCKED.value());
|
||||
point.put("task_code", task.getString("task_code"));
|
||||
point.put("vd_id", null);
|
||||
point.put("point_status", PointStatus.EMPTY_VEHICLE.value());
|
||||
TaskUtils.addFormUpdateColum(point, form);
|
||||
WQLObject.getWQLObject("sch_base_point").update(point);
|
||||
|
||||
JSONObject vdUpdate = new JSONObject();
|
||||
vdUpdate.put("is_delete", TrueOrFalse.TRUE.value());
|
||||
TaskUtils.addFormUpdateColum(vdUpdate, form);
|
||||
WQLObject.getWQLObject("st_ivt_vehicle_detail").update(vdUpdate, "vehicle_type = '1' AND vehicle_code = '" + vehicleCode + "'");
|
||||
|
||||
return task.getString("task_code");
|
||||
}
|
||||
|
||||
@@ -89,7 +95,7 @@ public class YZSendEmptyTask extends AbstractAcsTask {
|
||||
|
||||
JSONObject point = WQL
|
||||
.getWO("SEND_EMPTY_TASK")
|
||||
.addParam("flag", "2")
|
||||
.addParam("flag", "1")
|
||||
.process()
|
||||
.uniqueResult(0);
|
||||
|
||||
@@ -202,6 +208,7 @@ public class YZSendEmptyTask 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);
|
||||
@@ -219,6 +226,7 @@ public class YZSendEmptyTask 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", null);
|
||||
point2.put("point_status", PointStatus.EMPTY_VEHICLE.value());
|
||||
if (operation_type == OperationType.AUTO) {
|
||||
TaskUtils.addACSUpdateColum(point2);
|
||||
|
||||
@@ -40,18 +40,15 @@
|
||||
IF 输入.flag = "1"
|
||||
QUERY
|
||||
SELECT
|
||||
point.*
|
||||
*
|
||||
FROM
|
||||
sch_base_point point
|
||||
LEFT JOIN sch_base_task task ON point.point_code = task.point_code2
|
||||
AND task.task_status <> '7'
|
||||
AND task_status <> '8'
|
||||
sch_base_point
|
||||
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
|
||||
is_used = '1'
|
||||
AND lock_type = '1'
|
||||
AND region_code = 'KLHJ'
|
||||
AND point_type = '1'
|
||||
AND point_status = '1'
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
@@ -59,15 +56,14 @@
|
||||
IF 输入.flag = "2"
|
||||
QUERY
|
||||
SELECT
|
||||
*
|
||||
*
|
||||
FROM
|
||||
sch_base_point
|
||||
sch_base_point
|
||||
WHERE
|
||||
is_used = '1'
|
||||
AND lock_type = '1'
|
||||
AND point_status = '0'
|
||||
AND region_code = 'KLHJ'
|
||||
AND point_type = '1'
|
||||
is_used = '1'
|
||||
AND lock_type = '1'
|
||||
AND region_code = 'GTK'
|
||||
AND point_type = '4'
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
@@ -196,6 +196,7 @@ public class GZSendMaterialTask 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);
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package org.nl.wms.sch.task.send.material;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
@@ -11,6 +13,7 @@ import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.wms.basedata.eum.TrueOrFalse;
|
||||
import org.nl.wms.sch.manage.*;
|
||||
import org.nl.wms.sch.task.util.TaskUtils;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
@@ -68,6 +71,7 @@ public class HLSendMaterialTask extends AbstractAcsTask {
|
||||
point.put("vehicle_type", vd.getLongValue("vehicle_type"));
|
||||
point.put("vehicle_code", vd.getLongValue("vehicle_code"));
|
||||
point.put("vd_id", vd.getLongValue("vd_id"));
|
||||
point.put("point_status", PointStatus.HAS_GOODS.value());
|
||||
TaskUtils.addFormUpdateColum(point, form);
|
||||
WQLObject.getWQLObject("sch_base_point").update(point);
|
||||
|
||||
@@ -190,17 +194,6 @@ public class HLSendMaterialTask extends AbstractAcsTask {
|
||||
}
|
||||
point_table.update(point2, "point_code = '" + point_code2 + "'");
|
||||
}
|
||||
|
||||
WQLObject.getWQLObject("das_produce_number").delete("data_id = " + task.getLongValue("table_fk_id"));
|
||||
|
||||
JSONObject workorder = WQL.getWO("SEND_MATERIAL_TASK").addParam("flag", "6").addParam("vd_id", task.getString("vd_id")).process().uniqueResult(0);
|
||||
workorder.put("real_qty", workorder.getIntValue("real_qty") - workorder.getIntValue("weight"));
|
||||
if (operation_type == OperationType.AUTO) {
|
||||
TaskUtils.addACSUpdateColum(workorder);
|
||||
} else if (operation_type == OperationType.MANUAL) {
|
||||
TaskUtils.addCurrentUpdateColum(workorder);
|
||||
}
|
||||
WQLObject.getWQLObject("pdm_bd_workorder").update(workorder);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -260,6 +253,27 @@ public class HLSendMaterialTask extends AbstractAcsTask {
|
||||
}
|
||||
point_table.update(point2, "point_code = '" + point_code2 + "'");
|
||||
}
|
||||
|
||||
JSONObject vd = WQLObject.getWQLObject("st_ivt_vehicle_detail").query("vd_id = " + task.getString("group_id")).uniqueResult(0);
|
||||
String today = DateUtil.today();
|
||||
WQLObject wodTable = WQLObject.getWQLObject("pdm_bd_work_order_daily");
|
||||
String workOrderId = vd.getString("workorder_id");
|
||||
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("weight", vd.getDouble("weight"));
|
||||
workOrderDaily.put("is_report", TrueOrFalse.TRUE.value());
|
||||
TaskUtils.addACSCreateColum(workOrderDaily);
|
||||
wodTable.insert(workOrderDaily);
|
||||
} else {
|
||||
workOrderDaily.put("weight", workOrderDaily.getDouble("weight") + vd.getDouble("weight"));
|
||||
TaskUtils.addACSUpdateColum(workOrderDaily);
|
||||
wodTable.update(workOrderDaily);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,6 +64,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"));
|
||||
point.put("point_status", PointStatus.HAS_GOODS.value());
|
||||
TaskUtils.addFormUpdateColum(point, form);
|
||||
WQLObject.getWQLObject("sch_base_point").update(point);
|
||||
|
||||
|
||||
@@ -121,5 +121,5 @@
|
||||
AND region_code = 'KLHJ'
|
||||
AND point_type = '1'
|
||||
ENDSELECT
|
||||
ENDQUER
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
@@ -161,4 +161,10 @@ public class TaskUtils {
|
||||
row.put("update_optname", form.getString("create_name"));
|
||||
row.put("update_time", DateUtil.now());
|
||||
}
|
||||
|
||||
public static void addCurrentCreateColum(JSONObject row) {
|
||||
row.put("create_id", SecurityUtils.getCurrentUserId());
|
||||
row.put("create_name", SecurityUtils.getCurrentNickName());
|
||||
row.put("create_time", DateUtil.now());
|
||||
}
|
||||
}
|
||||
|
||||
Binary file not shown.
@@ -163,6 +163,6 @@ sa-token:
|
||||
erp:
|
||||
sqlserver:
|
||||
enabled: true
|
||||
jdbcurl: jdbc:sqlserver://192.168.0.251:1433;DatabaseName=UFDATA_001_2023;
|
||||
username: rl
|
||||
password: SH123
|
||||
jdbcurl: jdbc:sqlserver://192.168.0.252:1433;DatabaseName=UFDATA_001_2023;
|
||||
username: sa
|
||||
password: tizi@123
|
||||
|
||||
@@ -104,7 +104,7 @@ https://juejin.cn/post/6844903775631572999
|
||||
|
||||
<!--生产环境:打印控制台和输出到文件-->
|
||||
<springProfile name="prod">
|
||||
<root level="debug">
|
||||
<root level="ERROR">
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
</root>
|
||||
<logger name="org.springframework" level="ERROR" additivity="false">
|
||||
|
||||
@@ -22,22 +22,18 @@ public class PointTest {
|
||||
JSONObject point = new JSONObject();
|
||||
WQLObject point_table = WQLObject.getWQLObject("sch_base_point");
|
||||
String now = DateUtil.now();
|
||||
for (int i = 1; i <= 18; i++) {
|
||||
point.put("point_id", IdUtil.getSnowflake(1L, 1L).nextId());
|
||||
point.put("point_code", "KLHW" + String.format("%02d", i));
|
||||
if (i <= 6) {
|
||||
point.put("point_name", "压机" + i + "困料货位");
|
||||
point.put("point_type", "3");
|
||||
} else if (i <= 10) {
|
||||
point.put("point_name", "液压机困料货位" + i);
|
||||
point.put("point_type", "2");
|
||||
} else {
|
||||
point.put("point_name", "公用困料货位" + i);
|
||||
point.put("point_type", "1");
|
||||
for (int i = 1; i <= 9; i++) {
|
||||
if (i == 7) {
|
||||
continue;
|
||||
}
|
||||
point.put("region_id", 1695713307387891712L);
|
||||
point.put("region_code", "KLHJ");
|
||||
point.put("region_name", "困料货架");
|
||||
point.put("point_id", IdUtil.getSnowflake(1L, 1L).nextId());
|
||||
point.put("point_code", "YJ" + String.format("%02d", i) + "SL01");
|
||||
point.put("point_name", "压机" + i + "上料位");
|
||||
point.put("point_type", "2");
|
||||
point.put("region_id", 1695713335233875968L);
|
||||
point.put("region_code", "YZ");
|
||||
point.put("region_name", "压制区");
|
||||
point.put("device_code", "YJ" + String.format("%02d", i));
|
||||
point.put("lock_type", "1");
|
||||
point.put("create_id", 1);
|
||||
point.put("create_name", "管理员");
|
||||
|
||||
@@ -28,13 +28,12 @@ public class TempTest {
|
||||
|
||||
@Test
|
||||
public void test01() {
|
||||
JSONObject info = WQL
|
||||
.getWO("ACS_TO_WMS")
|
||||
.addParam("flag", "3")
|
||||
.addParam("vehicle_type", "3")
|
||||
.addParam("vehicle_code", "0005")
|
||||
JSONArray info = WQL
|
||||
.getWO("MPS_PRODUCEDURE001")
|
||||
.setDbname("dataSource1")
|
||||
.addParam("flag", "8")
|
||||
.process()
|
||||
.uniqueResult(0);
|
||||
System.out.println(info);
|
||||
.getResultJSONArray(0);
|
||||
info.forEach(System.out::println);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user