Merge branch 'master' of http://121.40.234.130:8899/root/lanzhouhailiang_one
# Conflicts: # lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/impl/ProductInstorServiceImpl.java
This commit is contained in:
@@ -278,7 +278,7 @@ public class TwoNDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
|||||||
log.info("当前phase:"+ phase +"未找到对应设备");
|
log.info("当前phase:"+ phase +"未找到对应设备");
|
||||||
}
|
}
|
||||||
} catch (Exception e){
|
} catch (Exception e){
|
||||||
log.info("processSocket出错:" + e.getMessage());
|
log.info("processSocket出错:{},{}" ,e, e.getMessage());
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -459,7 +459,7 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
|
|||||||
param.put("product_area", paramService.findByCode("productArea").getValue());
|
param.put("product_area", paramService.findByCode("productArea").getValue());
|
||||||
acsToWmsService.sendDeviceStatus(param);
|
acsToWmsService.sendDeviceStatus(param);
|
||||||
}
|
}
|
||||||
data = NDCAgvService.sendAgvOneModeInst(phase, index, 0);
|
// data = NDCAgvService.sendAgvOneModeInst(phase, index, 0);
|
||||||
last_error = error;
|
last_error = error;
|
||||||
} else if (phase == 0x70) {
|
} else if (phase == 0x70) {
|
||||||
//x坐标
|
//x坐标
|
||||||
|
|||||||
@@ -208,19 +208,26 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic
|
|||||||
log.info("未找到指令号{}对应的指令", ikey);
|
log.info("未找到指令号{}对应的指令", ikey);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(ObjectUtil.isEmpty(inst.getCarno())){
|
if (ObjectUtil.isEmpty(inst.getCarno())) {
|
||||||
inst.setCarno(String.valueOf(carno));
|
inst.setCarno(String.valueOf(carno));
|
||||||
instructionService.update(inst);
|
instructionService.update(inst);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) {
|
if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) {
|
||||||
standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver();
|
standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver();
|
||||||
if (ObjectUtil.isNotEmpty(this.device.getExtraValue().get("wait"))
|
if (ObjectUtil.isNotEmpty(device.getExtraValue().get("wait"))
|
||||||
&& StrUtil.equals("true", this.device.getExtraValue().get("wait").toString())
|
&& StrUtil.equals("true", device.getExtraValue().get("wait").toString())
|
||||||
&& StrUtil.equals(task.getTask_type(), "1")) {
|
&& StrUtil.equals(task.getTask_type(), "1")) {
|
||||||
//
|
|
||||||
if (standardOrdinarySiteDeviceDriver.getOption() == 1) {
|
if (standardOrdinarySiteDeviceDriver.getOption() == 1) {
|
||||||
data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0);
|
String task_code = standardOrdinarySiteDeviceDriver.getTask_code();
|
||||||
|
log.info("当前任务号{},创建任务号{}", task.getTask_code(), task_code);
|
||||||
|
if (StrUtil.isEmpty(task_code) || !task_code.equals(task.getTask_code())) {
|
||||||
|
log.info("等待LMS系统进行确认允许取货,设备号{},指令号{},任务号{}", device_code, ikey, task.getTask_code());
|
||||||
|
message = "等待LMS系统进行确认允许取货,设备号:" + device_code + ",指令号:" + ikey;
|
||||||
|
logServer.deviceExecuteLog(this.device_code, "", "", "等待LMS系统进行确认允许取货,设备号" + device.getDevice_code() + ",指令号" + ikey);
|
||||||
|
} else {
|
||||||
|
data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
log.info("等待LMS系统进行确认允许取货,设备号{},指令号{}", device_code, ikey);
|
log.info("等待LMS系统进行确认允许取货,设备号{},指令号{}", device_code, ikey);
|
||||||
message = "等待LMS系统进行确认允许取货,设备号:" + device_code + ",指令号:" + ikey;
|
message = "等待LMS系统进行确认允许取货,设备号:" + device_code + ",指令号:" + ikey;
|
||||||
@@ -229,8 +236,6 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic
|
|||||||
} else {
|
} else {
|
||||||
data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0);
|
data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
} else if (device.getDeviceDriver() instanceof PhotoelectricInspectionSiteDeviceDriver) {
|
} else if (device.getDeviceDriver() instanceof PhotoelectricInspectionSiteDeviceDriver) {
|
||||||
photoelectricInspectionSiteDeviceDriver = (PhotoelectricInspectionSiteDeviceDriver) device.getDeviceDriver();
|
photoelectricInspectionSiteDeviceDriver = (PhotoelectricInspectionSiteDeviceDriver) device.getDeviceDriver();
|
||||||
if (photoelectricInspectionSiteDeviceDriver.getMove() == 1)
|
if (photoelectricInspectionSiteDeviceDriver.getMove() == 1)
|
||||||
@@ -242,17 +247,17 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
if ((standardInspectSiteDeviceDriver.getMove() == 1 && standardInspectSiteDeviceDriver.getAction() == 1) || standardInspectSiteDeviceDriver.getIs_force() == 1) {
|
||||||
if ((standardInspectSiteDeviceDriver.getMove() == 1 && standardInspectSiteDeviceDriver.getAction() == 1 )|| standardInspectSiteDeviceDriver.getIs_force()==1 ) {
|
|
||||||
data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0);
|
data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0);
|
||||||
} else {
|
} else {
|
||||||
message = "设备号:" + device_code + "光电信号:" + standardInspectSiteDeviceDriver.getMove() + ",动作信号:" + standardInspectSiteDeviceDriver.getAction() + ",指令号:" + ikey +"不满足取货条件";
|
message = "设备号:" + device_code + "光电信号:" + standardInspectSiteDeviceDriver.getMove() + ",动作信号:" + standardInspectSiteDeviceDriver.getAction() + ",指令号:" + ikey + "不满足取货条件";
|
||||||
log.info("设备{}当前光电信号{},动作信号{},不满足取货条件,指令号{}", device_code, standardInspectSiteDeviceDriver.getMove(), standardInspectSiteDeviceDriver.getAction(), ikey);
|
log.info("设备{}当前光电信号{},动作信号{},不满足取货条件,指令号{}", device_code, standardInspectSiteDeviceDriver.getMove(), standardInspectSiteDeviceDriver.getAction(), ikey);
|
||||||
}
|
}
|
||||||
|
standardInspectSiteDeviceDriver.setIs_force(0);
|
||||||
} else {
|
} else {
|
||||||
data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0);
|
data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0);
|
||||||
}
|
}
|
||||||
standardInspectSiteDeviceDriver.setIs_force(0);
|
|
||||||
}
|
}
|
||||||
// 取货完毕
|
// 取货完毕
|
||||||
//(Itype=1/2/3,需要WCS反馈Phase)
|
//(Itype=1/2/3,需要WCS反馈Phase)
|
||||||
@@ -288,7 +293,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic
|
|||||||
log.info("未找到指令号{}对应的指令", ikey);
|
log.info("未找到指令号{}对应的指令", ikey);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(ObjectUtil.isEmpty(inst.getCarno())){
|
if (ObjectUtil.isEmpty(inst.getCarno())) {
|
||||||
inst.setCarno(String.valueOf(carno));
|
inst.setCarno(String.valueOf(carno));
|
||||||
instructionService.update(inst);
|
instructionService.update(inst);
|
||||||
}
|
}
|
||||||
@@ -310,7 +315,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic
|
|||||||
} else if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) {
|
} else if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) {
|
||||||
standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver();
|
standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver();
|
||||||
standardInspectSiteDeviceDriver.writing("to_command", "0");
|
standardInspectSiteDeviceDriver.writing("to_command", "0");
|
||||||
if (standardInspectSiteDeviceDriver.getMove() == 0|| standardInspectSiteDeviceDriver.getIs_force()==1) {
|
if (standardInspectSiteDeviceDriver.getMove() == 0 || standardInspectSiteDeviceDriver.getIs_force() == 1) {
|
||||||
data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0);
|
data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0);
|
||||||
} else {
|
} else {
|
||||||
message = "设备号:" + device_code + "光电信号:" + standardInspectSiteDeviceDriver.getMove() + ",动作信号:" + standardInspectSiteDeviceDriver.getAction() + ",指令号:" + ikey + "不满足取货条件";
|
message = "设备号:" + device_code + "光电信号:" + standardInspectSiteDeviceDriver.getMove() + ",动作信号:" + standardInspectSiteDeviceDriver.getAction() + ",指令号:" + ikey + "不满足取货条件";
|
||||||
@@ -352,7 +357,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic
|
|||||||
log.info("未找到指令号{}对应的指令", ikey);
|
log.info("未找到指令号{}对应的指令", ikey);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(ObjectUtil.isEmpty(inst.getCarno())){
|
if (ObjectUtil.isEmpty(inst.getCarno())) {
|
||||||
inst.setCarno(String.valueOf(carno));
|
inst.setCarno(String.valueOf(carno));
|
||||||
instructionService.update(inst);
|
instructionService.update(inst);
|
||||||
}
|
}
|
||||||
@@ -362,10 +367,17 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic
|
|||||||
if (ObjectUtil.isNotEmpty(standardOrdinarySiteDeviceDriver.getDevice().getExtraValue().get("wait"))
|
if (ObjectUtil.isNotEmpty(standardOrdinarySiteDeviceDriver.getDevice().getExtraValue().get("wait"))
|
||||||
&& StrUtil.equals("true", standardOrdinarySiteDeviceDriver.getDevice().getExtraValue().get("wait").toString())
|
&& StrUtil.equals("true", standardOrdinarySiteDeviceDriver.getDevice().getExtraValue().get("wait").toString())
|
||||||
&& StrUtil.equals(task.getTask_type(), "1")) {
|
&& StrUtil.equals(task.getTask_type(), "1")) {
|
||||||
//
|
|
||||||
if (standardOrdinarySiteDeviceDriver.getOption() == 1) {
|
if (standardOrdinarySiteDeviceDriver.getOption() == 1) {
|
||||||
standardOrdinarySiteDeviceDriver.setAgvphase(0);
|
standardOrdinarySiteDeviceDriver.setAgvphase(0);
|
||||||
data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0);
|
String task_code = standardOrdinarySiteDeviceDriver.getTask_code();
|
||||||
|
log.info("当前任务号{},创建任务号{}", task.getTask_code(), task_code);
|
||||||
|
if (StrUtil.isEmpty(task_code) || !task_code.equals(task.getTask_code())) {
|
||||||
|
log.info("等待LMS系统进行确认允许取货,设备号{},指令号{},任务号{}", device_code, ikey, task.getTask_code());
|
||||||
|
message = "等待LMS系统进行确认允许取货,设备号:" + device_code + ",指令号:" + ikey;
|
||||||
|
logServer.deviceExecuteLog(this.device_code, "", "", "等待LMS系统进行确认允许取货,设备号" + device.getDevice_code() + ",指令号" + ikey);
|
||||||
|
} else {
|
||||||
|
data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
log.info("等待LMS系统进行确认允许取货,设备号{},指令号{}", device_code, ikey);
|
log.info("等待LMS系统进行确认允许取货,设备号{},指令号{}", device_code, ikey);
|
||||||
message = "等待LMS系统进行确认允许取货,设备号:" + device_code + ",指令号:" + ikey;
|
message = "等待LMS系统进行确认允许取货,设备号:" + device_code + ",指令号:" + ikey;
|
||||||
@@ -506,13 +518,13 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic
|
|||||||
} else if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) {
|
} else if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) {
|
||||||
standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver();
|
standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver();
|
||||||
standardInspectSiteDeviceDriver.writing("to_command", "1");
|
standardInspectSiteDeviceDriver.writing("to_command", "1");
|
||||||
if ((standardInspectSiteDeviceDriver.getMove() == 0 && standardInspectSiteDeviceDriver.getAction() == 1)||standardInspectSiteDeviceDriver.getIs_force()==1) {
|
if ((standardInspectSiteDeviceDriver.getMove() == 0 && standardInspectSiteDeviceDriver.getAction() == 1) || standardInspectSiteDeviceDriver.getIs_force() == 1) {
|
||||||
data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0);
|
data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0);
|
||||||
}
|
}
|
||||||
|
standardInspectSiteDeviceDriver.setIs_force(0);
|
||||||
} else {
|
} else {
|
||||||
data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0);
|
data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0);
|
||||||
}
|
}
|
||||||
standardInspectSiteDeviceDriver.setIs_force(0);
|
|
||||||
}
|
}
|
||||||
//放货完成
|
//放货完成
|
||||||
//(Itype=1/2/3,需要WCS反馈)
|
//(Itype=1/2/3,需要WCS反馈)
|
||||||
@@ -568,13 +580,13 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic
|
|||||||
} else if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) {
|
} else if (device.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) {
|
||||||
standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver();
|
standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) device.getDeviceDriver();
|
||||||
standardInspectSiteDeviceDriver.writing("to_command", "0");
|
standardInspectSiteDeviceDriver.writing("to_command", "0");
|
||||||
if ((standardInspectSiteDeviceDriver.getMove() == 1)||standardInspectSiteDeviceDriver.getIs_force()==1) {
|
if ((standardInspectSiteDeviceDriver.getMove() == 1) || standardInspectSiteDeviceDriver.getIs_force() == 1) {
|
||||||
data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0);
|
data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0);
|
||||||
}
|
}
|
||||||
|
standardInspectSiteDeviceDriver.setIs_force(0);
|
||||||
} else {
|
} else {
|
||||||
data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0);
|
data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0);
|
||||||
}
|
}
|
||||||
standardInspectSiteDeviceDriver.setIs_force(0);
|
|
||||||
}
|
}
|
||||||
//到达放货点
|
//到达放货点
|
||||||
//(Itype=1、3,需要WCS反馈)
|
//(Itype=1、3,需要WCS反馈)
|
||||||
@@ -714,7 +726,7 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic
|
|||||||
param.put("product_area", ParamService.findByCode("productArea").getValue());
|
param.put("product_area", ParamService.findByCode("productArea").getValue());
|
||||||
acsToWmsService.sendDeviceStatus(param);
|
acsToWmsService.sendDeviceStatus(param);
|
||||||
}
|
}
|
||||||
data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0);
|
// data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0);
|
||||||
last_error = error;
|
last_error = error;
|
||||||
} else if (phase == 0x70) {
|
} else if (phase == 0x70) {
|
||||||
//x坐标
|
//x坐标
|
||||||
|
|||||||
@@ -78,6 +78,8 @@ public class StandardOrdinarySiteDeviceDriver extends AbstractDeviceDriver imple
|
|||||||
Instruction inst = null;
|
Instruction inst = null;
|
||||||
//上次指令
|
//上次指令
|
||||||
Instruction last_inst = null;
|
Instruction last_inst = null;
|
||||||
|
//任务号
|
||||||
|
String task_code;
|
||||||
|
|
||||||
boolean requireSucess = false;
|
boolean requireSucess = false;
|
||||||
|
|
||||||
|
|||||||
@@ -1092,10 +1092,12 @@ public class WmsToAcsServiceImpl implements WmsToAcsService {
|
|||||||
if (device_k.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) {
|
if (device_k.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) {
|
||||||
standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device_k.getDeviceDriver();
|
standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device_k.getDeviceDriver();
|
||||||
standardOrdinarySiteDeviceDriver.setOption(Integer.parseInt(option));
|
standardOrdinarySiteDeviceDriver.setOption(Integer.parseInt(option));
|
||||||
|
standardOrdinarySiteDeviceDriver.setTask_code(task_code);
|
||||||
}
|
}
|
||||||
if (device_m.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) {
|
if (device_m.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) {
|
||||||
standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device_m.getDeviceDriver();
|
standardOrdinarySiteDeviceDriver = (StandardOrdinarySiteDeviceDriver) device_m.getDeviceDriver();
|
||||||
standardOrdinarySiteDeviceDriver.setOption(Integer.parseInt(option));
|
standardOrdinarySiteDeviceDriver.setOption(Integer.parseInt(option));
|
||||||
|
standardOrdinarySiteDeviceDriver.setTask_code(task_code);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
JSONObject jo = new JSONObject();
|
JSONObject jo = new JSONObject();
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ package org.nl.modules.security.rest;
|
|||||||
//
|
//
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
import sun.misc.BASE64Decoder;
|
import sun.misc.BASE64Decoder;
|
||||||
import sun.misc.BASE64Encoder;
|
import sun.misc.BASE64Encoder;
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -98,4 +98,18 @@ public class LmsToMesController {
|
|||||||
public ResponseEntity<Object> lmsPackage(@RequestBody JSONObject jo) {
|
public ResponseEntity<Object> lmsPackage(@RequestBody JSONObject jo) {
|
||||||
return new ResponseEntity<>(lmsToMesService.lmsPackage(jo), HttpStatus.OK);
|
return new ResponseEntity<>(lmsToMesService.lmsPackage(jo), HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/scrapAudit")
|
||||||
|
@Log("成品报废审核")
|
||||||
|
@ApiOperation("成品报废审核")
|
||||||
|
public ResponseEntity<Object> scrapAudit(@RequestBody JSONObject jo) {
|
||||||
|
return new ResponseEntity<>(lmsToMesService.scrapAudit(jo), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/proudDayData")
|
||||||
|
@Log("成品日报推送")
|
||||||
|
@ApiOperation("成品日报推送")
|
||||||
|
public ResponseEntity<Object> proudDayData(@RequestBody JSONObject jo) {
|
||||||
|
return new ResponseEntity<>(lmsToMesService.proudDayData(jo), HttpStatus.OK);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -110,4 +110,16 @@ public interface LmsToMesService {
|
|||||||
* }
|
* }
|
||||||
*/
|
*/
|
||||||
JSONObject lmsPackage(JSONObject jo);
|
JSONObject lmsPackage(JSONObject jo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 成品报废审核
|
||||||
|
* 参数:
|
||||||
|
*/
|
||||||
|
JSONObject scrapAudit(JSONObject jo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 成品日报推送
|
||||||
|
* 参数:
|
||||||
|
*/
|
||||||
|
JSONObject proudDayData(JSONObject jo);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -604,4 +604,78 @@ public class LmsToMesServiceImpl implements LmsToMesService {
|
|||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JSONObject scrapAudit(JSONObject param) {
|
||||||
|
log.info("scrapAudit接口输入参数为:-------------------" + param.toString());
|
||||||
|
|
||||||
|
JSONObject result = new JSONObject();
|
||||||
|
if (StrUtil.equals("0", is_connect_mes)) {
|
||||||
|
result.put("status", HttpStatus.OK.value());
|
||||||
|
result.put("message", "下发成功,但未连接飞书!");
|
||||||
|
result.put("data", new JSONObject());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
// String url = acsUrl + api;
|
||||||
|
String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("FEISHU_URL").getValue();
|
||||||
|
String api = "/FeiShuNoticesWebApi/CreateApproval";
|
||||||
|
url = url + api;
|
||||||
|
|
||||||
|
try {
|
||||||
|
String resultMsg = HttpRequest.post(url)
|
||||||
|
.body(String.valueOf(param))
|
||||||
|
.execute().body();
|
||||||
|
result = JSONObject.parseObject(resultMsg);
|
||||||
|
log.info("scrapAudit接口输出参数为:-------------------" + result.toString());
|
||||||
|
|
||||||
|
|
||||||
|
String RTYPE = result.getString("RTYPE");
|
||||||
|
if (RTYPE.equals("E")) {
|
||||||
|
throw new BadRequestException(result.getString("RTMSG"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new BadRequestException("飞书提示错误:" + e.getMessage());
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JSONObject proudDayData(JSONObject param) {
|
||||||
|
log.info("proudDayData接口输入参数为:-------------------" + param.toString());
|
||||||
|
|
||||||
|
JSONObject result = new JSONObject();
|
||||||
|
if (StrUtil.equals("0", is_connect_mes)) {
|
||||||
|
result.put("status", HttpStatus.OK.value());
|
||||||
|
result.put("message", "下发成功,但未连接飞书!");
|
||||||
|
result.put("data", new JSONObject());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
// String url = acsUrl + api;
|
||||||
|
String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("FEISHU_URL").getValue();
|
||||||
|
String api = "/FeiShuNoticesWebApi/SendCard";
|
||||||
|
url = url + api;
|
||||||
|
|
||||||
|
try {
|
||||||
|
String resultMsg = HttpRequest.post(url)
|
||||||
|
.body(String.valueOf(param))
|
||||||
|
.execute().body();
|
||||||
|
result = JSONObject.parseObject(resultMsg);
|
||||||
|
log.info("proudDayData接口输出参数为:-------------------" + result.toString());
|
||||||
|
|
||||||
|
|
||||||
|
String RTYPE = result.getString("RTYPE");
|
||||||
|
if (RTYPE.equals("E")) {
|
||||||
|
throw new BadRequestException(result.getString("RTMSG"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new BadRequestException("飞书提示错误:" + e.getMessage());
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import org.nl.wms.pda.mps.service.impl.BakingServiceImpl;
|
|||||||
import org.nl.wms.sch.manage.AbstractAcsTask;
|
import org.nl.wms.sch.manage.AbstractAcsTask;
|
||||||
import org.nl.wms.sch.tasks.CoolCutTask;
|
import org.nl.wms.sch.tasks.CoolCutTask;
|
||||||
import org.nl.wms.st.inbill.service.CheckOutBillService;
|
import org.nl.wms.st.inbill.service.CheckOutBillService;
|
||||||
|
import org.nl.wms.st.instor.service.impl.ProductScrapServiceImpl;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
@@ -1358,9 +1359,44 @@ public class MesToLmsServiceImpl implements MesToLmsService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JSONObject sendAuditResult(JSONObject param) {
|
public JSONObject sendAuditResult(JSONObject param) {
|
||||||
String instance_code = param.getString("instance_code");
|
log.info("sendAuditResult接口输入参数为:-------------------" + param.toString());
|
||||||
//0-不通过;1-通过;
|
|
||||||
String result = param.getString("result");
|
WQLObject mst = WQLObject.getWQLObject("ST_IVT_ProductScrapMst");
|
||||||
return null;
|
JSONObject resultParam = new JSONObject();
|
||||||
|
|
||||||
|
try {
|
||||||
|
String instance_code = param.getString("instance_code");
|
||||||
|
//0-不通过;1-通过;
|
||||||
|
String result = param.getString("result");
|
||||||
|
|
||||||
|
if (ObjectUtil.isEmpty(instance_code)) throw new BadRequestException("参数instance_code不能为空");
|
||||||
|
if (ObjectUtil.isEmpty(result)) throw new BadRequestException("参数result不能为空");
|
||||||
|
|
||||||
|
JSONObject json = mst.query("ext_code = '" + instance_code + "' and bill_status = '20'").uniqueResult(0);
|
||||||
|
if (ObjectUtil.isEmpty(json)) throw new BadRequestException("未找到对应单据或已经完成!");
|
||||||
|
|
||||||
|
// 调用接口
|
||||||
|
ProductScrapServiceImpl bean = SpringContextHolder.getBean(ProductScrapServiceImpl.class);
|
||||||
|
|
||||||
|
if (result.equals("0")) {
|
||||||
|
bean.auditOut(json);
|
||||||
|
} else {
|
||||||
|
bean.auditPass(json);
|
||||||
|
}
|
||||||
|
|
||||||
|
resultParam.put("RTYPE", "S");
|
||||||
|
resultParam.put("Code", "0");
|
||||||
|
resultParam.put("RTMSG", "操作成功!");
|
||||||
|
System.out.println(resultParam);
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
resultParam.put("RTYPE", "E");
|
||||||
|
resultParam.put("Code", "1");
|
||||||
|
resultParam.put("RTMSG", "操作失败!," + e.getMessage());
|
||||||
|
System.out.println(resultParam);
|
||||||
|
}
|
||||||
|
|
||||||
|
log.info("sendAuditResult接口输出参数为:-------------------" + resultParam.toString());
|
||||||
|
return resultParam;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,4 +63,12 @@ public class LmsToBigScreenController {
|
|||||||
return new ResponseEntity<>(LmsToBigScreenService.getMonthDelivery(jo), HttpStatus.OK);
|
return new ResponseEntity<>(LmsToBigScreenService.getMonthDelivery(jo), HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/getProudDayData")
|
||||||
|
@Log("成品日报")
|
||||||
|
@ApiOperation("成品日报")
|
||||||
|
@SaIgnore
|
||||||
|
public ResponseEntity<Object> getProudDayData(@RequestBody JSONObject jo) {
|
||||||
|
return new ResponseEntity<>(LmsToBigScreenService.getProudDayData(jo), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,4 +11,6 @@ public interface LmsToBigScreenService {
|
|||||||
JSONArray getMonthFreight(JSONObject jo);
|
JSONArray getMonthFreight(JSONObject jo);
|
||||||
JSONArray getMonthYield(JSONObject jo);
|
JSONArray getMonthYield(JSONObject jo);
|
||||||
JSONArray getMonthDelivery(JSONObject jo);
|
JSONArray getMonthDelivery(JSONObject jo);
|
||||||
|
|
||||||
|
JSONObject getProudDayData(JSONObject jo);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import org.nl.modules.wql.util.SpringContextHolder;
|
|||||||
import org.nl.system.service.param.impl.SysParamServiceImpl;
|
import org.nl.system.service.param.impl.SysParamServiceImpl;
|
||||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||||
import org.nl.wms.ext.szls.service.LmsToBigScreenService;
|
import org.nl.wms.ext.szls.service.LmsToBigScreenService;
|
||||||
|
import org.nl.wms.sch.manage.AutoQueryProudDayData;
|
||||||
import org.nl.wms.sch.tasks.URLEnum;
|
import org.nl.wms.sch.tasks.URLEnum;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
@@ -107,4 +108,9 @@ public class LmsToBigScreenServiceImpl implements LmsToBigScreenService {
|
|||||||
}
|
}
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JSONObject getProudDayData(JSONObject jo) {
|
||||||
|
return SpringContextHolder.getBean(AutoQueryProudDayData.class).data();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,425 @@
|
|||||||
|
[交易说明]
|
||||||
|
交易名: 成品日报
|
||||||
|
所属模块:
|
||||||
|
功能简述:
|
||||||
|
版权所有:
|
||||||
|
表引用:
|
||||||
|
版本经历:
|
||||||
|
|
||||||
|
[数据库]
|
||||||
|
--指定数据库,为空采用默认值,默认为db.properties中列出的第一个库
|
||||||
|
|
||||||
|
[IO定义]
|
||||||
|
#################################################
|
||||||
|
## 表字段对应输入参数
|
||||||
|
#################################################
|
||||||
|
输入.flag TYPEAS s_string
|
||||||
|
输入.customer_name TYPEAS f_string
|
||||||
|
|
||||||
|
[临时表]
|
||||||
|
--这边列出来的临时表就会在运行期动态创建
|
||||||
|
|
||||||
|
[临时变量]
|
||||||
|
--所有中间过程变量均可在此处定义
|
||||||
|
|
||||||
|
[业务过程]
|
||||||
|
|
||||||
|
##########################################
|
||||||
|
# 1、输入输出检查 #
|
||||||
|
##########################################
|
||||||
|
|
||||||
|
|
||||||
|
##########################################
|
||||||
|
# 2、主过程前处理 #
|
||||||
|
##########################################
|
||||||
|
|
||||||
|
|
||||||
|
##########################################
|
||||||
|
# 3、业务主过程 #
|
||||||
|
##########################################
|
||||||
|
|
||||||
|
IF 输入.flag = "1"
|
||||||
|
QUERY
|
||||||
|
SELECT
|
||||||
|
SUM( ivt.ivt_qty ) / 1000 AS num,
|
||||||
|
attr.stor_id
|
||||||
|
FROM
|
||||||
|
st_ivt_structivt ivt
|
||||||
|
LEFT JOIN st_ivt_structattr attr ON ivt.struct_id = attr.struct_id
|
||||||
|
WHERE
|
||||||
|
ivt.ivt_qty > '0'
|
||||||
|
|
||||||
|
GROUP BY attr.stor_id
|
||||||
|
|
||||||
|
ENDSELECT
|
||||||
|
ENDQUERY
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
IF 输入.flag = "2"
|
||||||
|
QUERY
|
||||||
|
SELECT
|
||||||
|
SUM( ivt.ivt_qty ) / 1000 AS num,
|
||||||
|
attr.stor_id
|
||||||
|
FROM
|
||||||
|
st_ivt_structivt ivt
|
||||||
|
LEFT JOIN st_ivt_structattr attr ON attr.struct_id = ivt.struct_id
|
||||||
|
LEFT JOIN pdm_bi_subpackagerelation sub ON sub.package_box_sn = attr.storagevehicle_code
|
||||||
|
AND ivt.pcsn = sub.container_name
|
||||||
|
WHERE
|
||||||
|
DATEDIFF( NOW(), sub.date_of_production ) >= '90'
|
||||||
|
AND ivt.ivt_qty > '0'
|
||||||
|
|
||||||
|
GROUP BY attr.stor_id
|
||||||
|
|
||||||
|
ENDSELECT
|
||||||
|
ENDQUERY
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
IF 输入.flag = "3"
|
||||||
|
QUERY
|
||||||
|
SELECT
|
||||||
|
SUM( ivt.ivt_qty ) / 1000 AS num,
|
||||||
|
attr.stor_id
|
||||||
|
FROM
|
||||||
|
st_ivt_structivt ivt
|
||||||
|
LEFT JOIN st_ivt_structattr attr ON attr.struct_id = ivt.struct_id
|
||||||
|
LEFT JOIN pdm_bi_subpackagerelation sub ON sub.package_box_sn = attr.storagevehicle_code
|
||||||
|
AND ivt.pcsn = sub.container_name
|
||||||
|
WHERE
|
||||||
|
DATEDIFF( NOW(), sub.date_of_production ) > '60'
|
||||||
|
AND DATEDIFF( NOW(), sub.date_of_production ) <= '90'
|
||||||
|
AND ivt.ivt_qty > '0'
|
||||||
|
|
||||||
|
GROUP BY attr.stor_id
|
||||||
|
|
||||||
|
ENDSELECT
|
||||||
|
ENDQUERY
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
IF 输入.flag = "4"
|
||||||
|
QUERY
|
||||||
|
SELECT
|
||||||
|
SUM( ivt.ivt_qty ) / 1000 AS num,
|
||||||
|
attr.stor_id
|
||||||
|
FROM
|
||||||
|
st_ivt_structivt ivt
|
||||||
|
LEFT JOIN st_ivt_structattr attr ON attr.struct_id = ivt.struct_id
|
||||||
|
LEFT JOIN pdm_bi_subpackagerelation sub ON sub.package_box_sn = attr.storagevehicle_code
|
||||||
|
AND ivt.pcsn = sub.container_name
|
||||||
|
WHERE
|
||||||
|
DATEDIFF( NOW(), sub.date_of_production ) < '90'
|
||||||
|
AND ivt.ivt_qty > '0'
|
||||||
|
|
||||||
|
GROUP BY attr.stor_id
|
||||||
|
|
||||||
|
ENDSELECT
|
||||||
|
ENDQUERY
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
IF 输入.flag = "5"
|
||||||
|
QUERY
|
||||||
|
SELECT
|
||||||
|
SUM( ivt.ivt_qty ) / 1000 AS num,
|
||||||
|
attr.stor_id
|
||||||
|
FROM
|
||||||
|
st_ivt_structivt ivt
|
||||||
|
LEFT JOIN st_ivt_structattr attr ON attr.struct_id = ivt.struct_id
|
||||||
|
LEFT JOIN pdm_bi_subpackagerelation sub ON sub.package_box_sn = attr.storagevehicle_code
|
||||||
|
AND ivt.pcsn = sub.container_name
|
||||||
|
WHERE
|
||||||
|
ivt.ivt_qty > '0'
|
||||||
|
|
||||||
|
OPTION 输入.customer_name <> ""
|
||||||
|
sub.customer_name in 输入.customer_name
|
||||||
|
ENDOPTION
|
||||||
|
|
||||||
|
GROUP BY attr.stor_id
|
||||||
|
|
||||||
|
ENDSELECT
|
||||||
|
ENDQUERY
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
IF 输入.flag = "6"
|
||||||
|
QUERY
|
||||||
|
SELECT
|
||||||
|
SUM( ivt.ivt_qty ) / 1000 AS num,
|
||||||
|
attr.stor_id
|
||||||
|
FROM
|
||||||
|
st_ivt_structivt ivt
|
||||||
|
LEFT JOIN st_ivt_structattr attr ON attr.struct_id = ivt.struct_id
|
||||||
|
LEFT JOIN pdm_bi_subpackagerelation sub ON sub.package_box_sn = attr.storagevehicle_code
|
||||||
|
AND ivt.pcsn = sub.container_name
|
||||||
|
WHERE
|
||||||
|
ivt.ivt_qty > '0'
|
||||||
|
|
||||||
|
OPTION 输入.customer_name <> ""
|
||||||
|
sub.customer_name not in 输入.customer_name
|
||||||
|
ENDOPTION
|
||||||
|
|
||||||
|
GROUP BY attr.stor_id
|
||||||
|
|
||||||
|
ENDSELECT
|
||||||
|
ENDQUERY
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
IF 输入.flag = "7"
|
||||||
|
QUERY
|
||||||
|
SELECT
|
||||||
|
SUM( dis.plan_qty ) / 1000 AS num,
|
||||||
|
sub.customer_name
|
||||||
|
FROM
|
||||||
|
st_ivt_iostorinvdis dis
|
||||||
|
LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id
|
||||||
|
LEFT JOIN pdm_bi_subpackagerelation sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no
|
||||||
|
WHERE
|
||||||
|
mst.is_delete = '0'
|
||||||
|
AND mst.io_type = '0'
|
||||||
|
AND mst.bill_status = '99'
|
||||||
|
AND mst.biz_date = DATE_SUB(CURDATE(), INTERVAL 1 DAY)
|
||||||
|
|
||||||
|
GROUP BY sub.customer_name
|
||||||
|
|
||||||
|
ENDSELECT
|
||||||
|
ENDQUERY
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
IF 输入.flag = "8"
|
||||||
|
QUERY
|
||||||
|
SELECT
|
||||||
|
SUM( dis.plan_qty ) / 1000 AS num,
|
||||||
|
sub.customer_name
|
||||||
|
FROM
|
||||||
|
st_ivt_iostorinvdis dis
|
||||||
|
LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id
|
||||||
|
LEFT JOIN pdm_bi_subpackagerelation sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no
|
||||||
|
WHERE
|
||||||
|
mst.is_delete = '0'
|
||||||
|
AND mst.io_type = '1'
|
||||||
|
AND mst.bill_status = '99'
|
||||||
|
AND mst.biz_date = DATE_SUB(CURDATE(), INTERVAL 1 DAY)
|
||||||
|
|
||||||
|
GROUP BY sub.customer_name
|
||||||
|
|
||||||
|
ENDSELECT
|
||||||
|
ENDQUERY
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
IF 输入.flag = "9"
|
||||||
|
QUERY
|
||||||
|
SELECT
|
||||||
|
SUM( dis.plan_qty ) / 1000 AS num,
|
||||||
|
sub.customer_name
|
||||||
|
FROM
|
||||||
|
st_ivt_iostorinvdis dis
|
||||||
|
LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id
|
||||||
|
LEFT JOIN pdm_bi_subpackagerelation sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no
|
||||||
|
WHERE
|
||||||
|
mst.is_delete = '0'
|
||||||
|
AND mst.io_type = '0'
|
||||||
|
AND mst.bill_status = '99'
|
||||||
|
AND MONTH(mst.biz_date) = MONTH(CURDATE())
|
||||||
|
AND YEAR(mst.biz_date) = YEAR(CURDATE())
|
||||||
|
|
||||||
|
GROUP BY sub.customer_name
|
||||||
|
|
||||||
|
ENDSELECT
|
||||||
|
ENDQUERY
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
IF 输入.flag = "10"
|
||||||
|
QUERY
|
||||||
|
SELECT
|
||||||
|
SUM( dis.plan_qty ) / 1000 AS num,
|
||||||
|
sub.customer_name
|
||||||
|
FROM
|
||||||
|
st_ivt_iostorinvdis dis
|
||||||
|
LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id
|
||||||
|
LEFT JOIN pdm_bi_subpackagerelation sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no
|
||||||
|
WHERE
|
||||||
|
mst.is_delete = '0'
|
||||||
|
AND mst.io_type = '1'
|
||||||
|
AND mst.bill_status = '99'
|
||||||
|
AND MONTH(mst.biz_date) = MONTH(CURDATE())
|
||||||
|
AND YEAR(mst.biz_date) = YEAR(CURDATE())
|
||||||
|
|
||||||
|
GROUP BY sub.customer_name
|
||||||
|
|
||||||
|
ENDSELECT
|
||||||
|
ENDQUERY
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
IF 输入.flag = "11"
|
||||||
|
QUERY
|
||||||
|
SELECT
|
||||||
|
SUM( dis.plan_qty ) / 1000 AS num,
|
||||||
|
LEFT(dis.pcsn,2) AS region_code
|
||||||
|
FROM
|
||||||
|
st_ivt_iostorinvdis dis
|
||||||
|
LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id
|
||||||
|
LEFT JOIN pdm_bi_subpackagerelation sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no
|
||||||
|
WHERE
|
||||||
|
mst.is_delete = '0'
|
||||||
|
AND mst.io_type = '0'
|
||||||
|
AND mst.bill_status = '99'
|
||||||
|
AND mst.biz_date = DATE_SUB(CURDATE(), INTERVAL 1 DAY)
|
||||||
|
|
||||||
|
GROUP BY LEFT(dis.pcsn,2)
|
||||||
|
|
||||||
|
ENDSELECT
|
||||||
|
ENDQUERY
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
IF 输入.flag = "12"
|
||||||
|
QUERY
|
||||||
|
SELECT
|
||||||
|
SUM( dis.plan_qty ) / 1000 AS num,
|
||||||
|
LEFT(dis.pcsn,2) AS region_code
|
||||||
|
FROM
|
||||||
|
st_ivt_iostorinvdis dis
|
||||||
|
LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id
|
||||||
|
LEFT JOIN pdm_bi_subpackagerelation sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no
|
||||||
|
WHERE
|
||||||
|
mst.is_delete = '0'
|
||||||
|
AND mst.io_type = '1'
|
||||||
|
AND mst.bill_status = '99'
|
||||||
|
AND mst.biz_date = DATE_SUB(CURDATE(), INTERVAL 1 DAY)
|
||||||
|
|
||||||
|
GROUP BY LEFT(dis.pcsn,2)
|
||||||
|
|
||||||
|
ENDSELECT
|
||||||
|
ENDQUERY
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
IF 输入.flag = "13"
|
||||||
|
QUERY
|
||||||
|
SELECT
|
||||||
|
SUM( dis.plan_qty ) / 1000 AS num,
|
||||||
|
LEFT(dis.pcsn,2) AS region_code,
|
||||||
|
sub.customer_name
|
||||||
|
FROM
|
||||||
|
st_ivt_iostorinvdis dis
|
||||||
|
LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id
|
||||||
|
LEFT JOIN pdm_bi_subpackagerelation sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no
|
||||||
|
WHERE
|
||||||
|
mst.is_delete = '0'
|
||||||
|
AND mst.io_type = '0'
|
||||||
|
AND mst.bill_status = '99'
|
||||||
|
AND mst.biz_date = DATE_SUB(CURDATE(), INTERVAL 1 DAY)
|
||||||
|
|
||||||
|
GROUP BY LEFT(dis.pcsn,2),sub.customer_name
|
||||||
|
|
||||||
|
ENDSELECT
|
||||||
|
ENDQUERY
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
IF 输入.flag = "14"
|
||||||
|
QUERY
|
||||||
|
SELECT
|
||||||
|
SUM( dis.plan_qty ) / 1000 AS num,
|
||||||
|
LEFT(dis.pcsn,2) AS region_code,
|
||||||
|
sub.customer_name
|
||||||
|
FROM
|
||||||
|
st_ivt_iostorinvdis dis
|
||||||
|
LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id
|
||||||
|
LEFT JOIN pdm_bi_subpackagerelation sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no
|
||||||
|
WHERE
|
||||||
|
mst.is_delete = '0'
|
||||||
|
AND mst.io_type = '1'
|
||||||
|
AND mst.bill_status = '99'
|
||||||
|
AND mst.biz_date = DATE_SUB(CURDATE(), INTERVAL 1 DAY)
|
||||||
|
|
||||||
|
GROUP BY LEFT(dis.pcsn,2),sub.customer_name
|
||||||
|
|
||||||
|
ENDSELECT
|
||||||
|
ENDQUERY
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
IF 输入.flag = "15"
|
||||||
|
QUERY
|
||||||
|
SELECT
|
||||||
|
SUM( dis.plan_qty ) / 1000 AS num,
|
||||||
|
LEFT(dis.pcsn,2) AS region_code
|
||||||
|
FROM
|
||||||
|
st_ivt_iostorinvdis dis
|
||||||
|
LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id
|
||||||
|
LEFT JOIN pdm_bi_subpackagerelation sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no
|
||||||
|
WHERE
|
||||||
|
mst.is_delete = '0'
|
||||||
|
AND mst.io_type = '0'
|
||||||
|
AND mst.bill_status = '99'
|
||||||
|
AND MONTH(mst.biz_date) = MONTH(CURDATE())
|
||||||
|
AND YEAR(mst.biz_date) = YEAR(CURDATE())
|
||||||
|
|
||||||
|
GROUP BY LEFT(dis.pcsn,2)
|
||||||
|
|
||||||
|
ENDSELECT
|
||||||
|
ENDQUERY
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
IF 输入.flag = "16"
|
||||||
|
QUERY
|
||||||
|
SELECT
|
||||||
|
SUM( dis.plan_qty ) / 1000 AS num,
|
||||||
|
LEFT(dis.pcsn,2) AS region_code
|
||||||
|
FROM
|
||||||
|
st_ivt_iostorinvdis dis
|
||||||
|
LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id
|
||||||
|
LEFT JOIN pdm_bi_subpackagerelation sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no
|
||||||
|
WHERE
|
||||||
|
mst.is_delete = '0'
|
||||||
|
AND mst.io_type = '1'
|
||||||
|
AND mst.bill_status = '99'
|
||||||
|
AND MONTH(mst.biz_date) = MONTH(CURDATE())
|
||||||
|
AND YEAR(mst.biz_date) = YEAR(CURDATE())
|
||||||
|
|
||||||
|
GROUP BY LEFT(dis.pcsn,2)
|
||||||
|
|
||||||
|
ENDSELECT
|
||||||
|
ENDQUERY
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
IF 输入.flag = "17"
|
||||||
|
QUERY
|
||||||
|
SELECT
|
||||||
|
SUM( dis.plan_qty ) / 1000 AS num,
|
||||||
|
LEFT(dis.pcsn,2) AS region_code,
|
||||||
|
sub.customer_name
|
||||||
|
FROM
|
||||||
|
st_ivt_iostorinvdis dis
|
||||||
|
LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id
|
||||||
|
LEFT JOIN pdm_bi_subpackagerelation sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no
|
||||||
|
WHERE
|
||||||
|
mst.is_delete = '0'
|
||||||
|
AND mst.io_type = '0'
|
||||||
|
AND mst.bill_status = '99'
|
||||||
|
AND MONTH(mst.biz_date) = MONTH(CURDATE())
|
||||||
|
AND YEAR(mst.biz_date) = YEAR(CURDATE())
|
||||||
|
|
||||||
|
GROUP BY LEFT(dis.pcsn,2),sub.customer_name
|
||||||
|
|
||||||
|
ENDSELECT
|
||||||
|
ENDQUERY
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
IF 输入.flag = "18"
|
||||||
|
QUERY
|
||||||
|
SELECT
|
||||||
|
SUM( dis.plan_qty ) / 1000 AS num,
|
||||||
|
LEFT(dis.pcsn,2) AS region_code,
|
||||||
|
sub.customer_name
|
||||||
|
FROM
|
||||||
|
st_ivt_iostorinvdis dis
|
||||||
|
LEFT JOIN st_ivt_iostorinv mst ON dis.iostorinv_id = mst.iostorinv_id
|
||||||
|
LEFT JOIN pdm_bi_subpackagerelation sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no
|
||||||
|
WHERE
|
||||||
|
mst.is_delete = '0'
|
||||||
|
AND mst.io_type = '1'
|
||||||
|
AND mst.bill_status = '99'
|
||||||
|
AND MONTH(mst.biz_date) = MONTH(CURDATE())
|
||||||
|
AND YEAR(mst.biz_date) = YEAR(CURDATE())
|
||||||
|
|
||||||
|
GROUP BY LEFT(dis.pcsn,2),sub.customer_name
|
||||||
|
|
||||||
|
ENDSELECT
|
||||||
|
ENDQUERY
|
||||||
|
ENDIF
|
||||||
@@ -0,0 +1,517 @@
|
|||||||
|
package org.nl.wms.sch.manage;
|
||||||
|
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.util.NumberUtil;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.nl.modules.wql.WQL;
|
||||||
|
import org.nl.modules.wql.core.bean.WQLObject;
|
||||||
|
import org.nl.modules.wql.util.SpringContextHolder;
|
||||||
|
import org.nl.system.service.param.impl.SysParamServiceImpl;
|
||||||
|
import org.nl.wms.ext.mes.service.LmsToMesService;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
@Component
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class AutoQueryProudDayData {
|
||||||
|
|
||||||
|
private final LmsToMesService lmsToMesService;
|
||||||
|
|
||||||
|
public void run() {
|
||||||
|
JSONObject param = new JSONObject();
|
||||||
|
|
||||||
|
JSONArray UserList = new JSONArray();
|
||||||
|
|
||||||
|
String userList = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("USER_LIST_FEISHU").getValue();
|
||||||
|
|
||||||
|
String[] split = userList.split(",");
|
||||||
|
if (split.length > 0) {
|
||||||
|
for (String s : split) {
|
||||||
|
JSONObject jo = new JSONObject();
|
||||||
|
jo.put("User", s);
|
||||||
|
UserList.add(jo);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
JSONObject jo = new JSONObject();
|
||||||
|
jo.put("User","");
|
||||||
|
UserList.add(jo);
|
||||||
|
}
|
||||||
|
param.put("UserList", UserList);
|
||||||
|
|
||||||
|
param.put("Code", "ctp_AAVwgNuQOtO0");
|
||||||
|
param.put("card", data());
|
||||||
|
|
||||||
|
// 调用接口
|
||||||
|
lmsToMesService.proudDayData(param);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public JSONObject data() {
|
||||||
|
WQLObject storTab = WQLObject.getWQLObject("st_ivt_bsrealstorattr"); // 仓库表
|
||||||
|
|
||||||
|
// 查询共多少个仓库
|
||||||
|
String in_stor_code = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("STOR_CODE_FEISHU").getValue();
|
||||||
|
JSONArray storArr = storTab.query("is_used = '1' and stor_code in"+in_stor_code).getResultJSONArray(0);
|
||||||
|
|
||||||
|
// 客户
|
||||||
|
String custB = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("CUST_B").getValue();
|
||||||
|
String custC = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("CUST_C").getValue();
|
||||||
|
|
||||||
|
JSONObject result = new JSONObject(); // 全部数据
|
||||||
|
result.put("Title", DateUtil.today()+"成品数据(单位:T)");
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 查询各仓库库存
|
||||||
|
*/
|
||||||
|
JSONArray Arrayobject1 = new JSONArray(); // 各仓库库存集合
|
||||||
|
|
||||||
|
// 库存总量集合
|
||||||
|
List<JSONObject> allIvtList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "1").process().getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||||
|
|
||||||
|
// 超期库存集合
|
||||||
|
List<JSONObject> sidIvtList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "2").process().getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||||
|
|
||||||
|
// 临期库存集合
|
||||||
|
List<JSONObject> faceIvtList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "3").process().getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||||
|
|
||||||
|
// 正常库龄
|
||||||
|
List<JSONObject> regIvtList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "4").process().getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||||
|
|
||||||
|
for (int i = 0; i < storArr.size(); i++) {
|
||||||
|
JSONObject item = storArr.getJSONObject(i);
|
||||||
|
|
||||||
|
JSONObject json = new JSONObject();
|
||||||
|
json.put("local", item.getString("stor_name")); // 存储地点
|
||||||
|
|
||||||
|
// 库存总量
|
||||||
|
List<JSONObject> collect = allIvtList.stream()
|
||||||
|
.filter(row -> row.getString("stor_id").equals(item.getString("stor_id")))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
json.put("TotalInventory", collect.isEmpty() ? "0" : NumberUtil.round(collect.get(0).getString("num"), 2)+"");
|
||||||
|
|
||||||
|
// 超期库存
|
||||||
|
List<JSONObject> collect2 = sidIvtList.stream()
|
||||||
|
.filter(row -> row.getString("stor_id").equals(item.getString("stor_id")))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
json.put("OverdueInventory", collect2.isEmpty() ? "0" : NumberUtil.round(collect2.get(0).getString("num"),2)+"");
|
||||||
|
|
||||||
|
// 临期库存
|
||||||
|
List<JSONObject> collect3 = faceIvtList.stream()
|
||||||
|
.filter(row -> row.getString("stor_id").equals(item.getString("stor_id")))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
json.put("InterimInventory", collect3.isEmpty() ? "0" : NumberUtil.round(collect3.get(0).getString("num"),2)+"");
|
||||||
|
|
||||||
|
// 正常库存
|
||||||
|
List<JSONObject> collect4 = regIvtList.stream()
|
||||||
|
.filter(row -> row.getString("stor_id").equals(item.getString("stor_id")))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
json.put("NormalStockAge", collect4.isEmpty() ? "0" : NumberUtil.round(collect4.get(0).getString("num"),2)+"");
|
||||||
|
|
||||||
|
Arrayobject1.add(json);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 计算全部
|
||||||
|
JSONObject allIvt = new JSONObject();
|
||||||
|
allIvt.put("local", "全部");
|
||||||
|
allIvt.put("TotalInventory", NumberUtil.round(allIvtList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2)+"");
|
||||||
|
allIvt.put("OverdueInventory", NumberUtil.round(sidIvtList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2)+"");
|
||||||
|
allIvt.put("InterimInventory", NumberUtil.round(faceIvtList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2)+"");
|
||||||
|
allIvt.put("NormalStockAge", NumberUtil.round(regIvtList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2)+"");
|
||||||
|
Arrayobject1.add(allIvt);
|
||||||
|
|
||||||
|
result.put("Arrayobject1",Arrayobject1);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 各客户库存 :
|
||||||
|
* 1.表头
|
||||||
|
* {
|
||||||
|
* B库存:10000708 蕉城时代,10000698 江苏时代,10000779 四川时代,10000561 宁德时代
|
||||||
|
* C库存:10000426 比亚迪,2010 海亮股份
|
||||||
|
* Other库存: 除B、C客户的其他客户
|
||||||
|
* }
|
||||||
|
* 2.数据
|
||||||
|
*/
|
||||||
|
// 1.表头:
|
||||||
|
JSONArray Customernventory = new JSONArray();
|
||||||
|
|
||||||
|
JSONObject custHand = new JSONObject();
|
||||||
|
custHand.put("Customer1", "B库存");
|
||||||
|
custHand.put("Customer2", "C库存");
|
||||||
|
custHand.put("Customer3", "Other库存");
|
||||||
|
Customernventory.add(custHand);
|
||||||
|
result.put("Customernventory",Customernventory);
|
||||||
|
|
||||||
|
// 2.数据
|
||||||
|
JSONArray Arrayobject2 = new JSONArray();
|
||||||
|
|
||||||
|
// B库存集合
|
||||||
|
List<JSONObject> custIvtBList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "5")
|
||||||
|
.addParam("customer_name", "('10000708','10000698','10000779','10000561')")
|
||||||
|
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||||
|
|
||||||
|
// C库存集合
|
||||||
|
List<JSONObject> custIvtCList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "5")
|
||||||
|
.addParam("customer_name", "('10000426','2010')")
|
||||||
|
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||||
|
|
||||||
|
// 其他库存集合
|
||||||
|
List<JSONObject> custIvtOtherList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "6")
|
||||||
|
.addParam("customer_name", "('10000426','2010','10000708','10000698','10000779','10000561')")
|
||||||
|
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||||
|
|
||||||
|
for (int i = 0; i < storArr.size(); i++) {
|
||||||
|
JSONObject item = storArr.getJSONObject(i);
|
||||||
|
|
||||||
|
JSONObject json = new JSONObject();
|
||||||
|
json.put("Local", item.getString("stor_name"));
|
||||||
|
|
||||||
|
// B库存
|
||||||
|
List<JSONObject> collectB = custIvtBList.stream()
|
||||||
|
.filter(row -> row.getString("stor_id").equals(item.getString("stor_id")))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
json.put("Customernventory1", collectB.isEmpty() ? "0" : NumberUtil.round(collectB.get(0).getString("num"), 2)+"");
|
||||||
|
|
||||||
|
// C库存
|
||||||
|
List<JSONObject> collectC = custIvtCList.stream()
|
||||||
|
.filter(row -> row.getString("stor_id").equals(item.getString("stor_id")))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
json.put("Customernventory2", collectC.isEmpty() ? "0" : NumberUtil.round(collectC.get(0).getString("num"), 2)+"");
|
||||||
|
|
||||||
|
// 其他库存
|
||||||
|
List<JSONObject> collectOthen = custIvtOtherList.stream()
|
||||||
|
.filter(row -> row.getString("stor_id").equals(item.getString("stor_id")))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
json.put("Customernventory3", collectOthen.isEmpty() ? "0" : NumberUtil.round(collectOthen.get(0).getString("num"), 2)+"");
|
||||||
|
|
||||||
|
Arrayobject2.add(json);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 计算全部
|
||||||
|
JSONObject allCustIvt = new JSONObject();
|
||||||
|
allCustIvt.put("Local", "全部");
|
||||||
|
allCustIvt.put("Customernventory1", NumberUtil.round(custIvtBList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2)+"");
|
||||||
|
allCustIvt.put("Customernventory2", NumberUtil.round(custIvtCList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2)+"");
|
||||||
|
allCustIvt.put("Customernventory3", NumberUtil.round(custIvtOtherList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2)+"");
|
||||||
|
Arrayobject2.add(allCustIvt);
|
||||||
|
|
||||||
|
result.put("Arrayobject2", Arrayobject2);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 库存变化
|
||||||
|
* 1.表头
|
||||||
|
* {
|
||||||
|
* B库存:10000708 蕉城时代,10000698 江苏时代,10000779 四川时代,10000561 宁德时代
|
||||||
|
* C库存:10000426 比亚迪,2010 海亮股份
|
||||||
|
* 汇总: 所有客户
|
||||||
|
* }
|
||||||
|
* 2.数据
|
||||||
|
*/
|
||||||
|
// 1.表头
|
||||||
|
JSONArray Arrayobject3 = new JSONArray();
|
||||||
|
|
||||||
|
JSONObject changeIvt = new JSONObject();
|
||||||
|
changeIvt.put("Customer1", "B客户");
|
||||||
|
changeIvt.put("Customer2", "C客户");
|
||||||
|
changeIvt.put("Customer3", "汇总");
|
||||||
|
Arrayobject3.add(changeIvt);
|
||||||
|
result.put("Arrayobject3", Arrayobject3);
|
||||||
|
|
||||||
|
// 2.数据
|
||||||
|
JSONArray Arrayobject4 = new JSONArray();
|
||||||
|
|
||||||
|
// 所有昨日入库量客户分组集合
|
||||||
|
List<JSONObject> yesterdayInList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "7")
|
||||||
|
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||||
|
|
||||||
|
// 所有昨日出库量客户分组集合
|
||||||
|
List<JSONObject> yesterdayOutList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "8")
|
||||||
|
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||||
|
|
||||||
|
// 所有当月入库量客户分组集合
|
||||||
|
List<JSONObject> monthInList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "9")
|
||||||
|
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||||
|
|
||||||
|
// 所有当月出库量客户分组集合
|
||||||
|
List<JSONObject> monthOutList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "10")
|
||||||
|
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||||
|
|
||||||
|
// ---- 昨日入库量 ----
|
||||||
|
JSONObject yesterdayIn = new JSONObject();
|
||||||
|
yesterdayIn.put("Title", "昨日入库量");
|
||||||
|
|
||||||
|
// B客户
|
||||||
|
List<JSONObject> custBList = yesterdayInList.stream()
|
||||||
|
.filter(row -> custB.contains(row.getString("customer_name")))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
yesterdayIn.put("Customerqty1", NumberUtil.round(custBList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) +"");
|
||||||
|
|
||||||
|
// C客户
|
||||||
|
List<JSONObject> custCList = yesterdayInList.stream()
|
||||||
|
.filter(row -> custC.contains(row.getString("customer_name")))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
yesterdayIn.put("Customerqty2", NumberUtil.round(custCList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2)+"");
|
||||||
|
|
||||||
|
// 汇总
|
||||||
|
yesterdayIn.put("Customerqty3", NumberUtil.round(yesterdayInList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2)+"");
|
||||||
|
Arrayobject4.add(yesterdayIn);
|
||||||
|
|
||||||
|
// ---- 昨日出库量 ----
|
||||||
|
JSONObject yesterdayOut = new JSONObject();
|
||||||
|
yesterdayOut.put("Title", "昨日出库量");
|
||||||
|
|
||||||
|
// B客户
|
||||||
|
List<JSONObject> custBList2 = yesterdayOutList.stream()
|
||||||
|
.filter(row -> custB.contains(row.getString("customer_name")))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
yesterdayOut.put("Customerqty1", NumberUtil.round(custBList2.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2)+"");
|
||||||
|
|
||||||
|
// C客户
|
||||||
|
List<JSONObject> custCList2 = yesterdayOutList.stream()
|
||||||
|
.filter(row -> custC.contains(row.getString("customer_name")))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
yesterdayOut.put("Customerqty2", NumberUtil.round(custCList2.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2)+"");
|
||||||
|
|
||||||
|
// 汇总
|
||||||
|
yesterdayOut.put("Customerqty3", NumberUtil.round(yesterdayOutList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2)+"");
|
||||||
|
Arrayobject4.add(yesterdayOut);
|
||||||
|
|
||||||
|
// ---- 当月入库量 ----
|
||||||
|
JSONObject monthdayIn = new JSONObject();
|
||||||
|
monthdayIn.put("Title", "当月入库量");
|
||||||
|
|
||||||
|
// B客户
|
||||||
|
List<JSONObject> custBList3 = monthInList.stream()
|
||||||
|
.filter(row -> custB.contains(row.getString("customer_name")))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
monthdayIn.put("Customerqty1", NumberUtil.round(custBList3.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2)+"");
|
||||||
|
|
||||||
|
// C客户
|
||||||
|
List<JSONObject> custCList3 = monthInList.stream()
|
||||||
|
.filter(row -> custC.contains(row.getString("customer_name")))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
monthdayIn.put("Customerqty2", NumberUtil.round(custCList3.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2)+"");
|
||||||
|
|
||||||
|
// 汇总
|
||||||
|
monthdayIn.put("Customerqty3", NumberUtil.round(monthInList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2)+"");
|
||||||
|
Arrayobject4.add(monthdayIn);
|
||||||
|
|
||||||
|
// ---- 当月出库量 ----
|
||||||
|
JSONObject monthdayOut = new JSONObject();
|
||||||
|
monthdayOut.put("Title", "当月出库量");
|
||||||
|
|
||||||
|
// B客户
|
||||||
|
List<JSONObject> custBList4 = monthOutList.stream()
|
||||||
|
.filter(row -> custB.contains(row.getString("customer_name")))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
monthdayOut.put("Customerqty1", NumberUtil.round(custBList4.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2)+"");
|
||||||
|
|
||||||
|
// C客户
|
||||||
|
List<JSONObject> custCList4 = monthOutList.stream()
|
||||||
|
.filter(row -> custC.contains(row.getString("customer_name")))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
monthdayOut.put("Customerqty2", NumberUtil.round(custCList4.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2)+"");
|
||||||
|
|
||||||
|
// 汇总
|
||||||
|
monthdayOut.put("Customerqty3",NumberUtil.round( monthOutList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2)+"");
|
||||||
|
Arrayobject4.add(monthdayOut);
|
||||||
|
|
||||||
|
result.put("Arrayobject4",Arrayobject4);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 各区域库存变化
|
||||||
|
* 数据
|
||||||
|
* {
|
||||||
|
* B库存:10000708 蕉城时代,10000698 江苏时代,10000779 四川时代,10000561 宁德时代
|
||||||
|
* C库存:10000426 比亚迪,2010 海亮股份
|
||||||
|
* }
|
||||||
|
* {
|
||||||
|
* region_code: A1,A2,A3,A4
|
||||||
|
* }
|
||||||
|
*/
|
||||||
|
JSONArray Arrayobject5 = new JSONArray();
|
||||||
|
|
||||||
|
// 所有昨日入库量区域分组集合
|
||||||
|
List<JSONObject> yesterdayInRegList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "11")
|
||||||
|
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||||
|
|
||||||
|
// 所有昨日出库量区域分组集合
|
||||||
|
List<JSONObject> yesterdayOutRegList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "12")
|
||||||
|
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||||
|
|
||||||
|
// 所有昨日入库量区域、客户分组集合
|
||||||
|
List<JSONObject> yesterdayCustInRegList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "13")
|
||||||
|
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||||
|
|
||||||
|
// 所有昨日出库量区域、客户分组集合
|
||||||
|
List<JSONObject> yesterdayCustOutRegList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "14")
|
||||||
|
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||||
|
|
||||||
|
// 所有当月入库量区域分组集合
|
||||||
|
List<JSONObject> monthInRegList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "15")
|
||||||
|
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||||
|
|
||||||
|
// 所有当月出库量区域分组集合
|
||||||
|
List<JSONObject> monthOutRegList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "16")
|
||||||
|
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||||
|
|
||||||
|
// 所有当月入库量区域、客户分组集合
|
||||||
|
List<JSONObject> monthCustInRegList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "17")
|
||||||
|
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||||
|
|
||||||
|
// 所有当月出库量区域、客户分组集合
|
||||||
|
List<JSONObject> monthCustOutRegList = WQL.getWO("AUTOQUERYBILLINFO").addParam("flag", "18")
|
||||||
|
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||||
|
|
||||||
|
// ---- 当月入库量 ----
|
||||||
|
JSONObject monthRegIn = monthReg(monthInRegList, "当月入库量");
|
||||||
|
Arrayobject5.add(monthRegIn);
|
||||||
|
|
||||||
|
// ---- 当月出库量 ----
|
||||||
|
JSONObject monthRegOut = monthReg(monthOutRegList, "当月出库量");
|
||||||
|
Arrayobject5.add(monthRegOut);
|
||||||
|
|
||||||
|
// ---- 昨日入库量 ----
|
||||||
|
JSONObject yesterdayInReg = monthReg(yesterdayInRegList, "昨日入库量");
|
||||||
|
Arrayobject5.add(yesterdayInReg);
|
||||||
|
|
||||||
|
// ---- 昨日出库量 ----
|
||||||
|
JSONObject yesterdayOutReg = monthReg(yesterdayOutRegList, "昨日出库量");
|
||||||
|
Arrayobject5.add(yesterdayOutReg);
|
||||||
|
|
||||||
|
// ---- B昨日出库量 ----
|
||||||
|
JSONObject yesterdayCustOutRegB = monthRegCust(yesterdayCustOutRegList, "B昨日出库量", custB);
|
||||||
|
Arrayobject5.add(yesterdayCustOutRegB);
|
||||||
|
|
||||||
|
// ---- B昨日入库量 ----
|
||||||
|
JSONObject yesterdayCustInRegB = monthRegCust(yesterdayCustInRegList, "B昨日入库量", custB);
|
||||||
|
Arrayobject5.add(yesterdayCustInRegB);
|
||||||
|
|
||||||
|
// ---- B当月入库量 ----
|
||||||
|
JSONObject monthCustInRegB = monthRegCust(monthCustInRegList, "B当月入库量", custB);
|
||||||
|
Arrayobject5.add(monthCustInRegB);
|
||||||
|
|
||||||
|
// ---- B当月出库量 ----
|
||||||
|
JSONObject monthCustOutRegB = monthRegCust(monthCustOutRegList, "B当月出库量", custB);
|
||||||
|
Arrayobject5.add(monthCustOutRegB);
|
||||||
|
|
||||||
|
// ---- C昨日出库量 ----
|
||||||
|
JSONObject yesterdayCustOutRegC = monthRegCust(yesterdayCustOutRegList, "C昨日出库量", custC);
|
||||||
|
Arrayobject5.add(yesterdayCustOutRegC);
|
||||||
|
|
||||||
|
// ---- C昨日入库量 ----
|
||||||
|
JSONObject yesterdayCustInRegC = monthRegCust(yesterdayCustInRegList, "C昨日入库量", custC);
|
||||||
|
Arrayobject5.add(yesterdayCustInRegC);
|
||||||
|
|
||||||
|
// ---- C当月入库量 ----
|
||||||
|
JSONObject monthCustInRegC = monthRegCust(monthCustInRegList, "C当月入库量", custC);
|
||||||
|
Arrayobject5.add(monthCustInRegC);
|
||||||
|
|
||||||
|
// ---- C当月出库量 ----
|
||||||
|
JSONObject monthCustOutRegC = monthRegCust(monthCustOutRegList, "C当月出库量", custC);
|
||||||
|
Arrayobject5.add(monthCustOutRegC);
|
||||||
|
|
||||||
|
result.put("Arrayobject5", Arrayobject5);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当月区域公共方法
|
||||||
|
* @param param 、
|
||||||
|
* @param title 、
|
||||||
|
* @return JSONObject
|
||||||
|
*/
|
||||||
|
private JSONObject monthReg(List<JSONObject> param, String title) {
|
||||||
|
|
||||||
|
JSONObject result = new JSONObject();
|
||||||
|
result.put("Title", title);
|
||||||
|
|
||||||
|
Map<String, List<JSONObject>> paramMap = param.stream()
|
||||||
|
.collect(Collectors.groupingBy(row -> row.getString("region_code")));
|
||||||
|
|
||||||
|
if (paramMap.isEmpty()) {
|
||||||
|
result.put("Areaqty1","0");
|
||||||
|
result.put("Areaqty2","0");
|
||||||
|
result.put("Areaqty3","0");
|
||||||
|
result.put("Areaqty4","0");
|
||||||
|
}
|
||||||
|
|
||||||
|
for (String region_code : paramMap.keySet()) {
|
||||||
|
List<JSONObject> list = paramMap.get(region_code);
|
||||||
|
|
||||||
|
String num = NumberUtil.round(list.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + "";
|
||||||
|
|
||||||
|
switch (region_code) {
|
||||||
|
case "A1": result.put("Areaqty1", num); break;
|
||||||
|
case "A2": result.put("Areaqty2", num); break;
|
||||||
|
case "A3": result.put("Areaqty3", num); break;
|
||||||
|
case "A4": result.put("Areaqty4", num); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ObjectUtil.isEmpty(result.getString("Areaqty1"))) result.put("Areaqty1","0");
|
||||||
|
if (ObjectUtil.isEmpty(result.getString("Areaqty2"))) result.put("Areaqty2","0");
|
||||||
|
if (ObjectUtil.isEmpty(result.getString("Areaqty3"))) result.put("Areaqty3","0");
|
||||||
|
if (ObjectUtil.isEmpty(result.getString("Areaqty4"))) result.put("Areaqty4","0");
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当月区域、客户公共方法
|
||||||
|
* @param param 、
|
||||||
|
* @param title 、
|
||||||
|
* @param customer 客户 、
|
||||||
|
* @return JSONObject
|
||||||
|
*/
|
||||||
|
private JSONObject monthRegCust(List<JSONObject> param, String title, String customer) {
|
||||||
|
|
||||||
|
JSONObject result = new JSONObject();
|
||||||
|
result.put("Title", title);
|
||||||
|
|
||||||
|
Map<String, List<JSONObject>> paramMap = param.stream()
|
||||||
|
.collect(Collectors.groupingBy(row -> row.getString("region_code")));
|
||||||
|
|
||||||
|
if (paramMap.isEmpty()) {
|
||||||
|
result.put("Areaqty1","0");
|
||||||
|
result.put("Areaqty2","0");
|
||||||
|
result.put("Areaqty3","0");
|
||||||
|
result.put("Areaqty4","0");
|
||||||
|
}
|
||||||
|
|
||||||
|
for (String region_code : paramMap.keySet()) {
|
||||||
|
List<JSONObject> list = paramMap.get(region_code);
|
||||||
|
|
||||||
|
List<JSONObject> custList = list.stream()
|
||||||
|
.filter(row -> customer.contains(row.getString("customer_name")))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
String num = NumberUtil.round(custList.stream().map(row -> row.getDoubleValue("num")).reduce(Double::sum).orElse(0.0).toString(), 2) + "";
|
||||||
|
|
||||||
|
|
||||||
|
switch (region_code) {
|
||||||
|
case "A1": result.put("Areaqty1", num); break;
|
||||||
|
case "A2": result.put("Areaqty2", num); break;
|
||||||
|
case "A3": result.put("Areaqty3", num); break;
|
||||||
|
case "A4": result.put("Areaqty4", num); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ObjectUtil.isEmpty(result.getString("Areaqty1"))) result.put("Areaqty1","0");
|
||||||
|
if (ObjectUtil.isEmpty(result.getString("Areaqty2"))) result.put("Areaqty2","0");
|
||||||
|
if (ObjectUtil.isEmpty(result.getString("Areaqty3"))) result.put("Areaqty3","0");
|
||||||
|
if (ObjectUtil.isEmpty(result.getString("Areaqty4"))) result.put("Areaqty4","0");
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -76,4 +76,12 @@ public class ProductScrapController {
|
|||||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/onSubmit")
|
||||||
|
@Log("提交")
|
||||||
|
@ApiOperation("提交")
|
||||||
|
public ResponseEntity<Object> onSubmit(@RequestBody JSONObject whereJson) {
|
||||||
|
productScrapService.onSubmit(whereJson);
|
||||||
|
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,4 +49,10 @@ public interface ProductScrapService {
|
|||||||
* @param whereJson /
|
* @param whereJson /
|
||||||
*/
|
*/
|
||||||
void auditOut(JSONObject whereJson);
|
void auditOut(JSONObject whereJson);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 提交
|
||||||
|
* @param whereJson /
|
||||||
|
*/
|
||||||
|
void onSubmit(JSONObject whereJson);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,10 +16,15 @@ import org.nl.modules.common.exception.BadRequestException;
|
|||||||
import org.nl.modules.system.util.CodeUtil;
|
import org.nl.modules.system.util.CodeUtil;
|
||||||
import org.nl.modules.wql.WQL;
|
import org.nl.modules.wql.WQL;
|
||||||
import org.nl.modules.wql.core.bean.WQLObject;
|
import org.nl.modules.wql.core.bean.WQLObject;
|
||||||
|
import org.nl.modules.wql.util.SpringContextHolder;
|
||||||
import org.nl.modules.wql.util.WqlUtil;
|
import org.nl.modules.wql.util.WqlUtil;
|
||||||
|
import org.nl.system.service.user.ISysUserService;
|
||||||
|
import org.nl.system.service.user.dao.SysUser;
|
||||||
import org.nl.wms.basedata.st.service.impl.UserStorServiceImpl;
|
import org.nl.wms.basedata.st.service.impl.UserStorServiceImpl;
|
||||||
|
import org.nl.wms.ext.mes.service.impl.LmsToMesServiceImpl;
|
||||||
import org.nl.wms.st.inbill.service.CheckOutBillService;
|
import org.nl.wms.st.inbill.service.CheckOutBillService;
|
||||||
import org.nl.wms.st.instor.service.ProductScrapService;
|
import org.nl.wms.st.instor.service.ProductScrapService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@@ -38,6 +43,9 @@ import java.util.stream.Collectors;
|
|||||||
public class ProductScrapServiceImpl implements ProductScrapService {
|
public class ProductScrapServiceImpl implements ProductScrapService {
|
||||||
private final CheckOutBillService checkOutBillService;
|
private final CheckOutBillService checkOutBillService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ISysUserService iSysUserService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, Object> pageQuery(Map whereJson, Pageable page) {
|
public Map<String, Object> pageQuery(Map whereJson, Pageable page) {
|
||||||
HashMap<String, String> map = new HashMap<>(whereJson);
|
HashMap<String, String> map = new HashMap<>(whereJson);
|
||||||
@@ -284,4 +292,150 @@ public class ProductScrapServiceImpl implements ProductScrapService {
|
|||||||
mst.update(param,"scrap_id = '"+whereJson.getString("scrap_id")+"'");
|
mst.update(param,"scrap_id = '"+whereJson.getString("scrap_id")+"'");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void onSubmit(JSONObject whereJson) {
|
||||||
|
WQLObject mst = WQLObject.getWQLObject("ST_IVT_ProductScrapMst");
|
||||||
|
WQLObject dtl = WQLObject.getWQLObject("st_ivt_productscrapdtl");
|
||||||
|
WQLObject sub = WQLObject.getWQLObject("pdm_bi_subpackagerelation");
|
||||||
|
|
||||||
|
List<JSONObject> dtlList = dtl.query("scrap_id = '" + whereJson.getString("scrap_id") + "'").getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||||
|
|
||||||
|
String package_box_in = dtlList.stream()
|
||||||
|
.map(row -> row.getString("package_box_sn"))
|
||||||
|
.distinct()
|
||||||
|
.collect(Collectors.joining("','"));
|
||||||
|
|
||||||
|
// 子卷包装集合
|
||||||
|
List<JSONObject> boxList = sub.query("package_box_sn in ('" + package_box_in + "')").getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||||
|
|
||||||
|
// 组织数据
|
||||||
|
JSONObject param = new JSONObject(); // 主体
|
||||||
|
param.put("approval_code", "E41632DA-E7BF-4230-B818-760FBFA0EB72"); // 固定值
|
||||||
|
param.put("system", "LMS"); // 固定值
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 当前操作人员
|
||||||
|
*/
|
||||||
|
JSONArray userList = new JSONArray();
|
||||||
|
JSONObject userJson = new JSONObject();
|
||||||
|
|
||||||
|
SysUser userDao = iSysUserService.getById(SecurityUtils.getCurrentUserId());
|
||||||
|
userJson.put("User", userDao.getUsername()); // 当前操作人员code
|
||||||
|
userList.add(userJson);
|
||||||
|
|
||||||
|
param.put("UserList", userList);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* form
|
||||||
|
*/
|
||||||
|
JSONArray formList = new JSONArray();
|
||||||
|
|
||||||
|
// 报废日期: 年月日时分
|
||||||
|
JSONObject jsonDate = new JSONObject();
|
||||||
|
jsonDate.put("id", "widget16989785636210001"); // 固定值
|
||||||
|
jsonDate.put("type", "input"); // 固定值
|
||||||
|
jsonDate.put("value", DateUtil.now().substring(0, 16));
|
||||||
|
formList.add(jsonDate);
|
||||||
|
|
||||||
|
// 报废明细
|
||||||
|
JSONObject jsonDtl = new JSONObject();
|
||||||
|
jsonDtl.put("id", "widget16989759925050001"); // 固定值
|
||||||
|
jsonDtl.put("type", "fieldList"); // 固定值
|
||||||
|
|
||||||
|
JSONArray valueArr = new JSONArray();
|
||||||
|
|
||||||
|
for (int i = 0; i < dtlList.size(); i++) {
|
||||||
|
JSONObject json = dtlList.get(i);
|
||||||
|
JSONArray dtlAtt = new JSONArray();
|
||||||
|
|
||||||
|
JSONObject jsonBox = boxList.stream()
|
||||||
|
.filter(row -> row.getString("container_name").equals(json.getString("pcsn")))
|
||||||
|
.collect(Collectors.toList()).get(0);
|
||||||
|
|
||||||
|
if (ObjectUtil.isEmpty(jsonBox)) throw new BadRequestException("子卷"+json.getString("pcsn")+"不存在,请检查!");
|
||||||
|
|
||||||
|
// 产品名称
|
||||||
|
JSONObject jsonName = new JSONObject();
|
||||||
|
jsonName.put("id","widget16989761117830001");// 固定值
|
||||||
|
jsonName.put("type","input");// 固定值
|
||||||
|
jsonName.put("value",jsonBox.getString("product_description"));
|
||||||
|
dtlAtt.add(jsonName);
|
||||||
|
|
||||||
|
// 产品规格
|
||||||
|
JSONObject jsonThick = new JSONObject();
|
||||||
|
jsonThick.put("id", "widget16989764299770001");// 固定值
|
||||||
|
jsonThick.put("type", "input");// 固定值
|
||||||
|
jsonThick.put("value", jsonBox.getString("thickness"));
|
||||||
|
dtlAtt.add(jsonThick);
|
||||||
|
|
||||||
|
// 不合格品批次号
|
||||||
|
JSONObject jsonOut = new JSONObject();
|
||||||
|
jsonOut.put("id","widget16989764601080001");// 固定值
|
||||||
|
jsonOut.put("type","input");// 固定值
|
||||||
|
jsonOut.put("value",jsonBox.getString("container_name"));
|
||||||
|
dtlAtt.add(jsonOut);
|
||||||
|
|
||||||
|
// 不合格品重量
|
||||||
|
JSONObject jsonWeight = new JSONObject();
|
||||||
|
jsonWeight.put("id", "widget16989773376540001");
|
||||||
|
jsonWeight.put("type", "number");
|
||||||
|
jsonWeight.put("value", json.getDoubleValue("qty"));
|
||||||
|
dtlAtt.add(jsonWeight);
|
||||||
|
|
||||||
|
// 不合格品缺陷描述
|
||||||
|
JSONObject jsonRemark = new JSONObject();
|
||||||
|
jsonRemark.put("id", "widget16989773089460001");// 固定值
|
||||||
|
jsonRemark.put("type", "input");// 固定值
|
||||||
|
jsonRemark.put("value", json.getString("remark"));
|
||||||
|
dtlAtt.add(jsonRemark);
|
||||||
|
|
||||||
|
// 不合格品来源
|
||||||
|
JSONObject jsonSource = new JSONObject();
|
||||||
|
jsonSource.put("id", "widget16989785808620001");
|
||||||
|
jsonSource.put("type", "radioV2");
|
||||||
|
|
||||||
|
switch (json.getString("fail_source")) {
|
||||||
|
case "1" :
|
||||||
|
jsonSource.put("value", "lohzzb0f-dxucmbtkt5j-0");
|
||||||
|
break;
|
||||||
|
case "2" :
|
||||||
|
jsonSource.put("value", "lohzzb0f-728pkzd3t0b-0");
|
||||||
|
break;
|
||||||
|
case "3" :
|
||||||
|
jsonSource.put("value", "lohzzb0f-2d3n1nt9t5x-0");
|
||||||
|
break;
|
||||||
|
case "4" :
|
||||||
|
jsonSource.put("value", "lohzzmz1-ai6w4202ynw-1");
|
||||||
|
break;
|
||||||
|
case "5" :
|
||||||
|
jsonSource.put("value", "lohzzmz1-2d02yqh91t1-3");
|
||||||
|
break;
|
||||||
|
case "6" :
|
||||||
|
jsonSource.put("value", "lohzzmz1-d0j15ri1jyg-5");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
dtlAtt.add(jsonSource);
|
||||||
|
|
||||||
|
valueArr.add(dtlAtt);
|
||||||
|
}
|
||||||
|
|
||||||
|
jsonDtl.put("value", valueArr);
|
||||||
|
formList.add(jsonDtl);
|
||||||
|
|
||||||
|
param.put("form", formList);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 调用mes接口,更新单据
|
||||||
|
*/
|
||||||
|
LmsToMesServiceImpl bean = SpringContextHolder.getBean(LmsToMesServiceImpl.class);
|
||||||
|
JSONObject result = bean.scrapAudit(param);
|
||||||
|
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
jsonObject.put("ext_code", result.getString("RTDAT"));
|
||||||
|
jsonObject.put("bill_status", "20");
|
||||||
|
mst.update(jsonObject,"scrap_id = '"+whereJson.getString("scrap_id")+"'");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,11 +4,11 @@
|
|||||||
.filter-item {
|
.filter-item {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
margin: 0 3px 10px 0;
|
margin: 0 3px 3px 0;
|
||||||
|
|
||||||
input {
|
input {
|
||||||
height: 30.5px;
|
height: 28px;
|
||||||
line-height: 30.5px;
|
line-height: 28px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
color: #606266;
|
color: #606266;
|
||||||
line-height: 30.5px;
|
line-height: 28px;
|
||||||
padding: 0 7px 0 7px;
|
padding: 0 7px 0 7px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.el-select__caret.el-input__icon.el-icon-arrow-up {
|
.el-select__caret.el-input__icon.el-icon-arrow-up {
|
||||||
line-height: 30.5px;
|
line-height: 28px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.date-item {
|
.date-item {
|
||||||
@@ -149,7 +149,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.el-form-item--mini.el-form-item {
|
.el-form-item--mini.el-form-item {
|
||||||
margin-bottom: 10px !important;
|
margin-bottom: 8px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
//去除编辑文本框为数字时的上下箭头start
|
//去除编辑文本框为数字时的上下箭头start
|
||||||
|
|||||||
@@ -88,6 +88,7 @@
|
|||||||
clearable
|
clearable
|
||||||
size="mini"
|
size="mini"
|
||||||
placeholder="全部"
|
placeholder="全部"
|
||||||
|
style="width: 200px;"
|
||||||
class="filter-item"
|
class="filter-item"
|
||||||
@change="crud.toQuery"
|
@change="crud.toQuery"
|
||||||
>
|
>
|
||||||
@@ -117,13 +118,14 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="是否虚拟库">
|
<el-form-item label="是否虚拟">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="query.is_virtual"
|
v-model="query.is_virtual"
|
||||||
clearable
|
clearable
|
||||||
size="mini"
|
size="mini"
|
||||||
placeholder="请选择"
|
placeholder="请选择"
|
||||||
class="filter-item"
|
class="filter-item"
|
||||||
|
style="width: 200px;"
|
||||||
@change="crud.toQuery"
|
@change="crud.toQuery"
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
@@ -140,6 +142,7 @@
|
|||||||
clearable
|
clearable
|
||||||
multiple
|
multiple
|
||||||
size="mini"
|
size="mini"
|
||||||
|
style="width: 200px;"
|
||||||
placeholder="请选择"
|
placeholder="请选择"
|
||||||
class="filter-item"
|
class="filter-item"
|
||||||
@change="crud.toQuery"
|
@change="crud.toQuery"
|
||||||
|
|||||||
@@ -82,6 +82,7 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>-->
|
</el-form-item>-->
|
||||||
<el-form-item label="物料">
|
<el-form-item label="物料">
|
||||||
|
<label slot="label">物 料:</label>
|
||||||
<el-input
|
<el-input
|
||||||
v-model="query.material_search"
|
v-model="query.material_search"
|
||||||
size="mini"
|
size="mini"
|
||||||
@@ -91,6 +92,7 @@
|
|||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="批次">
|
<el-form-item label="批次">
|
||||||
|
<label slot="label">批 次:</label>
|
||||||
<el-input
|
<el-input
|
||||||
v-model="query.pcsn"
|
v-model="query.pcsn"
|
||||||
size="mini"
|
size="mini"
|
||||||
@@ -100,6 +102,7 @@
|
|||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="SAP批次">
|
<el-form-item label="SAP批次">
|
||||||
|
<label slot="label">SAP批 次:</label>
|
||||||
<el-input
|
<el-input
|
||||||
v-model="query.sap_pcsn"
|
v-model="query.sap_pcsn"
|
||||||
size="mini"
|
size="mini"
|
||||||
@@ -108,6 +111,26 @@
|
|||||||
@keyup.enter.native="crud.toQuery"
|
@keyup.enter.native="crud.toQuery"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="箱号">
|
||||||
|
<label slot="label">箱 号:</label>
|
||||||
|
<el-input
|
||||||
|
v-model="query.box_no"
|
||||||
|
size="mini"
|
||||||
|
clearable
|
||||||
|
placeholder="箱号"
|
||||||
|
@keyup.enter.native="crud.toQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="交货单">
|
||||||
|
<label slot="label">交 货 单:</label>
|
||||||
|
<el-input
|
||||||
|
v-model="query.vbeln"
|
||||||
|
size="mini"
|
||||||
|
clearable
|
||||||
|
placeholder="交货单"
|
||||||
|
@keyup.enter.native="crud.toQuery"
|
||||||
|
/>
|
||||||
|
</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"
|
||||||
@@ -119,24 +142,6 @@
|
|||||||
@change="crud.toQuery"
|
@change="crud.toQuery"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="箱号">
|
|
||||||
<el-input
|
|
||||||
v-model="query.box_no"
|
|
||||||
size="mini"
|
|
||||||
clearable
|
|
||||||
placeholder="箱号"
|
|
||||||
@keyup.enter.native="crud.toQuery"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="交货单">
|
|
||||||
<el-input
|
|
||||||
v-model="query.vbeln"
|
|
||||||
size="mini"
|
|
||||||
clearable
|
|
||||||
placeholder="交货单"
|
|
||||||
@keyup.enter.native="crud.toQuery"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="模糊查询">
|
<el-form-item label="模糊查询">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="query.bill_code"
|
v-model="query.bill_code"
|
||||||
@@ -171,7 +176,7 @@
|
|||||||
<el-button
|
<el-button
|
||||||
slot="right"
|
slot="right"
|
||||||
class="filter-item"
|
class="filter-item"
|
||||||
type="success"
|
type="primary"
|
||||||
icon="el-icon-position"
|
icon="el-icon-position"
|
||||||
size="mini"
|
size="mini"
|
||||||
@click="upload"
|
@click="upload"
|
||||||
@@ -191,7 +196,7 @@
|
|||||||
<el-button
|
<el-button
|
||||||
slot="right"
|
slot="right"
|
||||||
class="filter-item"
|
class="filter-item"
|
||||||
type="success"
|
type="info"
|
||||||
icon="el-icon-position"
|
icon="el-icon-position"
|
||||||
size="mini"
|
size="mini"
|
||||||
@click="uploadSAP"
|
@click="uploadSAP"
|
||||||
@@ -201,7 +206,7 @@
|
|||||||
<el-button
|
<el-button
|
||||||
slot="right"
|
slot="right"
|
||||||
class="filter-item"
|
class="filter-item"
|
||||||
type="success"
|
type="warning"
|
||||||
icon="el-icon-position"
|
icon="el-icon-position"
|
||||||
size="mini"
|
size="mini"
|
||||||
@click="disupload"
|
@click="disupload"
|
||||||
@@ -212,7 +217,7 @@
|
|||||||
slot="right"
|
slot="right"
|
||||||
class="filter-item"
|
class="filter-item"
|
||||||
type="success"
|
type="success"
|
||||||
icon="el-icon-thumb"
|
icon="el-icon-download"
|
||||||
size="mini"
|
size="mini"
|
||||||
:loading="showDtlLoading"
|
:loading="showDtlLoading"
|
||||||
:disabled="crud.selections.length !== 1"
|
:disabled="crud.selections.length !== 1"
|
||||||
|
|||||||
@@ -80,6 +80,19 @@
|
|||||||
</div>
|
</div>
|
||||||
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
|
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
|
||||||
<crudOperation :permission="permission">
|
<crudOperation :permission="permission">
|
||||||
|
<el-button
|
||||||
|
slot="right"
|
||||||
|
class="filter-item"
|
||||||
|
type="warning"
|
||||||
|
:permission="permission"
|
||||||
|
:disabled="work_flag"
|
||||||
|
:loading="loading_button"
|
||||||
|
icon="el-icon-check"
|
||||||
|
size="mini"
|
||||||
|
@click="onSubmit"
|
||||||
|
>
|
||||||
|
提交
|
||||||
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
slot="right"
|
slot="right"
|
||||||
class="filter-item"
|
class="filter-item"
|
||||||
@@ -259,6 +272,16 @@ export default {
|
|||||||
checkboxT(row) {
|
checkboxT(row) {
|
||||||
return row.bill_status !== '99'
|
return row.bill_status !== '99'
|
||||||
},
|
},
|
||||||
|
onSubmit() {
|
||||||
|
this.loading_button = true
|
||||||
|
productscrap.onSubmit(this.currentRow).then(res => {
|
||||||
|
this.crud.toQuery()
|
||||||
|
this.crud.notify('操作成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||||
|
this.loading_button = false
|
||||||
|
}).catch(() => {
|
||||||
|
this.loading_button = false
|
||||||
|
})
|
||||||
|
},
|
||||||
auditPass() {
|
auditPass() {
|
||||||
this.loading_button = true
|
this.loading_button = true
|
||||||
productscrap.auditPass(this.currentRow).then(res => {
|
productscrap.auditPass(this.currentRow).then(res => {
|
||||||
|
|||||||
@@ -52,4 +52,11 @@ export function auditOut(data) {
|
|||||||
data
|
data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
export default { add, edit, del, getOutBillDtl, auditPass, auditOut }
|
export function onSubmit(data) {
|
||||||
|
return request({
|
||||||
|
url: '/api/productscrap/onSubmit',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
export default { add, edit, del, getOutBillDtl, auditPass, auditOut, onSubmit }
|
||||||
|
|||||||
@@ -267,11 +267,30 @@ export default {
|
|||||||
// this.crud.resetQuery(true)
|
// this.crud.resetQuery(true)
|
||||||
},
|
},
|
||||||
moneySubmit() {
|
moneySubmit() {
|
||||||
|
var isTest = this.isTest(this.formMst.order_number)
|
||||||
|
if (isTest) {
|
||||||
|
if (this.formMst.car_type === '') {
|
||||||
|
this.crud.notify('请选择车型!', CRUD.NOTIFICATION_TYPE.INFO)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
checkoutbill.moneySubmit(this.formMst).then(res => {
|
checkoutbill.moneySubmit(this.formMst).then(res => {
|
||||||
this.crud.notify('保存成功!', CRUD.NOTIFICATION_TYPE.INFO)
|
this.crud.notify('保存成功!', CRUD.NOTIFICATION_TYPE.INFO)
|
||||||
this.crud.toQuery()
|
this.crud.toQuery()
|
||||||
this.close()
|
this.close()
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
isTest(val) {
|
||||||
|
// 包含至少一个数字和字母正则
|
||||||
|
const regPost1 = /^(?![^a-zA-Z]+$)(?!\D+$)/g
|
||||||
|
// 包含至少一个汉字正则
|
||||||
|
const regPost2 = /.*[\u4e00-\u9fa5]+.*$/g
|
||||||
|
|
||||||
|
if (regPost1.test(val) && regPost2.test(val)) {
|
||||||
|
return true
|
||||||
|
} else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,18 +28,6 @@
|
|||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="入库日期">
|
|
||||||
<el-date-picker
|
|
||||||
v-model="query.createTime"
|
|
||||||
type="daterange"
|
|
||||||
value-format="yyyy-MM-dd HH:mm:ss"
|
|
||||||
start-placeholder="开始日期"
|
|
||||||
end-placeholder="结束日期"
|
|
||||||
:default-time="['00:00:00', '23:59:59']"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
|
|
||||||
<el-form-item label="业务类型">
|
<el-form-item label="业务类型">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="query.bill_type"
|
v-model="query.bill_type"
|
||||||
@@ -58,6 +46,17 @@
|
|||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="入库日期">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="query.createTime"
|
||||||
|
type="daterange"
|
||||||
|
value-format="yyyy-MM-dd HH:mm:ss"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
:default-time="['00:00:00', '23:59:59']"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="厚度幅宽">
|
<el-form-item label="厚度幅宽">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="query.with"
|
v-model="query.with"
|
||||||
@@ -68,6 +67,7 @@
|
|||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="厚度">
|
<el-form-item label="厚度">
|
||||||
|
<label slot="label">厚 度:</label>
|
||||||
<el-input
|
<el-input
|
||||||
v-model="query.thickness_request"
|
v-model="query.thickness_request"
|
||||||
size="mini"
|
size="mini"
|
||||||
@@ -76,6 +76,7 @@
|
|||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="子卷号">
|
<el-form-item label="子卷号">
|
||||||
|
<label slot="label">子 卷 号:</label>
|
||||||
<el-input
|
<el-input
|
||||||
v-model="query.pcsn"
|
v-model="query.pcsn"
|
||||||
size="mini"
|
size="mini"
|
||||||
@@ -83,7 +84,7 @@
|
|||||||
@keyup.enter.native="crud.toQuery"
|
@keyup.enter.native="crud.toQuery"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label-width="120" label="销售订单及行号">
|
<el-form-item label="订单行号">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="query.sale_order_name"
|
v-model="query.sale_order_name"
|
||||||
size="mini"
|
size="mini"
|
||||||
@@ -107,7 +108,7 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="是否虚拟库">
|
<el-form-item label="是否虚拟">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="query.is_virtual"
|
v-model="query.is_virtual"
|
||||||
clearable
|
clearable
|
||||||
@@ -125,6 +126,7 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="班次">
|
<el-form-item label="班次">
|
||||||
|
<label slot="label">班 次:</label>
|
||||||
<el-select
|
<el-select
|
||||||
v-model="query.classes"
|
v-model="query.classes"
|
||||||
clearable
|
clearable
|
||||||
|
|||||||
@@ -28,19 +28,6 @@
|
|||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="创建时间">
|
|
||||||
<el-date-picker
|
|
||||||
v-model="query.createTime"
|
|
||||||
type="daterange"
|
|
||||||
value-format="yyyy-MM-dd HH:mm:ss"
|
|
||||||
start-placeholder="开始日期"
|
|
||||||
end-placeholder="结束日期"
|
|
||||||
:default-time="['00:00:00', '23:59:59']"
|
|
||||||
@change="crud.toQuery"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
|
|
||||||
<el-form-item label="业务类型">
|
<el-form-item label="业务类型">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="query.bill_types"
|
v-model="query.bill_types"
|
||||||
@@ -58,6 +45,17 @@
|
|||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="创建时间">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="query.createTime"
|
||||||
|
type="daterange"
|
||||||
|
value-format="yyyy-MM-dd HH:mm:ss"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
:default-time="['00:00:00', '23:59:59']"
|
||||||
|
@change="crud.toQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="厚度幅宽">
|
<el-form-item label="厚度幅宽">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="query.with"
|
v-model="query.with"
|
||||||
|
|||||||
@@ -106,19 +106,6 @@
|
|||||||
>
|
>
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</el-form-item>-->
|
</el-form-item>-->
|
||||||
|
|
||||||
<el-form-item label="生产日期">
|
|
||||||
<el-date-picker
|
|
||||||
v-model="query.createTime"
|
|
||||||
type="daterange"
|
|
||||||
value-format="yyyy-MM-dd HH:mm:ss"
|
|
||||||
start-placeholder="开始日期"
|
|
||||||
end-placeholder="结束日期"
|
|
||||||
:default-time="['00:00:00', '23:59:59']"
|
|
||||||
@change="crud.toQuery"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
|
|
||||||
<el-form-item label="入库日期">
|
<el-form-item label="入库日期">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="query.date_of_FG_inbound"
|
v-model="query.date_of_FG_inbound"
|
||||||
@@ -142,6 +129,17 @@
|
|||||||
@keyup.enter.native="crud.toQuery"
|
@keyup.enter.native="crud.toQuery"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="生产日期">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="query.createTime"
|
||||||
|
type="daterange"
|
||||||
|
value-format="yyyy-MM-dd HH:mm:ss"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
:default-time="['00:00:00', '23:59:59']"
|
||||||
|
@change="crud.toQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="客户编码">
|
<el-form-item label="客户编码">
|
||||||
<el-input
|
<el-input
|
||||||
|
|||||||
Reference in New Issue
Block a user