This commit is contained in:
2022-12-29 13:53:01 +08:00
10 changed files with 220 additions and 42 deletions

View File

@@ -17,6 +17,7 @@ import org.nl.acs.device_driver.DeviceDriver;
import org.nl.acs.device_driver.RouteableDeviceDriver; import org.nl.acs.device_driver.RouteableDeviceDriver;
import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver;
import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; import org.nl.acs.device_driver.driver.ExecutableDeviceDriver;
import org.nl.acs.ext.wms.data.ApplyLabelingAndBindingRequest;
import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.ext.wms.service.AcsToWmsService;
import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.service.InstructionService;
import org.nl.acs.instruction.service.dto.Instruction; import org.nl.acs.instruction.service.dto.Instruction;
@@ -30,6 +31,7 @@ import org.nl.acs.route.service.dto.RouteLineDto;
import org.nl.acs.task.service.TaskService; import org.nl.acs.task.service.TaskService;
import org.nl.acs.task.service.dto.TaskDto; import org.nl.acs.task.service.dto.TaskDto;
import org.nl.modules.system.service.ParamService; import org.nl.modules.system.service.ParamService;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.modules.wql.util.SpringContextHolder; import org.nl.modules.wql.util.SpringContextHolder;
import org.openscada.opc.lib.da.Server; import org.openscada.opc.lib.da.Server;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -89,10 +91,18 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme
Integer heartbeat_tag; Integer heartbeat_tag;
private Date instruction_require_time = new Date(); private Date instruction_require_time = new Date();
private Date require_apply_labeling_time = new Date();
private Date require_apply_strangulation_time = new Date();
private Date require_empty_in_time = new Date();
private Date require_empty_out_time = new Date();
private int instruction_require_time_out; private int instruction_require_time_out;
//行架机械手申请任务成功标识 //行架机械手申请任务成功标识
boolean requireSucess = false; boolean requireSucess = false;
boolean requireApplyLabelingSuccess = false;
boolean requireApplyLaStrangulationSuccess = false;
boolean requireEmptyInSuccess = false;
boolean requireEmptyOutSuccess = false;
private int instruction_finished_time_out; private int instruction_finished_time_out;
int branchProtocol = 0; int branchProtocol = 0;
@@ -124,7 +134,29 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme
task = this.itemProtocol.getTask(); task = this.itemProtocol.getTask();
if (mode != last_mode) { if (mode != last_mode) {
if (mode == 2) { if (mode == 2) {
this.setRequireSucess(false); logServer.deviceExecuteLog(device_code, "", "", "开始请求标记复位`此时请求标记值为requireSucess:" + requireSucess);
requireSucess = false;
logServer.deviceExecuteLog(device_code, "", "", "请求标记复位成功`此时请求标记值为requireSucess:" + requireSucess);
}
if (mode == 4) {
logServer.deviceExecuteLog(device_code, "", "", "开始请求标记复位`此时请求标记值为requireApplyLabelingSuccess:" + requireApplyLabelingSuccess);
requireApplyLabelingSuccess = false;
logServer.deviceExecuteLog(device_code, "", "", "请求标记复位成功`此时请求标记值为requireApplyLabelingSuccess:" + requireApplyLabelingSuccess);
}
if (mode == 5) {
logServer.deviceExecuteLog(device_code, "", "", "开始请求标记复位`此时请求标记值为requireApplyLaStrangulationSuccess:" + requireApplyLaStrangulationSuccess);
requireApplyLaStrangulationSuccess = false;
logServer.deviceExecuteLog(device_code, "", "", "请求标记复位成功`此时请求标记值为requireApplyLaStrangulationSuccess:" + requireApplyLaStrangulationSuccess);
}
if (mode == 6) {
logServer.deviceExecuteLog(device_code, "", "", "开始请求标记复位`此时请求标记值为requireEmptyInSuccess:" + requireEmptyInSuccess);
requireEmptyInSuccess = false;
logServer.deviceExecuteLog(device_code, "", "", "请求标记复位成功`此时请求标记值为requireEmptyInSuccess:" + requireEmptyInSuccess);
}
if (mode == 7) {
logServer.deviceExecuteLog(device_code, "", "", "开始请求标记复位`此时请求标记值为requireEmptyOutSuccess:" + requireEmptyOutSuccess);
requireEmptyOutSuccess = false;
logServer.deviceExecuteLog(device_code, "", "", "请求标记复位成功`此时请求标记值为requireEmptyOutSuccess:" + requireEmptyOutSuccess);
} }
logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode));
logServer.deviceExecuteLog(this.device_code, "", "", "信号mode" + last_mode + "->" + mode); logServer.deviceExecuteLog(this.device_code, "", "", "信号mode" + last_mode + "->" + mode);
@@ -233,6 +265,31 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme
if (move > 0 && !requireSucess) { if (move > 0 && !requireSucess) {
instruction_require(); instruction_require();
} }
break;
case 4:
//申请贴标
if (move > 0 && !requireApplyLabelingSuccess) {
applyLabeling();
}
break;
case 5:
//申请困扎
if (move > 0 && !requireApplyLaStrangulationSuccess) {
applyLaStrangulation();
}
break;
case 6:
//空托盘满垛入库申请
if (move > 0 && !requireEmptyInSuccess) {
emptyIn();
}
break;
case 7:
//空托盘满垛出库申请
if (move > 0 && !requireEmptyOutSuccess) {
emptyOut();
}
break;
} }
} }
@@ -274,7 +331,7 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme
protected void thingToNothing() throws Exception { protected void thingToNothing() throws Exception {
this.setRequireSucess(false); requireSucess = false;
} }
@@ -286,7 +343,7 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme
Server server = ReadUtil.getServer(opcservcerid); Server server = ReadUtil.getServer(opcservcerid);
Map<String, Object> itemMap = new HashMap<String, Object>(); Map<String, Object> itemMap = new HashMap<String, Object>();
itemMap.put(to_param, value); itemMap.put(to_param, Integer.parseInt(value));
// itemMap.put(to_param, Integer.parseInt(value)); // itemMap.put(to_param, Integer.parseInt(value));
ReadUtil.write(itemMap, server); ReadUtil.write(itemMap, server);
logServer.deviceExecuteLog(device_code, "", "", "下发电气信号设备号:" + device_code + ",下发电气:" + to_param + ",下发电气值:" + value); logServer.deviceExecuteLog(device_code, "", "", "下发电气信号设备号:" + device_code + ",下发电气:" + to_param + ",下发电气值:" + value);
@@ -356,9 +413,9 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme
public void setDeviceStatus(JSONObject data) { public void setDeviceStatus(JSONObject data) {
String requestSucess = data.getString("requireSucess"); String requestSucess = data.getString("requireSucess");
if (StrUtil.equals(requestSucess, "0")) { if (StrUtil.equals(requestSucess, "0")) {
this.setRequireSucess(false); this.requireSucess = false;
} else { } else {
this.setRequireSucess(true); this.requireSucess = true;
} }
} }
@@ -475,4 +532,66 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme
} }
} }
public synchronized void applyLabeling() {
Date date = new Date();
if (date.getTime() - this.require_apply_labeling_time.getTime() < (long) this.instruction_require_time_out) {
log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out);
return;
} else {
this.require_apply_labeling_time = date;
ApplyLabelingAndBindingRequest applyLabelingAndBindingRequest =
new ApplyLabelingAndBindingRequest();
JSONObject device_json = WQLObject.getWQLObject("acs_storage_cell").query("storage_code ='" + this.device_code + "'").uniqueResult(0);
String start_point_code = null;
if (!ObjectUtil.isEmpty(device_json)) {
start_point_code = (String) device_json.get("parent_storage_code") == null ? this.device_code : (String) device_json.get("parent_storage_code");
}
applyLabelingAndBindingRequest.setDevice_code(start_point_code);
applyLabelingAndBindingRequest.setType("1");
acsToWmsService.applyLabelingAndBindingRequest(applyLabelingAndBindingRequest);
requireApplyLabelingSuccess = true;
}
}
public synchronized void applyLaStrangulation() {
Date date = new Date();
if (date.getTime() - this.require_apply_strangulation_time.getTime() < (long) this.instruction_require_time_out) {
log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out);
return;
} else {
this.require_apply_strangulation_time = date;
ApplyLabelingAndBindingRequest applyLabelingAndBindingRequest =
new ApplyLabelingAndBindingRequest();
JSONObject device_json = WQLObject.getWQLObject("acs_storage_cell").query("storage_code ='" + this.device_code + "'").uniqueResult(0);
String start_point_code = null;
if (!ObjectUtil.isEmpty(device_json)) {
start_point_code = (String) device_json.get("parent_storage_code") == null ? this.device_code : (String) device_json.get("parent_storage_code");
}
applyLabelingAndBindingRequest.setDevice_code(start_point_code);
applyLabelingAndBindingRequest.setType("2");
acsToWmsService.applyLabelingAndBindingRequest(applyLabelingAndBindingRequest);
requireApplyLaStrangulationSuccess = true;
}
}
public synchronized void emptyIn() {
Date date = new Date();
if (date.getTime() - this.require_empty_in_time.getTime() < (long) this.instruction_require_time_out) {
log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out);
return;
} else {
this.require_empty_in_time = date;
}
}
public synchronized void emptyOut() {
Date date = new Date();
if (date.getTime() - this.require_empty_out_time.getTime() < (long) this.instruction_require_time_out) {
log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out);
return;
} else {
this.require_empty_out_time = date;
}
}
} }

