Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -437,6 +437,10 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp
|
||||
move = LangProcess.msg("universal_two_yes");
|
||||
jo.put("hasGoods", true);
|
||||
}
|
||||
action = LangProcess.msg("universal_actionMessage1");
|
||||
if(this.action == 1){
|
||||
action = LangProcess.msg("universal_actionMessage2");
|
||||
}
|
||||
jo.put("device_name", this.getDevice().getDevice_name());
|
||||
jo.put("mode", mode);
|
||||
jo.put("move", move);
|
||||
|
||||
@@ -593,7 +593,8 @@ public class BoxStorageOutConveyorDeviceDriver extends AbstractOpcDeviceDriver i
|
||||
|
||||
@Override
|
||||
public JSONObject getDeviceStatusName() {
|
||||
JSONObject jo = new JSONObject();
|
||||
Map<String, Object> map = new LinkedHashMap<>();
|
||||
|
||||
String mode = "";
|
||||
String move = "";
|
||||
String carrier_direction = "";
|
||||
@@ -609,13 +610,13 @@ public class BoxStorageOutConveyorDeviceDriver extends AbstractOpcDeviceDriver i
|
||||
|
||||
if (this.getMove() == 0) {
|
||||
move = LangProcess.msg("universal_no");
|
||||
jo.put("hasGoods", false);
|
||||
map.put("hasGoods", false);
|
||||
} else if (this.getMove() == 1) {
|
||||
move = LangProcess.msg("universal_yes");
|
||||
jo.put("hasGoods", true);
|
||||
map.put("hasGoods", true);
|
||||
} else if (this.getMove() == 2) {
|
||||
move = LangProcess.msg("universal_two_yes");
|
||||
jo.put("hasGoods", true);
|
||||
map.put("hasGoods", true);
|
||||
}
|
||||
|
||||
if (this.carrier_direction == 1) {
|
||||
@@ -623,29 +624,30 @@ public class BoxStorageOutConveyorDeviceDriver extends AbstractOpcDeviceDriver i
|
||||
} else if (this.carrier_direction == 2) {
|
||||
carrier_direction = LangProcess.msg("universal_rollback");
|
||||
}
|
||||
String requireSucess = "0";
|
||||
String requireSucess = LangProcess.msg("universal_actionMessage4");
|
||||
if (this.requireSucess) {
|
||||
requireSucess = "1";
|
||||
requireSucess = LangProcess.msg("universal_actionMessage5");
|
||||
}
|
||||
jo.put("device_name", this.getDevice().getDevice_name());
|
||||
jo.put("mode", mode);
|
||||
jo.put("move", move);
|
||||
jo.put("carrier_direction", carrier_direction);
|
||||
jo.put("task", task);
|
||||
jo.put("last_task", last_task);
|
||||
jo.put("task_code", task_code);
|
||||
jo.put("inst_message", this.inst_message);
|
||||
jo.put("last_inst_message", this.last_inst_message);
|
||||
jo.put("isOnline", this.getIsonline());
|
||||
jo.put("error", ErrorUtil.getDictDetail("error_type", String.valueOf(this.getError())));
|
||||
jo.put("isError", this.getIserror());
|
||||
jo.put("message", LangProcess.msg(message));
|
||||
jo.put("hand_barcode", hand_barcode);
|
||||
jo.put("barcode", this.getMove() == 0 ? null : checkInst() == null ? vehicle_code : checkInst().getVehicle_code());
|
||||
jo.put("is_click", true);
|
||||
jo.put("requireSucess", requireSucess);
|
||||
jo.put("driver_type", "siemens_conveyor");
|
||||
jo.put("notCreateInstMessage", LangProcess.msg(notCreateInstMessage));
|
||||
map.put("device_name", this.getDevice().getDevice_name());
|
||||
map.put("mode", mode);
|
||||
map.put("move", move);
|
||||
map.put("carrier_direction", carrier_direction);
|
||||
map.put("task", task);
|
||||
map.put("last_task", last_task);
|
||||
/*map.put("task_code", task_code);*/
|
||||
map.put("isOnline", this.getIsonline());
|
||||
map.put("isError", this.getIserror());
|
||||
map.put("hand_barcode", hand_barcode);
|
||||
map.put("barcode", this.getMove() == 0 ? null : checkInst() == null ? vehicle_code : checkInst().getVehicle_code());
|
||||
map.put("is_click", true);
|
||||
map.put("error", ErrorUtil.getDictDetail("error_type", String.valueOf(this.getError())));
|
||||
map.put("requireSucess", requireSucess);
|
||||
map.put("driver_type", "siemens_conveyor");
|
||||
map.put("message", LangProcess.msg(message));
|
||||
map.put("inst_message", this.inst_message);
|
||||
map.put("last_inst_message", this.last_inst_message);
|
||||
map.put("notCreateInstMessage", LangProcess.msg(notCreateInstMessage));
|
||||
JSONObject jo = new JSONObject(map);
|
||||
return jo;
|
||||
}
|
||||
|
||||
|
||||
@@ -311,7 +311,8 @@ public class RgvDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDr
|
||||
|
||||
@Override
|
||||
public JSONObject getDeviceStatusName() {
|
||||
JSONObject jo = new JSONObject();
|
||||
Map<String, Object> map = new LinkedHashMap<>();
|
||||
|
||||
String mode = "";
|
||||
String move = "";
|
||||
String action = "";
|
||||
@@ -328,20 +329,20 @@ public class RgvDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDr
|
||||
|
||||
if (this.getMove() == 0) {
|
||||
move = LangProcess.msg("universal_no");
|
||||
jo.put("hasGoods", false);
|
||||
map.put("hasGoods", false);
|
||||
} else if (this.getMove() == 1) {
|
||||
move = LangProcess.msg("universal_yes");
|
||||
jo.put("hasGoods", true);
|
||||
map.put("hasGoods", true);
|
||||
} else if (this.getMove() == 2) {
|
||||
move = LangProcess.msg("universal_two_yes");
|
||||
jo.put("hasGoods", true);
|
||||
map.put("hasGoods", true);
|
||||
}
|
||||
|
||||
String requireSucess = "0";
|
||||
String requireSucess = LangProcess.msg("universal_actionMessage4");
|
||||
if (this.requireSucess) {
|
||||
requireSucess = "1";
|
||||
requireSucess = LangProcess.msg("universal_actionMessage5");
|
||||
}
|
||||
jo.put("requireSucess", requireSucess);
|
||||
map.put("requireSucess", requireSucess);
|
||||
if (this.getAction() == 1) {
|
||||
action = LangProcess.msg("universal_delivery");
|
||||
} else if (this.getAction() == 2) {
|
||||
@@ -352,21 +353,22 @@ public class RgvDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDr
|
||||
action = LangProcess.msg("universal_releasing_completed");
|
||||
}
|
||||
|
||||
jo.put("device_name", this.getDevice().getDevice_name());
|
||||
jo.put("mode", mode);
|
||||
jo.put("move", move);
|
||||
jo.put("action", action);
|
||||
jo.put("task", task);
|
||||
jo.put("walk_y", walk_y);
|
||||
jo.put("isOnline", this.getIsonline());
|
||||
jo.put("error", ErrorUtil.getDictDetail("error_type", String.valueOf(this.getError())));
|
||||
jo.put("isError", this.getIserror());
|
||||
jo.put("message", message);
|
||||
jo.put("notCreateTaskMessage", notCreateTaskMessage);
|
||||
jo.put("notCreateInstMessage",notCreateInstMessage);
|
||||
jo.put("feedMessage", feedMessage);
|
||||
jo.put("driver_type", "siemens_conveyor");
|
||||
jo.put("is_click", true);
|
||||
map.put("device_name", this.getDevice().getDevice_name());
|
||||
map.put("mode", mode);
|
||||
map.put("move", move);
|
||||
/*jo.put("action", action);*/
|
||||
/*jo.put("task", task);*/
|
||||
/*jo.put("walk_y", this.walk_y);*/
|
||||
map.put("isOnline", this.getIsonline());
|
||||
map.put("error", ErrorUtil.getDictDetail("error_type", String.valueOf(this.getError())));
|
||||
map.put("isError", this.getIserror());
|
||||
map.put("message", message);
|
||||
/*jo.put("notCreateTaskMessage", notCreateTaskMessage);
|
||||
jo.put("notCreateInstMessage",notCreateInstMessage);*/
|
||||
map.put("feedMessage", feedMessage);
|
||||
map.put("driver_type", "siemens_conveyor");
|
||||
map.put("is_click", true);
|
||||
JSONObject jo = new JSONObject(map);
|
||||
return jo;
|
||||
}
|
||||
|
||||
|
||||
@@ -236,7 +236,7 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i
|
||||
remark = remark + "光电信号(move)为有货状态,";
|
||||
}
|
||||
if (task != 0) {
|
||||
remark = "universal_remark4";
|
||||
remark = "任务不等于0";
|
||||
if (ObjectUtil.isNotEmpty(this.inst)) {
|
||||
this.inst = null;
|
||||
}
|
||||
@@ -1082,7 +1082,6 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i
|
||||
@Override
|
||||
public JSONObject getDeviceStatusName() {
|
||||
Map<String, Object> map = new LinkedHashMap<>();
|
||||
|
||||
String mode = "";
|
||||
String move = "";
|
||||
String action = "";
|
||||
|
||||
@@ -211,11 +211,11 @@ public class PlugPullDeviceSiteDeviceDriver extends AbstractOpcDeviceDriver impl
|
||||
|
||||
if (mode == 0) {
|
||||
this.setIsonline(false);
|
||||
message = "universal_off-line";
|
||||
message = LangProcess.msg("universal_off-line");
|
||||
//有报警
|
||||
} else if (error != 0) {
|
||||
this.setIserror(true);
|
||||
message = "universal_message3";
|
||||
message = LangProcess.msg("universal_message3");
|
||||
//无报警
|
||||
} else {
|
||||
this.setIsonline(true);
|
||||
|
||||
@@ -256,11 +256,11 @@ public class PullHeadManipulatorDeviceDriver extends AbstractOpcDeviceDriver imp
|
||||
|
||||
if (mode == 0) {
|
||||
this.setIsonline(false);
|
||||
message = "universal_off-line";
|
||||
message = LangProcess.msg("universal_off-line");
|
||||
//有报警
|
||||
} else if (error != 0) {
|
||||
this.setIserror(true);
|
||||
message = "universal_message3";
|
||||
message = LangProcess.msg("universal_message3");
|
||||
//无报警
|
||||
} else {
|
||||
this.setIsonline(true);
|
||||
|
||||
@@ -654,6 +654,9 @@ export default {
|
||||
} else if (val === 'task') {
|
||||
const obj = { name: i18n.t('monitor.click.task_number'), value: data[val] }
|
||||
this.arr.push(obj)
|
||||
} else if (val === 'last_task') {
|
||||
const obj = { name: '上次任务号', value: data[val] }
|
||||
this.arr.push(obj)
|
||||
} else if (val === 'is_disable') {
|
||||
const obj = { name: i18n.t('monitor.click.disable'), value: data[val] }
|
||||
this.arr.push(obj)
|
||||
|
||||
@@ -1208,6 +1208,10 @@ public class MesToLmsServiceImpl implements MesToLmsService {
|
||||
String changeinv_id = IdUtil.getSnowflake(1, 1).nextId() + "";
|
||||
|
||||
JSONObject jsonStor = WQLObject.getWQLObject("st_ivt_bsrealstorattr").query("stor_code = '" + stor_code + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(jsonStor)) {
|
||||
throw new BadRequestException("仓库不存在:"+stor_code);
|
||||
}
|
||||
|
||||
JSONArray rowsDtl = new JSONArray();
|
||||
|
||||
for (int i = 0; i < rows.size(); i++) {
|
||||
|
||||
@@ -141,7 +141,7 @@ public class VirtualOutServiceImpl implements VirtualOutService {
|
||||
// 调用强制完成接口
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("iostorinv_id", jsonDis.getString("iostorinv_id"));
|
||||
checkOutBillService.confirm(param);
|
||||
checkOutBillService.confirmOrder(param);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -183,12 +183,19 @@ public interface CheckOutBillService {
|
||||
void manualDiv(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 出库单强制确认
|
||||
* 出库单强制确认(更新仓位以及库存信息)
|
||||
*
|
||||
* @param whereJson /
|
||||
*/
|
||||
void confirm(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 出库单强制确认(只确认单据用-虚拟区的更新库存)
|
||||
*
|
||||
* @param whereJson /
|
||||
*/
|
||||
void confirmOrder(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 出库任务下发
|
||||
*
|
||||
|
||||
@@ -1416,8 +1416,7 @@ public class HandMoveStorServiceImpl implements HandMoveStorService {
|
||||
isNumMap.put("flag", "6");
|
||||
jsonLockArr = WQL.getWO("QST_IVT_HANDMOVESTOR").addParamMap(isNumMap).process().getResultJSONArray(0);
|
||||
|
||||
}
|
||||
if (rightNumArr.size() < leftNumArr.size()) {
|
||||
} else if (rightNumArr.size() < leftNumArr.size()) {
|
||||
/*
|
||||
* 右边开始
|
||||
*/
|
||||
|
||||
@@ -199,7 +199,7 @@ public class CheckOutBillController {
|
||||
@Log("出库单强制确认")
|
||||
|
||||
public ResponseEntity<Object> confirm(@RequestBody JSONObject whereJson) {
|
||||
checkOutBillService.confirm(whereJson);
|
||||
checkOutBillService.confirmOrder(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
|
||||
@@ -5101,6 +5101,373 @@ public class CheckOutBillServiceImpl implements CheckOutBillService {
|
||||
}*/
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void confirmOrder(JSONObject form) {
|
||||
//出库分配表
|
||||
WQLObject wo_dis = WQLObject.getWQLObject("ST_IVT_IOStorInvDis");
|
||||
//出库明细表
|
||||
WQLObject wo_dtl = WQLObject.getWQLObject("ST_IVT_IOStorInvDtl");
|
||||
//出库主表
|
||||
WQLObject wo_mst = WQLObject.getWQLObject("ST_IVT_IOStorInv");
|
||||
// 任务表
|
||||
WQLObject taskTab = WQLObject.getWQLObject("sch_base_task");
|
||||
// 子卷包装关系表
|
||||
WQLObject subTab = WQLObject.getWQLObject("pdm_bi_subpackagerelation");
|
||||
//包装关系出入库记录表
|
||||
WQLObject sub_record = WQLObject.getWQLObject("pdm_bi_subpackagerelationrecord");
|
||||
|
||||
String iostorinv_id = form.getString("iostorinv_id");
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
String now = DateUtil.now();
|
||||
|
||||
//查询主表信息
|
||||
JSONObject jo_mst = wo_mst.query("iostorinv_id = '" + iostorinv_id + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(jo_mst)) {
|
||||
throw new BadRequestException("未查到相关出库单");
|
||||
}
|
||||
|
||||
//判断分配明细中是否有未生成状态的分配明细
|
||||
JSONArray disArr = wo_dis.query("iostorinv_id = '" + iostorinv_id + "' and work_status = '00'").getResultJSONArray(0);
|
||||
if (ObjectUtil.isNotEmpty(disArr)) {
|
||||
throw new BadRequestException("有未生成状态的分配明细,不允许强制确认");
|
||||
}
|
||||
|
||||
// 查询是否有未完成的任务
|
||||
List<JSONObject> isTaskEmp = WQL.getWO("QST_IVT_CHECKOUTBILL")
|
||||
.addParam("flag", "555")
|
||||
.addParam("iostorinv_id", iostorinv_id)
|
||||
.process()
|
||||
.getResultJSONArray(0)
|
||||
.toJavaList(JSONObject.class);
|
||||
|
||||
if (ObjectUtil.isNotEmpty(isTaskEmp)) {
|
||||
// 拼接字符串
|
||||
String box_no = isTaskEmp.stream()
|
||||
.map(row -> row.getString("box_no"))
|
||||
.distinct()
|
||||
.collect(Collectors.joining(","));
|
||||
|
||||
throw new BadRequestException("请先完成载具对应的出库任务:" + box_no);
|
||||
}
|
||||
|
||||
//查询生成和未分配完的明细
|
||||
JSONArray dtls = WQL.getWO("QST_IVT_CHECKOUTBILL")
|
||||
.addParam("flag", "2")
|
||||
.addParam("bill_status", "50")
|
||||
.addParam("iostorinv_id", iostorinv_id)
|
||||
.process()
|
||||
.getResultJSONArray(0);
|
||||
|
||||
if (dtls.size() != 0) {
|
||||
for (int i = 0; i < dtls.size(); i++) {
|
||||
JSONObject dtl = dtls.getJSONObject(i);
|
||||
HashMap<String, String> map_dtl = new HashMap<>();
|
||||
//更新明细状态
|
||||
map_dtl.put("bill_status", "99");
|
||||
wo_dtl.update(map_dtl, "iostorinvdtl_id='" + dtl.getString("iostorinvdtl_id") + "'");
|
||||
}
|
||||
}
|
||||
|
||||
HashMap<String, String> map_mst = new HashMap<>();
|
||||
map_mst.put("bill_status", "99");
|
||||
map_mst.put("confirm_optid", currentUserId + "");
|
||||
map_mst.put("confirm_optname", nickName);
|
||||
map_mst.put("confirm_time", now);
|
||||
//更新主表状态
|
||||
wo_mst.update(map_mst, "iostorinv_id = '" + iostorinv_id + "'");
|
||||
|
||||
//查询需要更新库存的分配记录
|
||||
JSONArray diss = WQL.getWO("QST_IVT_CHECKOUTBILL")
|
||||
.addParam("flag", "55")
|
||||
.addParam("iostorinv_id", iostorinv_id)
|
||||
.process()
|
||||
.getResultJSONArray(0);
|
||||
for (int i = 0; i < diss.size(); i++) {
|
||||
JSONObject dis = diss.getJSONObject(i);
|
||||
// 判断是否是主存区的仓位, 是否发超期
|
||||
if ("ZC01,ZZ01".contains(dis.getString("sect_code"))) {
|
||||
|
||||
if (jo_mst.getString("is_overdue").equals("1")) {
|
||||
// 不发超期
|
||||
if (!dis.getString("is_overdue").equals("1")) {
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
double plan_qty = dis.getDoubleValue("plan_qty");
|
||||
double real_qty = dis.getDoubleValue("real_qty");
|
||||
//未出部分,按取消分配处理
|
||||
if (Double.compare(real_qty, plan_qty) != 0) {
|
||||
dis.put("change_qty", plan_qty - real_qty);
|
||||
dis.put("bill_type_scode", jo_mst.getString("bill_type"));
|
||||
dis.put("inv_id", iostorinv_id);
|
||||
dis.put("bill_code", jo_mst.getString("bill_code"));
|
||||
dis.put("bill_table", "ST_IVT_IOStorInv");
|
||||
storPublicService.IOStor(dis, "12");
|
||||
}
|
||||
//更新已出库重量
|
||||
if (real_qty != 0) {
|
||||
dis.put("change_qty", real_qty);
|
||||
dis.put("bill_type_scode", jo_mst.getString("bill_type"));
|
||||
dis.put("inv_id", iostorinv_id);
|
||||
dis.put("bill_code", jo_mst.getString("bill_code"));
|
||||
dis.put("bill_table", "ST_IVT_IOStorInv");
|
||||
|
||||
if (jo_mst.getString("is_overdue").equals("1")) {
|
||||
if (dis.getString("is_overdue").equals("1")) {
|
||||
storPublicService.IOStor(dis, "12");
|
||||
} else {
|
||||
storPublicService.IOStor(dis, "21");
|
||||
}
|
||||
} else {
|
||||
storPublicService.IOStor(dis, "21");
|
||||
}
|
||||
}
|
||||
|
||||
// 更新分配明细执行状态为 - 99
|
||||
JSONObject jsonDis = wo_dis.query("iostorinvdis_id = '" + dis.getString("iostorinvdis_id") + "'").uniqueResult(0);
|
||||
jsonDis.put("work_status", "99");
|
||||
wo_dis.update(jsonDis);
|
||||
|
||||
if (jo_mst.getString("is_overdue").equals("1")) {
|
||||
if (dis.getString("is_overdue").equals("1")) {
|
||||
// 解锁起点
|
||||
JSONObject from_start = new JSONObject();
|
||||
from_start.put("struct_id", dis.getString("struct_id"));
|
||||
from_start.put("lock_type", "1");
|
||||
from_start.put("is_overdue", dis.getString("is_overdue"));
|
||||
from_start.put("storagevehicle_code", dis.getString("box_no"));
|
||||
storPublicService.updateStructAndPoint(from_start);
|
||||
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
// 更新子卷包装关系表 状态 - 3
|
||||
JSONObject jsonSub = subTab.query("container_name = '" + dis.getString("pcsn") + "' and package_box_sn = '" + dis.getString("box_no") + "' and status = '2'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(jsonSub))
|
||||
//查询对应的包装关系出入库记录表
|
||||
{
|
||||
jsonSub = sub_record.query("container_name = '" + dis.getString("pcsn") + "' and package_box_sn = '" + dis.getString("box_no") + "' and status = '2' AND bill_code = '" + jo_mst.getString("bill_code") + "'").uniqueResult(0);
|
||||
}
|
||||
if (ObjectUtil.isEmpty(jsonSub)) {
|
||||
throw new BadRequestException("此子卷不存在或不为入库状态:" + dis.getString("pcsn"));
|
||||
|
||||
}
|
||||
// 如果是拆分入库则将包装关系改为生成状态
|
||||
if ("1005".equals(jo_mst.getString("bill_type")) || ("1009".equals(jo_mst.getString("bill_type")))) {
|
||||
jsonSub.put("status", "0");
|
||||
} else {
|
||||
jsonSub.put("status", "3");
|
||||
}
|
||||
|
||||
if (jo_mst.getString("bill_type").equals("1011")) {
|
||||
// 更新子卷包装净重
|
||||
double net_weight = NumberUtil.sub(jsonSub.getDoubleValue("net_weight"), plan_qty);
|
||||
jsonSub.put("net_weight",net_weight);
|
||||
|
||||
if (net_weight <= 0) {
|
||||
jsonSub.put("status","3");
|
||||
} else {
|
||||
jsonSub.put("status","2");
|
||||
}
|
||||
}
|
||||
|
||||
subTab.update(jsonSub);
|
||||
|
||||
// 解锁起点
|
||||
JSONObject from_start = new JSONObject();
|
||||
from_start.put("struct_id", dis.getString("struct_id"));
|
||||
from_start.put("lock_type", "1");
|
||||
from_start.put("is_overdue", dis.getString("is_overdue"));
|
||||
|
||||
if (jo_mst.getString("is_overdue").equals("1")) {
|
||||
if (dis.getString("is_overdue").equals("1")) {
|
||||
from_start.put("storagevehicle_code", dis.getString("box_no"));
|
||||
} else {
|
||||
from_start.put("storagevehicle_code", "");
|
||||
}
|
||||
} else {
|
||||
from_start.put("storagevehicle_code", "");
|
||||
}
|
||||
|
||||
if (jo_mst.getString("bill_type").equals("1011")) {
|
||||
// 判断此木箱下的所有子卷净重是否为0,如果为0则清空载具
|
||||
List<JSONObject> packageList = subTab.query("package_box_sn = '" + jsonSub.getString("package_box_sn") + "'")
|
||||
.getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||
|
||||
boolean is_zero = packageList.stream()
|
||||
.allMatch(row -> row.getDoubleValue("net_weight") <= 0);
|
||||
|
||||
if (is_zero) {
|
||||
from_start.put("storagevehicle_code", "");
|
||||
} else {
|
||||
from_start.put("bill_type","1011");
|
||||
from_start.put("storagevehicle_code", jsonSub.getString("package_box_sn"));
|
||||
}
|
||||
}
|
||||
|
||||
storPublicService.updateStructAndPoint(from_start);
|
||||
|
||||
//插入包装关系出入库记录表
|
||||
jsonSub.put("bill_code", jo_mst.getString("bill_code"));
|
||||
jsonSub.put("bill_id", jo_mst.getString("iostorinv_id"));
|
||||
jsonSub.put("bill_type", jo_mst.getString("bill_type"));
|
||||
jsonSub.put("io_type", "1");
|
||||
jsonSub.put("insert_time", DateUtil.now());
|
||||
jsonSub.put("record_id", IdUtil.getSnowflake(1, 1).nextId());
|
||||
sub_record.insert(jsonSub);
|
||||
|
||||
// 更新对应任务为完成
|
||||
JSONObject jsonTask = taskTab.query("task_id = '" + jsonDis.getString("task_id") + "' and task_status < '07'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(jsonTask)) {
|
||||
jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
taskTab.update(jsonTask);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
JSONObject out_jo = WQLObject.getWQLObject("ST_IVT_IOStorInv").query("iostorinv_id = '" + iostorinv_id + "'").uniqueResult(0);
|
||||
if ("1004".equals(out_jo.getString("bill_type"))) {
|
||||
//调拨出库自动生成调拨入库单
|
||||
WQLObject dtl_wql = WQLObject.getWQLObject("st_ivt_iostorinvdtl");
|
||||
WQLObject mst_wql = WQLObject.getWQLObject("ST_IVT_IOStorInv");
|
||||
WQLObject dis_wql = WQLObject.getWQLObject("ST_IVT_IOStorInvDis");
|
||||
|
||||
//校验主表状态为生成
|
||||
if (!"99".equals(out_jo.getString("bill_status"))) {
|
||||
throw new BadRequestException("主表状态必须为完成!");
|
||||
}
|
||||
|
||||
JSONObject mst_row = mst_wql.query("iostorinv_id = '" + iostorinv_id + "'").uniqueResult(0);
|
||||
|
||||
JSONArray dis_rows = new JSONArray();
|
||||
|
||||
if (jo_mst.getString("is_overdue").equals("1")) {
|
||||
dis_rows = dis_wql.query("iostorinv_id = '" + iostorinv_id + "' and is_overdue = '0'").getResultJSONArray(0);
|
||||
} else {
|
||||
dis_rows = dis_wql.query("iostorinv_id = '" + iostorinv_id + "'").getResultJSONArray(0);
|
||||
}
|
||||
|
||||
//生成手工入库单
|
||||
String new_iostorinv_id = IdUtil.getSnowflake(1, 1).nextId() + "";
|
||||
String bill_code = CodeUtil.getNewCode("IO_CODE");
|
||||
jo_mst.put("iostorinv_id", new_iostorinv_id);
|
||||
jo_mst.put("bill_code", bill_code);
|
||||
jo_mst.put("io_type", "0");
|
||||
jo_mst.put("bill_type", "0004");
|
||||
jo_mst.put("buss_type", ((String) jo_mst.get("bill_type")).substring(0, 4));
|
||||
//查询移入仓库的信息
|
||||
JSONObject in_stor = WQLObject.getWQLObject("st_ivt_bsrealstorattr").query("stor_id = '" + out_jo.getString("out_stor_id") + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(in_stor)) {
|
||||
throw new BadRequestException("未查询到对应的移入仓库信息!");
|
||||
}
|
||||
jo_mst.put("stor_id", in_stor.getString("stor_id"));
|
||||
jo_mst.put("stor_code", in_stor.getString("stor_code"));
|
||||
jo_mst.put("stor_name", in_stor.getString("stor_name"));
|
||||
jo_mst.put("bill_status", "30");
|
||||
jo_mst.put("input_optid", currentUserId + "");
|
||||
jo_mst.put("input_optname", nickName);
|
||||
jo_mst.put("input_time", now);
|
||||
jo_mst.put("update_optid", currentUserId + "");
|
||||
jo_mst.put("update_optname", nickName);
|
||||
jo_mst.put("update_time", now);
|
||||
jo_mst.put("out_stor_id", out_jo.getString("stor_id"));
|
||||
|
||||
double total_qty = 0.00;
|
||||
for (int i = 0; i < dis_rows.size(); i++) {
|
||||
//插入明细表
|
||||
String iostorinvdtl_id = IdUtil.getSnowflake(1, 1).nextId() + "";
|
||||
JSONObject dis_row = dis_rows.getJSONObject(i);
|
||||
//查询对应的出库单明细
|
||||
JSONObject dtl_row = dtl_wql.query("iostorinvdtl_id = '" + dis_row.getString("iostorinvdtl_id") + "'").uniqueResult(0);
|
||||
dis_row.put("iostorinvdtl_id", iostorinvdtl_id);
|
||||
dis_row.put("iostorinv_id", new_iostorinv_id);
|
||||
dis_row.put("seq_no", i + 1);
|
||||
dis_row.put("bill_status", "30");
|
||||
dis_row.put("real_qty", "0");
|
||||
dis_row.put("vbeln", dtl_row.getString("vbeln"));
|
||||
dis_row.put("source_billdtl_id", dtl_row.getString("iostorinvdtl_id"));
|
||||
dis_row.put("source_bill_type", mst_row.getString("bill_type"));
|
||||
dis_row.put("source_bill_code", dtl_row.getString("source_bill_code"));
|
||||
dis_row.put("source_bill_table", "ST_IVT_IOStorInvDtl");
|
||||
dis_row.put("assign_qty", dis_row.getString("plan_qty"));
|
||||
dis_row.put("unassign_qty", "0");
|
||||
//插入调拨明细表
|
||||
dtl_wql.insert(dis_row);
|
||||
|
||||
dis_row.put("iostorinvdis_id", IdUtil.getSnowflake(1, 1).nextId());
|
||||
dis_row.put("seq_no", 1);
|
||||
dis_row.put("sect_id", "");
|
||||
dis_row.put("sect_code", "");
|
||||
dis_row.put("sect_name", "");
|
||||
dis_row.put("struct_id", "");
|
||||
dis_row.put("struct_code", "");
|
||||
dis_row.put("struct_name", "");
|
||||
dis_row.put("work_status", "00");
|
||||
dis_row.put("real_qty", "0");
|
||||
dis_row.put("point_id", "");
|
||||
dis_row.put("task_id", "");
|
||||
//插入分配表
|
||||
dis_wql.insert(dis_row);
|
||||
|
||||
total_qty = NumberUtil.add(total_qty,dis_row.getDoubleValue("plan_qty"));
|
||||
|
||||
//将包装关系中对应的记录状态改为包装
|
||||
HashMap<String, String> map = new HashMap<>();
|
||||
map.put("status", "1");
|
||||
WQLObject.getWQLObject("PDM_BI_SubPackageRelation").update(map, "package_box_SN = '" + dis_row.getString("box_no") + "' AND status = '3'");
|
||||
}
|
||||
|
||||
// 查询所有明细并计算实际重量
|
||||
List<JSONObject> dtlList = dtl_wql.query("iostorinv_id = '" + iostorinv_id + "'")
|
||||
.getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||
|
||||
double assign_qty = dtlList.stream()
|
||||
.map(row -> row.getDoubleValue("assign_qty"))
|
||||
.reduce(Double::sum).orElse(0.00);
|
||||
|
||||
jo_mst.put("detail_count", dis_rows.size());
|
||||
// jo_mst.put("total_qty", total_qty);
|
||||
jo_mst.put("total_qty", assign_qty);
|
||||
mst_wql.insert(jo_mst);
|
||||
}
|
||||
|
||||
if ("1003".equals(out_jo.getString("bill_type")) || "1006".equals(out_jo.getString("bill_type"))) {
|
||||
//如果为返检出库或者改切出库删除对应的包装关系
|
||||
JSONArray dis_rows = new JSONArray();
|
||||
if (jo_mst.getString("is_overdue").equals("1")) {
|
||||
dis_rows = WQLObject.getWQLObject("ST_IVT_IOStorInvDis").query("iostorinv_id = '" + iostorinv_id + "' and is_overdue = '0'").getResultJSONArray(0);
|
||||
} else {
|
||||
dis_rows = WQLObject.getWQLObject("ST_IVT_IOStorInvDis").query("iostorinv_id = '" + iostorinv_id + "'").getResultJSONArray(0);
|
||||
}
|
||||
|
||||
for (int i = 0; i < dis_rows.size(); i++) {
|
||||
JSONObject dis_row = dis_rows.getJSONObject(i);
|
||||
String sect_code = dis_row.getString("sect_code");
|
||||
JSONObject sect_jo = WQLObject.getWQLObject("st_ivt_sectattr").query("sect_code = '" + sect_code + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(sect_jo)) {
|
||||
throw new BadRequestException("未查询到对应的库区!");
|
||||
}
|
||||
//如果是虚拟区的出库,直接把包装关系删除;如果为立库的包装关系,将解绑删除标识置为1。当发货区解绑时,删除包装关系
|
||||
String pcsn = dis_row.getString("pcsn");
|
||||
if ("09".equals(sect_jo.getString("sect_type_attr"))) {
|
||||
WQLObject.getWQLObject("pdm_bi_subpackagerelation").delete("container_name = '" + pcsn + "'");
|
||||
} else {
|
||||
HashMap<String, String> map = new HashMap<>();
|
||||
map.put("need_delete", "1");
|
||||
WQLObject.getWQLObject("pdm_bi_subpackagerelation").update(map, "container_name = '" + pcsn + "'");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void issueTask(JSONObject whereJson) {
|
||||
@@ -5136,75 +5503,163 @@ public class CheckOutBillServiceImpl implements CheckOutBillService {
|
||||
WQLObject wo_mst = WQLObject.getWQLObject("st_ivt_iostorinv");
|
||||
//任务表
|
||||
WQLObject wo_Task = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
String task_id = whereJson.getString("task_id");
|
||||
//子卷包装关系表
|
||||
WQLObject subTab = WQLObject.getWQLObject("pdm_bi_subpackagerelation");
|
||||
//包装关系出入库记录表
|
||||
WQLObject sub_record = WQLObject.getWQLObject("pdm_bi_subpackagerelationrecord");
|
||||
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
String now = DateUtil.now();
|
||||
// 查询任务对应的分配明细
|
||||
JSONArray disJsonArr = WQL.getWO("QST_IVT_CHECKOUTBILL")
|
||||
.addParam("flag", "55")
|
||||
.addParam("task_id", whereJson.getString("task_id"))
|
||||
.process().getResultJSONArray(0);
|
||||
|
||||
JSONObject task = wo_Task.query("task_status<>'07' and task_id='" + task_id + "'").uniqueResult(0);
|
||||
// 查询主表
|
||||
JSONObject jo_mst = wo_mst.query("iostorinv_id = '" + disJsonArr.getJSONObject(0).getString("iostorinv_id") + "'").uniqueResult(0);
|
||||
String iostorinv_id = jo_mst.getString("iostorinv_id");
|
||||
|
||||
if (task == null) {
|
||||
throw new BadRequestException("查询不到操作的任务记录!");
|
||||
}
|
||||
for (int i = 0; i < disJsonArr.size(); i++) {
|
||||
JSONObject dis = disJsonArr.getJSONObject(i);
|
||||
|
||||
// 判断此任务是否有任务组
|
||||
String task_group_id = task.getString("task_group_id");
|
||||
if (ObjectUtil.isNotEmpty(task_group_id)) {
|
||||
// 上一个任务组顺序号
|
||||
String sort_seq_last = NumberUtil.sub(task.getString("sort_seq"), "1").toString();
|
||||
double plan_qty = dis.getDoubleValue("plan_qty");
|
||||
double real_qty = dis.getDoubleValue("real_qty");
|
||||
|
||||
JSONObject jsonTaskLast = wo_Task.query("task_group_id = '" + task_group_id + "' and sort_seq = '" + sort_seq_last + "' and task_status <> '07'").uniqueResult(0);
|
||||
// if (ObjectUtil.isNotEmpty(jsonTaskLast)) throw new BadRequestException("请先完成" + jsonTaskLast.getString("task_code") + "的任务!");
|
||||
}
|
||||
//未出部分,按取消分配处理
|
||||
if (Double.compare(real_qty, plan_qty) != 0) {
|
||||
dis.put("change_qty", plan_qty - real_qty);
|
||||
dis.put("bill_type_scode", jo_mst.getString("bill_type"));
|
||||
dis.put("inv_id", iostorinv_id);
|
||||
dis.put("bill_code", jo_mst.getString("bill_code"));
|
||||
dis.put("bill_table", "ST_IVT_IOStorInv");
|
||||
storPublicService.IOStor(dis, "12");
|
||||
}
|
||||
//更新已出库重量
|
||||
if (real_qty != 0) {
|
||||
dis.put("change_qty", real_qty);
|
||||
dis.put("bill_type_scode", jo_mst.getString("bill_type"));
|
||||
dis.put("inv_id", iostorinv_id);
|
||||
dis.put("bill_code", jo_mst.getString("bill_code"));
|
||||
dis.put("bill_table", "ST_IVT_IOStorInv");
|
||||
|
||||
JSONObject dtljo = wo_dis.query("task_id='" + task_id + "'").uniqueResult(0);
|
||||
whereJson.put("iostorinv_id", dtljo.getString("iostorinv_id"));
|
||||
|
||||
JSONObject mst_jo = wo_mst.query("iostorinv_id = '" + dtljo.getString("iostorinv_id") + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(mst_jo)) {
|
||||
throw new BadRequestException("未查询到对应的出库单据!");
|
||||
} else {
|
||||
if ("1003".equals(mst_jo.getString("bill_type")) || "1006".equals(mst_jo.getString("bill_type"))) {
|
||||
HashMap<String, String> map = new HashMap<>();
|
||||
map.put("need_delete", "1");
|
||||
WQLObject.getWQLObject("pdm_bi_subpackagerelation").update(map, "package_box_sn = '" + task.getString("vehicle_code") + "'");
|
||||
|
||||
JSONArray rows = WQLObject.getWQLObject("pdm_bi_subpackagerelation").query("package_box_sn = '" + task.getString("vehicle_code") + "'").getResultJSONArray(0);
|
||||
for (int i = 0; i < rows.size(); i++) {
|
||||
JSONObject row = rows.getJSONObject(i);
|
||||
//插入包装关系出入库记录表
|
||||
row.put("bill_code", mst_jo.getString("bill_code"));
|
||||
row.put("bill_id", mst_jo.getString("iostorinv_id"));
|
||||
row.put("bill_type", mst_jo.getString("bill_type"));
|
||||
row.put("io_type", "1");
|
||||
row.put("insert_time", DateUtil.now());
|
||||
row.put("record_id", IdUtil.getSnowflake(1, 1).nextId());
|
||||
WQLObject.getWQLObject("pdm_bi_subpackagerelationrecord").insert(row);
|
||||
if (jo_mst.getString("is_overdue").equals("1")) {
|
||||
if (dis.getString("is_overdue").equals("1")) {
|
||||
storPublicService.IOStor(dis, "12");
|
||||
} else {
|
||||
storPublicService.IOStor(dis, "21");
|
||||
}
|
||||
} else {
|
||||
storPublicService.IOStor(dis, "21");
|
||||
}
|
||||
}
|
||||
|
||||
// 更新分配明细执行状态为 - 99
|
||||
JSONObject jsonDis = wo_dis.query("iostorinvdis_id = '" + dis.getString("iostorinvdis_id") + "'").uniqueResult(0);
|
||||
jsonDis.put("work_status", "99");
|
||||
wo_dis.update(jsonDis);
|
||||
|
||||
if (jo_mst.getString("is_overdue").equals("1")) {
|
||||
if (dis.getString("is_overdue").equals("1")) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
// 更新子卷包装关系表 状态 - 3
|
||||
JSONObject jsonSub = subTab.query("container_name = '" + dis.getString("pcsn") + "' and package_box_sn = '" + dis.getString("box_no") + "' and status = '2'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(jsonSub))
|
||||
//查询对应的包装关系出入库记录表
|
||||
{
|
||||
jsonSub = sub_record.query("container_name = '" + dis.getString("pcsn") + "' and package_box_sn = '" + dis.getString("box_no") + "' and status = '2' AND bill_code = '" + jo_mst.getString("bill_code") + "'").uniqueResult(0);
|
||||
}
|
||||
if (ObjectUtil.isEmpty(jsonSub)) {
|
||||
throw new BadRequestException("此子卷不存在或不为入库状态:" + dis.getString("pcsn"));
|
||||
|
||||
}
|
||||
// 如果是拆分入库则将包装关系改为生成状态
|
||||
if ("1005".equals(jo_mst.getString("bill_type")) || ("1009".equals(jo_mst.getString("bill_type")))) {
|
||||
jsonSub.put("status", "0");
|
||||
} else {
|
||||
jsonSub.put("status", "3");
|
||||
}
|
||||
|
||||
if (jo_mst.getString("bill_type").equals("1011")) {
|
||||
// 更新子卷包装净重
|
||||
double net_weight = NumberUtil.sub(jsonSub.getDoubleValue("net_weight"), plan_qty);
|
||||
jsonSub.put("net_weight",net_weight);
|
||||
|
||||
if (net_weight <= 0) {
|
||||
jsonSub.put("status","3");
|
||||
} else {
|
||||
jsonSub.put("status","2");
|
||||
}
|
||||
}
|
||||
|
||||
subTab.update(jsonSub);
|
||||
|
||||
// 解锁起点
|
||||
JSONObject from_start = new JSONObject();
|
||||
from_start.put("struct_id", dis.getString("struct_id"));
|
||||
from_start.put("lock_type", "1");
|
||||
from_start.put("is_overdue", dis.getString("is_overdue"));
|
||||
|
||||
if (jo_mst.getString("is_overdue").equals("1")) {
|
||||
if (dis.getString("is_overdue").equals("1")) {
|
||||
from_start.put("storagevehicle_code", dis.getString("box_no"));
|
||||
} else {
|
||||
from_start.put("storagevehicle_code", "");
|
||||
}
|
||||
} else {
|
||||
from_start.put("storagevehicle_code", "");
|
||||
}
|
||||
|
||||
if (jo_mst.getString("bill_type").equals("1011")) {
|
||||
// 判断此木箱下的所有子卷净重是否为0,如果为0则清空载具
|
||||
List<JSONObject> packageList = subTab.query("package_box_sn = '" + jsonSub.getString("package_box_sn") + "'")
|
||||
.getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||
|
||||
boolean is_zero = packageList.stream()
|
||||
.allMatch(row -> row.getDoubleValue("net_weight") <= 0);
|
||||
|
||||
if (is_zero) {
|
||||
from_start.put("storagevehicle_code", "");
|
||||
} else {
|
||||
from_start.put("bill_type","1011");
|
||||
from_start.put("storagevehicle_code", jsonSub.getString("package_box_sn"));
|
||||
}
|
||||
}
|
||||
|
||||
storPublicService.updateStructAndPoint(from_start);
|
||||
|
||||
//插入包装关系出入库记录表
|
||||
jsonSub.put("bill_code", jo_mst.getString("bill_code"));
|
||||
jsonSub.put("bill_id", jo_mst.getString("iostorinv_id"));
|
||||
jsonSub.put("bill_type", jo_mst.getString("bill_type"));
|
||||
jsonSub.put("io_type", "1");
|
||||
jsonSub.put("insert_time", DateUtil.now());
|
||||
jsonSub.put("record_id", IdUtil.getSnowflake(1, 1).nextId());
|
||||
sub_record.insert(jsonSub);
|
||||
|
||||
}
|
||||
|
||||
HashMap<String, String> map = new HashMap<>();
|
||||
map.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
map.put("finished_type", "01");
|
||||
map.put("update_optid", currentUserId + "");
|
||||
map.put("update_optname", nickName);
|
||||
map.put("update_time", now);
|
||||
map.put("update_optid", SecurityUtils.getCurrentUserId() + "");
|
||||
map.put("update_optname", SecurityUtils.getCurrentNickName());
|
||||
map.put("update_time", DateUtil.now());
|
||||
|
||||
//更新任务为完成
|
||||
wo_Task.update(map, "task_id='" + task_id + "'");
|
||||
wo_Task.update(map, "task_id='" + whereJson.getString("task_id") + "'");
|
||||
|
||||
// 查询此任务下所有的分配明细
|
||||
JSONArray disArr = wo_dis.query("task_id='" + task_id + "'").getResultJSONArray(0);
|
||||
JSONArray disArr = wo_dis.query("task_id='" + whereJson.getString("task_id") + "'").getResultJSONArray(0);
|
||||
for (int i = 0; i < disArr.size(); i++) {
|
||||
JSONObject jsonDis = disArr.getJSONObject(i);
|
||||
JSONObject json = disArr.getJSONObject(i);
|
||||
// 更新分配明细为完成
|
||||
jsonDis.put("work_status", "99");
|
||||
wo_dis.update(jsonDis);
|
||||
json.put("work_status", "99");
|
||||
wo_dis.update(json);
|
||||
|
||||
// 判断此明细下是否还有未完成的分配明细
|
||||
JSONObject jsonDtl = wo_dtl.query("iostorinvdtl_id = '" + jsonDis.getString("iostorinvdtl_id") + "'").uniqueResult(0);
|
||||
JSONObject jsonDtl = wo_dtl.query("iostorinvdtl_id = '" + json.getString("iostorinvdtl_id") + "'").uniqueResult(0);
|
||||
JSONArray disArr2 = wo_dis.query("iostorinvdtl_id = '" + jsonDtl.getString("iostorinvdtl_id") + "' and work_status <> '99'").getResultJSONArray(0);
|
||||
if (ObjectUtil.isEmpty(disArr2)) {
|
||||
// 更新明细为完成
|
||||
@@ -5214,9 +5669,9 @@ public class CheckOutBillServiceImpl implements CheckOutBillService {
|
||||
}
|
||||
|
||||
//判断是否还有未完成的明细
|
||||
JSONArray ja = wo_dtl.query("bill_status<>'99' and iostorinv_id='" + whereJson.getString("iostorinv_id") + "'").getResultJSONArray(0);
|
||||
JSONArray ja = wo_dtl.query("bill_status<>'99' and iostorinv_id='" + disArr.getJSONObject(0).getString("iostorinv_id") + "'").getResultJSONArray(0);
|
||||
if (ja.size() == 0) {
|
||||
this.confirm(whereJson);
|
||||
this.confirmOrder(jo_mst);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -708,6 +708,24 @@
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
IF 输入.flag = "555"
|
||||
QUERY
|
||||
SELECT
|
||||
dis.*
|
||||
FROM
|
||||
ST_IVT_IOStorInvDis dis
|
||||
LEFT JOIN SCH_BASE_Task task ON task.task_id = dis.task_id AND task.is_delete = '0' and task.vehicle_code = dis.storagevehicle_code
|
||||
WHERE
|
||||
task.task_status <> '07'
|
||||
|
||||
OPTION 输入.iostorinv_id <> ""
|
||||
dis.iostorinv_id = 输入.iostorinv_id
|
||||
ENDOPTION
|
||||
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
IF 输入.flag = "6"
|
||||
QUERY
|
||||
SELECT
|
||||
|
||||
Reference in New Issue
Block a user