View File

@@ -140,7 +140,7 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl
@Override @Override
public void execute() throws Exception { public synchronized void execute() throws Exception {
String message = null; String message = null;
try { try {
device_code = this.getDeviceCode(); device_code = this.getDeviceCode();
@@ -158,7 +158,9 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl
if (mode != last_mode) { if (mode != last_mode) {
if (mode == 2) { if (mode == 2) {
this.setRequireSucess(false); logServer.deviceExecuteLog(device_code, "", "", "开始请求标记复位`此时请求标记值为:" + requireSucess);
requireSucess = false;
logServer.deviceExecuteLog(device_code, "", "", "请求标记复位成功`此时请求标记值为:" + requireSucess);
} }
logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode));
logServer.deviceExecuteLog(this.device_code, "", "", "信号mode" + last_mode + "->" + mode); logServer.deviceExecuteLog(this.device_code, "", "", "信号mode" + last_mode + "->" + mode);
@@ -840,7 +842,7 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl
this.sendSignalType(instructionDto, type); this.sendSignalType(instructionDto, type);
//请求任务成功 //请求任务成功
this.setRequireSucess(true); requireSucess = true;
return flag; return flag;
} }
@@ -949,7 +951,7 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl
this.sendSignalType(instdto, type); this.sendSignalType(instdto, type);
//请求任务成功 //请求任务成功
this.setRequireSucess(true); requireSucess = true;
return flag; return flag;
} }

View File

@@ -44,7 +44,7 @@
<artifactId>hutool-all</artifactId> <artifactId>hutool-all</artifactId>
<version>${hutool.version}</version> <version>${hutool.version}</version>
</dependency> </dependency>
<!--Spring boot 核心--> <!--Spring boot 核心 -->
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId> <artifactId>spring-boot-starter-data-jpa</artifactId>

View File

@@ -75,6 +75,9 @@ public class CheckOutBillServiceImpl implements CheckOutBillService {
if (StrUtil.isNotEmpty(map.get("io_type"))) { if (StrUtil.isNotEmpty(map.get("io_type"))) {
map.put("io_type", map.get("io_type")); map.put("io_type", map.get("io_type"));
} }
if (StrUtil.isNotEmpty(map.get("is_upload"))) {
map.put("is_upload", map.get("is_upload"));
}
if (StrUtil.isNotEmpty(map.get("pcsn"))) { if (StrUtil.isNotEmpty(map.get("pcsn"))) {
map.put("pcsn", "%" + map.get("pcsn") + "%"); map.put("pcsn", "%" + map.get("pcsn") + "%");
} }
@@ -768,6 +771,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService {
jsonMap.put("material_id", dtl.getString("material_id")); jsonMap.put("material_id", dtl.getString("material_id"));
jsonMap.put("sale_order_name", dtl.getString("source_bill_code")); jsonMap.put("sale_order_name", dtl.getString("source_bill_code"));
jsonMap.put("sect_id", whereJson.getString("sect_id")); jsonMap.put("sect_id", whereJson.getString("sect_id"));
jsonMap.put("stor_id", whereJson.getString("stor_id"));
JSONObject jsonOneIvt = WQL.getWO("ST_OUTIVT01").addParamMap(jsonMap).process().uniqueResult(0); JSONObject jsonOneIvt = WQL.getWO("ST_OUTIVT01").addParamMap(jsonMap).process().uniqueResult(0);
if (ObjectUtil.isEmpty(jsonOneIvt)) throw new BadRequestException("库存不足"); if (ObjectUtil.isEmpty(jsonOneIvt)) throw new BadRequestException("库存不足");
@@ -846,6 +850,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService {
jsonMap.put("material_id", dtl.getString("material_id")); jsonMap.put("material_id", dtl.getString("material_id"));
jsonMap.put("pcsn", dtl.getString("pcsn")); jsonMap.put("pcsn", dtl.getString("pcsn"));
jsonMap.put("sect_id", whereJson.getString("sect_id")); jsonMap.put("sect_id", whereJson.getString("sect_id"));
jsonMap.put("stor_id", whereJson.getString("stor_id"));
JSONObject jsonIvt = WQL.getWO("ST_OUTIVT01").addParamMap(jsonMap).process().uniqueResult(0); JSONObject jsonIvt = WQL.getWO("ST_OUTIVT01").addParamMap(jsonMap).process().uniqueResult(0);
if (ObjectUtil.isEmpty(jsonIvt)) throw new BadRequestException("库存不足"); if (ObjectUtil.isEmpty(jsonIvt)) throw new BadRequestException("库存不足");
@@ -985,6 +990,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService {
jsonMap.put("material_id", dtl.getString("material_id")); jsonMap.put("material_id", dtl.getString("material_id"));
jsonMap.put("sale_order_name", dtl.getString("source_bill_code")); jsonMap.put("sale_order_name", dtl.getString("source_bill_code"));
jsonMap.put("sect_id", whereJson.getString("sect_id")); jsonMap.put("sect_id", whereJson.getString("sect_id"));
jsonMap.put("stor_id", whereJson.getString("stor_id"));
JSONObject jsonOneIvt = WQL.getWO("ST_OUTIVT01").addParamMap(jsonMap).process().uniqueResult(0); JSONObject jsonOneIvt = WQL.getWO("ST_OUTIVT01").addParamMap(jsonMap).process().uniqueResult(0);
if (ObjectUtil.isEmpty(jsonOneIvt)) throw new BadRequestException("库存不足"); if (ObjectUtil.isEmpty(jsonOneIvt)) throw new BadRequestException("库存不足");
@@ -1063,6 +1069,7 @@ public class CheckOutBillServiceImpl implements CheckOutBillService {
jsonMap.put("material_id", dtl.getString("material_id")); jsonMap.put("material_id", dtl.getString("material_id"));
jsonMap.put("pcsn", dtl.getString("pcsn")); jsonMap.put("pcsn", dtl.getString("pcsn"));
jsonMap.put("sect_id", whereJson.getString("sect_id")); jsonMap.put("sect_id", whereJson.getString("sect_id"));
jsonMap.put("stor_id", whereJson.getString("stor_id"));
JSONObject jsonIvt = WQL.getWO("ST_OUTIVT01").addParamMap(jsonMap).process().uniqueResult(0); JSONObject jsonIvt = WQL.getWO("ST_OUTIVT01").addParamMap(jsonMap).process().uniqueResult(0);
if (ObjectUtil.isEmpty(jsonIvt)) throw new BadRequestException("库存不足"); if (ObjectUtil.isEmpty(jsonIvt)) throw new BadRequestException("库存不足");
@@ -1371,6 +1378,11 @@ public class CheckOutBillServiceImpl implements CheckOutBillService {
} else { } else {
jo_dtl.put("bill_status", "30"); jo_dtl.put("bill_status", "30");
} }
if (jo_dtl.getDoubleValue("unassign_qty") == 0) {
jo_dtl.put("bill_status", "40");
}
wo_dtl.update(jo_dtl); wo_dtl.update(jo_dtl);
//更新主表状态 //更新主表状态
this.updateMststatus(iostorinv_id); this.updateMststatus(iostorinv_id);
@@ -1871,7 +1883,8 @@ public class CheckOutBillServiceImpl implements CheckOutBillService {
assign_qty = NumberUtil.add(assign_qty,canuse_qty); assign_qty = NumberUtil.add(assign_qty,canuse_qty);
if (unassign_qty >= canuse_qty) { if (unassign_qty >= canuse_qty) {
unassign_qty = unassign_qty - canuse_qty; // unassign_qty = unassign_qty - canuse_qty;
unassign_qty = NumberUtil.sub(unassign_qty,canuse_qty);
ivt.put("change_qty", canuse_qty + ""); ivt.put("change_qty", canuse_qty + "");
} else { } else {
ivt.put("change_qty", canuse_qty + ""); ivt.put("change_qty", canuse_qty + "");
@@ -1913,11 +1926,12 @@ public class CheckOutBillServiceImpl implements CheckOutBillService {
break; break;
} }
} }
HashMap<String, String> map_dtl = new HashMap<String, String>(); // HashMap<String, String> map_dtl = new HashMap<String, String>();
JSONObject map_dtl = new JSONObject();
//更新明细 //更新明细
map_dtl.put("unassign_qty", unassign_qty + ""); map_dtl.put("unassign_qty", unassign_qty + "");
map_dtl.put("assign_qty", assign_qty + ""); map_dtl.put("assign_qty", assign_qty + "");
if (unassign_qty == 0) { if (map_dtl.getDoubleValue("unassign_qty") <= 0) {
map_dtl.put("bill_status", "40"); map_dtl.put("bill_status", "40");
} else { } else {
map_dtl.put("bill_status", "30"); map_dtl.put("bill_status", "30");

View File

@@ -49,6 +49,7 @@
输入.sap_pcsn TYPEAS s_string 输入.sap_pcsn TYPEAS s_string
输入.cust_code TYPEAS s_string 输入.cust_code TYPEAS s_string
输入.package_box_sn TYPEAS s_string 输入.package_box_sn TYPEAS s_string
输入.is_upload TYPEAS s_string
输入.in_stor_id TYPEAS f_string 输入.in_stor_id TYPEAS f_string
[临时表] [临时表]
--这边列出来的临时表就会在运行期动态创建 --这边列出来的临时表就会在运行期动态创建
@@ -108,6 +109,10 @@
dis.pcsn like 输入.pcsn dis.pcsn like 输入.pcsn
ENDOPTION ENDOPTION
OPTION 输入.is_upload <> ""
ios.is_upload = 输入.is_upload
ENDOPTION
OPTION 输入.io_type <> "" OPTION 输入.io_type <> ""
ios.io_type = 输入.io_type ios.io_type = 输入.io_type
ENDOPTION ENDOPTION

View File

@@ -23,6 +23,7 @@
输入.pcsn TYPEAS s_string 输入.pcsn TYPEAS s_string
输入.iostorinv_id TYPEAS s_string 输入.iostorinv_id TYPEAS s_string
输入.iostorinvdtl_id TYPEAS s_string 输入.iostorinvdtl_id TYPEAS s_string
输入.stor_id TYPEAS s_string
[临时表] [临时表]
--这边列出来的临时表就会在运行期动态创建 --这边列出来的临时表就会在运行期动态创建
@@ -84,6 +85,10 @@
ivt.pcsn = 输入.pcsn ivt.pcsn = 输入.pcsn
ENDOPTION ENDOPTION
OPTION 输入.stor_id <> ""
attr.stor_id = 输入.stor_id
ENDOPTION
order by ivt.instorage_time ASC order by ivt.instorage_time ASC
ENDSELECT ENDSELECT

View File

@@ -220,18 +220,21 @@
@selection-change="crud.selectionChangeHandler" @selection-change="crud.selectionChangeHandler"
> >
<el-table-column type="selection" width="55" /> <el-table-column type="selection" width="55" />
<el-table-column type="index" label="序号" width="50" align="center" /> <!-- <el-table-column type="index" label="序号" width="50" align="center" />-->
<el-table-column show-overflow-tooltip prop="is_upload" label="是否回传" :formatter="formatIsUpload" /> <el-table-column show-overflow-tooltip prop="is_upload" label="是否回传" :formatter="formatIsUpload" width="80" />
<el-table-column show-overflow-tooltip prop="upload_mes" label="回传MES" :formatter="formatUploadMes" /> <el-table-column show-overflow-tooltip prop="upload_mes" label="回传MES" :formatter="formatUploadMes" width="80" />
<el-table-column show-overflow-tooltip prop="upload_sap" label="回传SAP" :formatter="formatUploadSap" /> <el-table-column show-overflow-tooltip prop="upload_sap" label="回传SAP" :formatter="formatUploadSap" width="80" />
<el-table-column show-overflow-tooltip prop="bill_code" width="130" label="单据号"> <el-table-column show-overflow-tooltip prop="bill_code" width="130" label="单据号">
<template slot-scope="scope"> <template slot-scope="scope">
<el-link type="warning" @click="toView(scope.$index, scope.row)">{{ scope.row.bill_code }}</el-link> <el-link type="warning" @click="toView(scope.$index, scope.row)">{{ scope.row.bill_code }}</el-link>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="stor_name" label="仓库" width="100" /> <el-table-column prop="stor_name" label="仓库" width="100" />
<el-table-column min-width="130" show-overflow-tooltip prop="bill_type" :formatter="bill_typeFormat" label="业务类型" /> <el-table-column min-width="100" show-overflow-tooltip prop="bill_type" :formatter="bill_typeFormat" label="业务类型" />
<el-table-column show-overflow-tooltip width="135" prop="biz_date" label="业务日期" /> <el-table-column show-overflow-tooltip width="100" prop="biz_date" label="业务日期" />
<el-table-column show-overflow-tooltip width="100" prop="vbeln" label="交货单" />
<el-table-column prop="total_qty" label="总重量" width="100" :formatter="crud.formatNum3" />
<el-table-column show-overflow-tooltip prop="remark" label="备注" width="100" />
<el-table-column <el-table-column
show-overflow-tooltip show-overflow-tooltip
:formatter="create_modeFormat" :formatter="create_modeFormat"
@@ -240,8 +243,6 @@
width="100" width="100"
/> />
<el-table-column label="明细数" align="center" prop="detail_count" width="100" /> <el-table-column label="明细数" align="center" prop="detail_count" width="100" />
<el-table-column prop="total_qty" label="总重量" width="100" :formatter="crud.formatNum3" />
<el-table-column show-overflow-tooltip prop="remark" label="备注" width="100" />
<el-table-column prop="input_optname" label="制单人" width="100" /> <el-table-column prop="input_optname" label="制单人" width="100" />
<el-table-column show-overflow-tooltip prop="input_time" label="制单时间" width="150" /> <el-table-column show-overflow-tooltip prop="input_time" label="制单时间" width="150" />
<el-table-column prop="update_optname" label="修改人" width="100" /> <el-table-column prop="update_optname" label="修改人" width="100" />

View File

@@ -304,7 +304,7 @@ export default {
rowmst: { rowmst: {
handler(newValue, oldValue) { handler(newValue, oldValue) {
this.mstrow = newValue this.mstrow = newValue
this.mstrow.stor_id = '' // this.mstrow.stor_id = ''
} }
} }
}, },
@@ -447,20 +447,20 @@ export default {
} }
}, },
allDiv() { allDiv() {
if (!this.mstrow.sect_id) { // if (!this.mstrow.sect_id) {
this.crud.notify('请先选择库区!', CRUD.NOTIFICATION_TYPE.INFO) // this.crud.notify('请先选择库区!', CRUD.NOTIFICATION_TYPE.INFO)
return // return
} // }
checkoutbill.allDiv(this.mstrow).then(res => { checkoutbill.allDiv(this.mstrow).then(res => {
this.crud.notify('分配成功!', CRUD.NOTIFICATION_TYPE.INFO) this.crud.notify('分配成功!', CRUD.NOTIFICATION_TYPE.INFO)
this.queryTableDtl() this.queryTableDtl()
}) })
}, },
oneDiv() { oneDiv() {
if (!this.mstrow.sect_id) { // if (!this.mstrow.sect_id) {
this.crud.notify('请先选择库区!', CRUD.NOTIFICATION_TYPE.INFO) // this.crud.notify('请先选择库区!', CRUD.NOTIFICATION_TYPE.INFO)
return // return
} // }
if (this.currentRow.iostorinvdtl_id !== null) { if (this.currentRow.iostorinvdtl_id !== null) {
this.mstrow.iostorinvdtl_id = this.currentRow.iostorinvdtl_id this.mstrow.iostorinvdtl_id = this.currentRow.iostorinvdtl_id
checkoutbill.allDivOne(this.mstrow).then(res => { checkoutbill.allDivOne(this.mstrow).then(res => {
@@ -496,7 +496,6 @@ export default {
// 根据此仓位的 ‘相同块、相同排、相同层’ 判断上一个任务是否生成 // 根据此仓位的 ‘相同块、相同排、相同层’ 判断上一个任务是否生成
const tab = this.tabledis const tab = this.tabledis
for (let i = 0; i < tab.length; i++) { for (let i = 0; i < tab.length; i++) {
debugger
const item = tab[i] const item = tab[i]
if (this.currentDis.block_num === item.block_num && this.currentDis.row_num === item.row_num && this.currentDis.layer_num === item.layer_num) { if (this.currentDis.block_num === item.block_num && this.currentDis.row_num === item.row_num && this.currentDis.layer_num === item.layer_num) {
const out_order_seq = parseInt(this.currentDis.out_order_seq) - 1 const out_order_seq = parseInt(this.currentDis.out_order_seq) - 1
@@ -529,7 +528,6 @@ export default {
}) })
}, },
cellStyle({ row, column, rowIndex, columnIndex }) { cellStyle({ row, column, rowIndex, columnIndex }) {
debugger
const assign_qty = parseFloat(row.assign_qty) const assign_qty = parseFloat(row.assign_qty)
const plan_qty = parseFloat(row.plan_qty) const plan_qty = parseFloat(row.plan_qty)

View File

@@ -231,11 +231,20 @@ export default {
this.queryrow.unassign_qty = parseFloat(this.queryrow.unassign_qty) - parseFloat(row.canuse_qty) this.queryrow.unassign_qty = parseFloat(this.queryrow.unassign_qty) - parseFloat(row.canuse_qty)
this.queryrow.assign_qty = parseFloat(this.queryrow.assign_qty) + parseFloat(row.canuse_qty) this.queryrow.assign_qty = parseFloat(this.queryrow.assign_qty) + parseFloat(row.canuse_qty)
} else { } else {
this.queryrow.unassign_qty = parseFloat(this.queryrow.unassign_qty) + parseFloat(row.canuse_qty) this.queryrow.assign_qty = parseFloat(this.queryrow.assign_qty) - parseFloat(row.canuse_qty)
if (this.queryrow.unassign_qty > this.goal_unassign_qty){ // 如果待分配重量等于0则 明细重量 - 已分配重量
if (parseInt(this.queryrow.unassign_qty) === 0) {
this.queryrow.unassign_qty = parseFloat(this.goal_unassign_qty) - parseFloat(this.queryrow.assign_qty)
} else {
this.queryrow.unassign_qty = parseFloat(this.queryrow.unassign_qty) + parseFloat(row.canuse_qty)
}
if (this.queryrow.unassign_qty > this.goal_unassign_qty) {
this.queryrow.unassign_qty = JSON.parse(JSON.stringify(this.goal_unassign_qty)) this.queryrow.unassign_qty = JSON.parse(JSON.stringify(this.goal_unassign_qty))
} }
this.queryrow.assign_qty = parseFloat(this.queryrow.assign_qty) - parseFloat(row.canuse_qty) // 如果已分配汇总量 > 明细重量 则待分配重量为0
if (this.queryrow.assign_qty > this.goal_unassign_qty) {
this.queryrow.unassign_qty = parseFloat('0')
}
} }
this.tableDtl.splice(index, 1, row) // 通过splice 替换数据 触发视图更新 this.tableDtl.splice(index, 1, row) // 通过splice 替换数据 触发视图更新
}, },

View File

@@ -128,6 +128,23 @@
@keyup.enter.native="crud.toQuery" @keyup.enter.native="crud.toQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="是否回传">
<el-select
v-model="query.is_upload"
clearable
size="mini"
placeholder="是否回传"
class="filter-item"
@change="crud.toQuery"
>
<el-option
v-for="item in dict.is_upload"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="创建时间"> <el-form-item label="创建时间">
<el-date-picker <el-date-picker
v-model="query.createTime" v-model="query.createTime"
@@ -228,16 +245,17 @@
<el-link type="warning" @click="toView(scope.$index, scope.row)">{{ scope.row.bill_code }}</el-link> <el-link type="warning" @click="toView(scope.$index, scope.row)">{{ scope.row.bill_code }}</el-link>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column show-overflow-tooltip :formatter="stateFormat" width="100" prop="bill_status" label="单据状态" /> <el-table-column show-overflow-tooltip :formatter="stateFormat" width="80" prop="bill_status" label="单据状态" />
<el-table-column prop="stor_name" label="仓库" width="100" /> <el-table-column show-overflow-tooltip prop="stor_name" label="仓库" width="80" />
<el-table-column show-overflow-tooltip prop="bill_type" :formatter="bill_typeFormat" label="业务类型" /> <el-table-column show-overflow-tooltip prop="bill_type" :formatter="bill_typeFormat" label="业务类型" />
<el-table-column show-overflow-tooltip width="135" prop="biz_date" label="业务日期" /> <el-table-column show-overflow-tooltip width="100" prop="biz_date" label="业务日期" />
<el-table-column show-overflow-tooltip :formatter="create_modeFormat" prop="create_mode" label="生成方式" width="100" /> <el-table-column show-overflow-tooltip label="明细数" align="center" prop="detail_count" width="60" />
<el-table-column label="明细数" align="center" prop="detail_count" width="100" /> <el-table-column show-overflow-tooltip label="总重量" align="center" prop="total_qty" width="100" />
<el-table-column label="总重量" align="center" prop="total_qty" width="100" />
<el-table-column show-overflow-tooltip label="客户" align="center" prop="cust_simple_name" width="100" /> <el-table-column show-overflow-tooltip label="客户" align="center" prop="cust_simple_name" width="100" />
<el-table-column show-overflow-tooltip label="客户编码" align="center" prop="cust_code" width="100" /> <el-table-column show-overflow-tooltip label="客户编码" align="center" prop="cust_code" width="100" />
<el-table-column show-overflow-tooltip label="交货单号" align="center" prop="vbeln" width="100" /> <el-table-column show-overflow-tooltip label="交货单号" align="center" prop="vbeln" width="100" />
<el-table-column show-overflow-tooltip label="是否回传" align="center" prop="is_upload" width="80" :formatter="formatIsUpload"/>
<el-table-column show-overflow-tooltip :formatter="create_modeFormat" prop="create_mode" label="生成方式" width="100" />
<el-table-column show-overflow-tooltip label="备注" align="center" prop="remark" width="100" /> <el-table-column show-overflow-tooltip label="备注" align="center" prop="remark" width="100" />
<el-table-column show-overflow-tooltip label="制单人" align="center" prop="input_optname" /> <el-table-column show-overflow-tooltip label="制单人" align="center" prop="input_optname" />
<el-table-column show-overflow-tooltip label="制单时间" align="center" prop="input_time" width="140" /> <el-table-column show-overflow-tooltip label="制单时间" align="center" prop="input_time" width="140" />
@@ -290,7 +308,7 @@ export default {
}, },
mixins: [presenter(), header(), crud()], mixins: [presenter(), header(), crud()],
// 数据字典 // 数据字典
dicts: ['io_bill_status', 'ST_CREATE_MODE', 'ST_INV_OUT_TYPE'], dicts: ['io_bill_status', 'ST_CREATE_MODE', 'ST_INV_OUT_TYPE', 'is_upload'],
data() { data() {
return { return {
height: document.documentElement.clientHeight - 180 + 'px;', height: document.documentElement.clientHeight - 180 + 'px;',
@@ -424,6 +442,13 @@ export default {
this.openParamMoney = row this.openParamMoney = row
this.openMoneyDialog = true this.openMoneyDialog = true
}, },
formatIsUpload(row) {
if (row.is_upload === '0') {
return '否'
} else if (row.is_upload === '1') {
return '是'
}
},
printExcel(jo) { printExcel(jo) {
if (jo.shd_dtl_num === '') { if (jo.shd_dtl_num === '') {
return this.crud.notify('客户为空!', CRUD.NOTIFICATION_TYPE.INFO) return this.crud.notify('客户为空!', CRUD.NOTIFICATION_TYPE.INFO)