代码合并
This commit is contained in:
@@ -118,7 +118,6 @@ public class TwoSendOutTask extends AbstractAcsTask {
|
||||
}
|
||||
|
||||
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
|
||||
|
||||
// 更改任务状态为完成
|
||||
jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
jsonTask.put("update_optid", SecurityUtils.getCurrentUserId());
|
||||
|
||||
@@ -139,6 +139,7 @@ public class InBussManageServiceImpl implements InBussManageService {
|
||||
"AND height = '" + jsonObject.getString("height") + "'" +
|
||||
"AND sect_id = '" + jsonObject.getString("sect_id") + "' AND block_num = '"+block_num+"'")
|
||||
.getResultJSONArray(0);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -301,7 +301,7 @@ public class OutBussManageServiceImpl implements OutBussManageService {
|
||||
.qty_unit_id(jsonUnit.getLongValue("measure_unit_id"))
|
||||
.qty_unit_name(jsonUnit.getString("unit_name"))
|
||||
.plan_qty(jsonIvt.getBigDecimal("canuse_qty"))
|
||||
.real_qty(jsonIvt.getBigDecimal("real_qty"))
|
||||
.real_qty(jsonIvt.getBigDecimal("canuse_qty"))
|
||||
.work_status(work_status)
|
||||
.box_no(jsonSub.getString("package_box_sn"))
|
||||
.build();
|
||||
|
||||
@@ -422,7 +422,6 @@ public class SendOutManageServiceImpl implements SendOutManageService {
|
||||
|
||||
if (ObjectUtil.isNotEmpty(isBlock2)) {
|
||||
continue;
|
||||
|
||||
} else {
|
||||
JSONObject jsonNewRow = JSONObject.parseObject(JSON.toJSONString(json));
|
||||
point_code4 = jsonNewRow.getString("point_code");
|
||||
@@ -453,7 +452,6 @@ public class SendOutManageServiceImpl implements SendOutManageService {
|
||||
taskJson.put("point_code2", point_code4);
|
||||
taskJson.put("point_code4", "");
|
||||
taskTab.update(taskJson);
|
||||
|
||||
// 返回点位
|
||||
return point_code4;
|
||||
|
||||
|
||||
@@ -689,6 +689,180 @@ public class StructattrServiceImpl implements StructattrService {
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void oneCreate(JSONObject whereJson) {
|
||||
// 仓位表
|
||||
WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr");
|
||||
// 库区表
|
||||
WQLObject sectTab = WQLObject.getWQLObject("st_ivt_sectattr");
|
||||
// 点位表
|
||||
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
|
||||
// 仓库表
|
||||
WQLObject storTab = WQLObject.getWQLObject("st_ivt_bsrealstorattr");
|
||||
|
||||
// 判断库区是否是虚拟区
|
||||
JSONObject jsonSect = sectTab.query("sect_id = '" + whereJson.getString("sect_id") + "'").uniqueResult(0);
|
||||
|
||||
if (!jsonSect.getString("sect_type_attr").equals("09")) {
|
||||
throw new BadRequestException("所选库区必须是虚拟区!");
|
||||
}
|
||||
|
||||
/*
|
||||
* 判断此库区是否已经生成仓位
|
||||
*/
|
||||
JSONObject jsonAttr = attrTab.query("sect_id = '" + whereJson.getString("sect_id") + "' order by struct_code DESC").uniqueResult(0);
|
||||
|
||||
// 生成数量
|
||||
int createNum = whereJson.getIntValue("num");
|
||||
// 开始生成数
|
||||
int createNum_start = 1;
|
||||
|
||||
// 前缀
|
||||
String prefix = "";
|
||||
|
||||
if (ObjectUtil.isNotEmpty(jsonAttr)) {
|
||||
String struct_code = jsonAttr.getString("struct_code");
|
||||
|
||||
// 第一个-的位置
|
||||
int firstIndex = struct_code.indexOf("-");
|
||||
// 第二个-的位置
|
||||
int secondIndex = struct_code.substring(firstIndex + 1).indexOf("-") + firstIndex;
|
||||
// 最大的仓位数
|
||||
String result = struct_code.substring(firstIndex + 1, secondIndex +1);
|
||||
|
||||
createNum += Integer.parseInt(result);
|
||||
|
||||
createNum_start += Integer.parseInt(result);
|
||||
|
||||
prefix = struct_code.substring(0, firstIndex);
|
||||
} else {
|
||||
// 截取第一个 - 之前的数据集合
|
||||
|
||||
List<JSONObject> attrList = WQL.getWO("QST_STRUCT_ATTR").addParam("flag", "2").process()
|
||||
.getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||
|
||||
List<String> subStringList = attrList.stream()
|
||||
.filter(row -> row.getString("struct_code").contains("-"))
|
||||
.map(row -> row.getString("struct_code").substring(0, row.getString("struct_code").indexOf("-")))
|
||||
.distinct()
|
||||
.sorted()
|
||||
.filter(row -> row.matches("-?\\d+(\\.\\d+)?"))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
prefix = String.valueOf(Integer.parseInt(subStringList.get(subStringList.size() - 1)) + 1);
|
||||
}
|
||||
|
||||
/*
|
||||
* 生成货位
|
||||
*/
|
||||
String now = DateUtil.now();
|
||||
for (int i = createNum_start; i <= createNum; i++) {
|
||||
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("struct_id", IdUtil.getSnowflake(1,1).nextId());
|
||||
|
||||
if (i < 10) {
|
||||
json.put("struct_code", prefix + "-"+"000"+i+"-01");
|
||||
json.put("struct_name", prefix + "排-"+"000"+i+"列-01层");
|
||||
|
||||
}else if (i >= 10 && i < 100) {
|
||||
json.put("struct_code", prefix + "-"+"00"+i+"-01");
|
||||
json.put("struct_name", prefix + "排-"+"00"+i+"列-01层");
|
||||
}else if (i >= 100 && i < 1000) {
|
||||
json.put("struct_code", prefix + "-"+"0"+i+"-01");
|
||||
json.put("struct_name", prefix + "排-"+"0"+i+"列-01层");
|
||||
} else {
|
||||
json.put("struct_code", prefix + "-"+i+"-01");
|
||||
json.put("struct_name", prefix + "排-"+i+"列-01层");
|
||||
}
|
||||
JSONObject jsonObject = storTab.query("stor_id = '"+whereJson.getString("stor_id")+"'").uniqueResult(0);
|
||||
JSONObject jsonObjec2 = sectTab.query("stor_id = '"+whereJson.getString("stor_id")+"' and sect_id = '"+whereJson.getString("sect_id")+"'").uniqueResult(0);
|
||||
|
||||
// 新增仓位
|
||||
json.put("simple_name", json.getString("struct_name"));
|
||||
json.put("sect_id", jsonObjec2.getString("sect_id"));
|
||||
json.put("sect_code", jsonObjec2.getString("sect_code"));
|
||||
json.put("sect_name", jsonObjec2.getString("sect_name"));
|
||||
json.put("stor_id", jsonObject.getString("stor_id"));
|
||||
json.put("stor_code", jsonObject.getString("stor_code"));
|
||||
json.put("stor_name", jsonObject.getString("stor_name"));
|
||||
json.put("lock_type", "1");
|
||||
json.put("row_num", 1);
|
||||
json.put("col_num", i);
|
||||
json.put("layer_num", 1);
|
||||
json.put("block_num", 1);
|
||||
json.put("in_order_seq", i);
|
||||
json.put("out_order_seq", i);
|
||||
json.put("in_empty_seq", i);
|
||||
json.put("out_empty_seq", i);
|
||||
json.put("create_id", "1");
|
||||
json.put("create_name", "管理员");
|
||||
json.put("create_time", now);
|
||||
json.put("material_height_type", 1);
|
||||
attrTab.insert(json);
|
||||
|
||||
// 新增点位
|
||||
JSONObject jsonPoint = new JSONObject();
|
||||
jsonPoint.put("point_id",IdUtil.getSnowflake(1,1).nextId());
|
||||
jsonPoint.put("point_code", json.getString("struct_code"));
|
||||
jsonPoint.put("point_name", json.getString("struct_name"));
|
||||
jsonPoint.put("region_id", json.getString("sect_id"));
|
||||
jsonPoint.put("region_code", json.getString("sect_code"));
|
||||
jsonPoint.put("region_name", json.getString("sect_name"));
|
||||
jsonPoint.put("point_type", "2");
|
||||
jsonPoint.put("point_status", "1");
|
||||
jsonPoint.put("lock_type", "1");
|
||||
jsonPoint.put("vehicle_max_qty", 0);
|
||||
jsonPoint.put("vehicle_qty", 0);
|
||||
jsonPoint.put("block_num", 1);
|
||||
jsonPoint.put("row_num", 1);
|
||||
jsonPoint.put("col_num", 1);
|
||||
jsonPoint.put("layer_num", 1);
|
||||
jsonPoint.put("in_order_seq", 0);
|
||||
jsonPoint.put("out_order_seq", 0);
|
||||
jsonPoint.put("in_empty_seq", 0);
|
||||
jsonPoint.put("out_empty_seq", 0);
|
||||
jsonPoint.put("is_have_workder", "0");
|
||||
jsonPoint.put("is_used", "1");
|
||||
jsonPoint.put("source_id", json.get("struct_id"));
|
||||
jsonPoint.put("is_delete", "0");
|
||||
jsonPoint.put("create_id", "1");
|
||||
jsonPoint.put("create_name", "管理员");
|
||||
jsonPoint.put("create_time", now);
|
||||
pointTab.insert(jsonPoint);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void blurQuery(JSONObject whereJson) {
|
||||
// 仓位表
|
||||
WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr");
|
||||
|
||||
/*
|
||||
* 判断前缀是否存在
|
||||
*/
|
||||
List<JSONObject> attrList = WQL.getWO("QST_STRUCT_ATTR").addParam("flag", "2").process()
|
||||
.getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||
|
||||
// 截取第一个 - 之前的数据集合
|
||||
List<String> subStringList = attrList.stream()
|
||||
.filter(row -> row.getString("struct_code").contains("-"))
|
||||
.map(row -> row.getString("struct_code").substring(0, row.getString("struct_code").indexOf("-")))
|
||||
.distinct()
|
||||
.sorted()
|
||||
.filter(row -> row.matches("-?\\d+(\\.\\d+)?"))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 判断是否有相同的前缀
|
||||
boolean is_like = subStringList.stream()
|
||||
.anyMatch(row -> row.equals(whereJson.getString("prefix")));
|
||||
|
||||
if (is_like) {
|
||||
throw new BadRequestException("此前缀已存在,请更换!");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tunConfirm(JSONObject json) {
|
||||
WQLObject tab = WQLObject.getWQLObject("st_ivt_structattr");
|
||||
|
||||
|
||||
@@ -296,7 +296,7 @@ public class StructivtServiceImpl implements StructivtService {
|
||||
mp.put("客户名称", json.getString("customer_description"));
|
||||
mp.put("销售订单", json.getString("sale_order_name"));
|
||||
mp.put("业务员", json.getString("sales_owner"));
|
||||
mp.put("入库日期", json.getString("instorage_time"));
|
||||
mp.put("入库日期", json.getString("confirm_time"));
|
||||
mp.put("生产日期", json.getString("date_of_production"));
|
||||
if ("1".equals(json.getString("sub_type"))) {
|
||||
mp.put("子卷状态", "正常");
|
||||
@@ -312,6 +312,7 @@ public class StructivtServiceImpl implements StructivtService {
|
||||
mp.put("净重", json.getString("net_weight"));
|
||||
mp.put("毛重", json.getString("box_weight"));
|
||||
mp.put("长度", json.getString("length"));
|
||||
mp.put("接头数", json.getString("joint_type"));
|
||||
mp.put("计划外分切的子卷", json.getString("is_un_plan_production"));
|
||||
mp.put("子卷的物性值1", json.getString("un_plan_product_property1"));
|
||||
mp.put("子卷的物性值2", json.getString("un_plan_product_property2"));
|
||||
|
||||
@@ -90,7 +90,9 @@
|
||||
WHEN DATEDIFF( NOW(), sub.date_of_production ) > '90' THEN '3'
|
||||
END
|
||||
END AS sub_type,
|
||||
DATEDIFF( NOW(), sub.date_of_production ) AS stock_age
|
||||
DATEDIFF( NOW(), sub.date_of_production ) AS stock_age,
|
||||
sub.joint_type,
|
||||
dis.confirm_time
|
||||
|
||||
FROM
|
||||
ST_IVT_StructIvt ivt
|
||||
@@ -114,6 +116,20 @@
|
||||
WHERE
|
||||
plan1.is_delete = '0'
|
||||
GROUP BY container_name) plan ON plan.container_name = sub.container_name
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
MIN( mst.confirm_time ) AS confirm_time,
|
||||
dis.pcsn
|
||||
FROM
|
||||
st_ivt_iostorinvdis dis
|
||||
LEFT JOIN st_ivt_iostorinv mst ON mst.iostorinv_id = dis.iostorinv_id
|
||||
WHERE
|
||||
mst.io_type = '0'
|
||||
AND mst.bill_type = '0001'
|
||||
AND mst.is_delete = '0'
|
||||
GROUP BY
|
||||
dis.pcsn
|
||||
) dis ON dis.pcsn = ivt.pcsn
|
||||
|
||||
WHERE
|
||||
1 = 1
|
||||
@@ -243,7 +259,9 @@
|
||||
WHEN DATEDIFF( NOW(), sub.date_of_production ) <= '90' THEN '1'
|
||||
WHEN DATEDIFF( NOW(), sub.date_of_production ) > '90' THEN '3'
|
||||
END AS sub_type,
|
||||
DATEDIFF( NOW(), ivt.instorage_time ) AS stock_age
|
||||
DATEDIFF( NOW(), ivt.instorage_time ) AS stock_age,
|
||||
sub.joint_type,
|
||||
dis.confirm_time
|
||||
FROM
|
||||
ST_IVT_StructIvt ivt
|
||||
LEFT JOIN st_ivt_structattr attr ON ivt.struct_id = attr.struct_id
|
||||
@@ -267,6 +285,20 @@
|
||||
WHERE
|
||||
plan1.is_delete = '0'
|
||||
GROUP BY container_name) plan ON plan.container_name = sub.container_name
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
MIN( mst.confirm_time ) AS confirm_time,
|
||||
dis.pcsn
|
||||
FROM
|
||||
st_ivt_iostorinvdis dis
|
||||
LEFT JOIN st_ivt_iostorinv mst ON mst.iostorinv_id = dis.iostorinv_id
|
||||
WHERE
|
||||
mst.io_type = '0'
|
||||
AND mst.bill_type = '0001'
|
||||
AND mst.is_delete = '0'
|
||||
GROUP BY
|
||||
dis.pcsn
|
||||
) dis ON dis.pcsn = ivt.pcsn
|
||||
WHERE
|
||||
1 = 1
|
||||
and attr.stor_id in 输入.in_stor_id
|
||||
|
||||
@@ -140,5 +140,9 @@ public class WmsToAcsController {
|
||||
return new ResponseEntity<>(wmsToAcsService.getTubeMsg(jo), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/queryBoxWeigh")
|
||||
@Log(value = "查询木箱毛重", isInterfaceLog = true, interfaceLogType = InterfaceLogType.LMS_TO_ACS)
|
||||
public ResponseEntity<Object> querydeviceOne(@RequestBody JSONObject jo) {
|
||||
return new ResponseEntity<>(wmsToAcsService.queryBoxWeigh(jo), HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -147,6 +147,10 @@ public interface WmsToAcsService {
|
||||
|
||||
JSONObject getTubeMsg(JSONObject jo);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 查询木箱重量
|
||||
* @param jo 、
|
||||
* @return JSONObject
|
||||
*/
|
||||
JSONObject queryBoxWeigh(JSONObject jo);
|
||||
}
|
||||
|
||||
@@ -474,4 +474,47 @@ public class WmsToAcsServiceImpl implements WmsToAcsService {
|
||||
arr.add(whereJson);
|
||||
return AcsUtil.notifyAcs(api, arr);
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject queryBoxWeigh(JSONObject jo) {
|
||||
String api = "api/wms/querydevice";
|
||||
//判断是否连接ACS系统
|
||||
String isConnect = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("is_connect_acs").getValue();
|
||||
JSONObject result = new JSONObject();
|
||||
if (StrUtil.equals("0", isConnect)) {
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "查询失败,未连接ACS!");
|
||||
result.put("data", new JSONArray());
|
||||
return result;
|
||||
}
|
||||
|
||||
String product_area = "LK";
|
||||
|
||||
String acs_url = URLEnum.find(product_area);
|
||||
if (StrUtil.isEmpty(acs_url)) {
|
||||
log.info(product_area);
|
||||
throw new BadRequestException("未查询到区域对应的acs地址!");
|
||||
}
|
||||
|
||||
String url = acs_url + api;
|
||||
try {
|
||||
String resultMsg = HttpRequest.post(url)
|
||||
.body(String.valueOf(jo.getJSONArray("data")))
|
||||
.execute().body();
|
||||
result = JSONObject.parseObject(resultMsg);
|
||||
|
||||
} catch (Exception e) {
|
||||
String msg = e.getMessage();
|
||||
//网络不通
|
||||
System.out.println(msg);
|
||||
result.put("status", HttpStatus.BAD_REQUEST);
|
||||
result.put("message", "网络不通,操作失败!");
|
||||
result.put("data", new JSONArray());
|
||||
}
|
||||
//acs抛异常这里
|
||||
if (!StrUtil.equals(result.getString("status"), "200")) {
|
||||
throw new BadRequestException("操作失败:" + result.getString("message"));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -701,6 +701,76 @@ public class LmsToMesServiceImpl implements LmsToMesService {
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject sendSalesIvtMsg(String file_name) {
|
||||
|
||||
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 = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("FEISHU_URL").getValue();
|
||||
String api = "/FeiShuNoticesWebApi/UploadImage";
|
||||
url = url + api +"?fileName="+file_name;
|
||||
|
||||
log.info("sendSalesIvtMsg接口输入参数为:-------------------" + url.toString());
|
||||
|
||||
try {
|
||||
String resultMsg = HttpRequest.post(url)
|
||||
.execute().body();
|
||||
result = JSONObject.parseObject(resultMsg);
|
||||
log.info("sendSalesIvtMsg接口输出参数为:-------------------" + result.toString());
|
||||
|
||||
String RTYPE = result.getString("RTYPE");
|
||||
if ("E".equals(RTYPE)) {
|
||||
throw new BadRequestException(result.getString("RTMSG"));
|
||||
}
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
throw new BadRequestException("飞书提示错误:" + e.getMessage());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject sendSalesIvtMsgParam(JSONObject param) {
|
||||
log.info("sendSalesIvtMsgParam接口输入参数为:-------------------" + 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 = 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("sendSalesIvtMsgParam接口输出参数为:-------------------" + result.toString());
|
||||
|
||||
|
||||
String RTYPE = result.getString("RTYPE");
|
||||
if ("E".equals(RTYPE)) {
|
||||
throw new BadRequestException(result.getString("RTMSG"));
|
||||
}
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
throw new BadRequestException("飞书提示错误:" + e.getMessage());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@Override
|
||||
public JSONObject momAutoTransterMoveIn(JSONObject param) {
|
||||
String from_area = param.getString("from_area");
|
||||
|
||||
@@ -33,6 +33,12 @@ public class ProductInstorController {
|
||||
return new ResponseEntity<>(productInstorService.boxQuery(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/weighCheck")
|
||||
@Log("称重校验")
|
||||
public ResponseEntity<Object> weighCheck(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(productInstorService.weighCheck(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/confirm")
|
||||
@Log("手持生产入库确认")
|
||||
|
||||
|
||||
@@ -22,4 +22,6 @@ public interface ProductInstorService {
|
||||
JSONObject bale(JSONObject whereJson);
|
||||
|
||||
JSONObject abnormalOut(JSONObject whereJson);
|
||||
|
||||
JSONObject weighCheck(JSONObject whereJson);
|
||||
}
|
||||
|
||||
@@ -153,7 +153,7 @@ public class PrintServiceImpl implements PrintService {
|
||||
+ box_jo.getString("customer_description") + ","
|
||||
+ box_jo.getString("thickness") + ","
|
||||
+ box_jo.getString("mass_per_unit_area") + ","
|
||||
+ box_jo.getString("length") + ","
|
||||
+ NumberUtil.round(box_jo.getString("length"), 2) + ","
|
||||
+ box_jo.getString("box_type") + ","
|
||||
+ box_jo.getString("sap_pcsn") + ","
|
||||
+ box_jo.getString("box_length") + ","
|
||||
@@ -295,7 +295,7 @@ public class PrintServiceImpl implements PrintService {
|
||||
+ box_jo.getString("customer_description") + ","
|
||||
+ box_jo.getString("thickness") + ","
|
||||
+ box_jo.getString("mass_per_unit_area") + ","
|
||||
+ box_jo.getString("length") + ","
|
||||
+ NumberUtil.round(box_jo.getString("length"), 2) + ","
|
||||
+ box_jo.getString("box_type") + ","
|
||||
+ box_jo.getString("sap_pcsn") + ","
|
||||
+ box_jo.getString("box_length") + ","
|
||||
|
||||
@@ -3,6 +3,7 @@ package org.nl.wms.pda.st.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
@@ -17,6 +18,7 @@ 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.basedata.st.service.impl.UserStorServiceImpl;
|
||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.ext.acs.service.impl.AcsToWmsServiceImpl;
|
||||
import org.nl.wms.ext.acs.service.impl.WmsToAcsServiceImpl;
|
||||
import org.nl.wms.pda.st.service.ProductInstorService;
|
||||
@@ -55,6 +57,8 @@ public class ProductInstorServiceImpl implements ProductInstorService {
|
||||
|
||||
private final RedissonClient redissonClient;
|
||||
|
||||
private final WmsToAcsService wmsToAcsService;
|
||||
|
||||
@Override
|
||||
public JSONObject boxQuery(JSONObject whereJson) {
|
||||
String box_no = whereJson.getString("box_no");
|
||||
@@ -540,4 +544,49 @@ public class ProductInstorServiceImpl implements ProductInstorService {
|
||||
|
||||
return jo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject weighCheck(JSONObject whereJson) {
|
||||
WQLObject subTab = WQLObject.getWQLObject("pdm_bi_subpackagerelation");
|
||||
JSONObject jo = new JSONObject();
|
||||
|
||||
String point_code = whereJson.getString("point_code");
|
||||
String box_no = whereJson.getString("box_no");
|
||||
|
||||
if (ObjectUtil.isEmpty(point_code)) {
|
||||
throw new BadRequestException("点位不能为空!");
|
||||
}
|
||||
|
||||
if (ObjectUtil.isEmpty(box_no)) {
|
||||
throw new BadRequestException("木箱号不能为空!");
|
||||
}
|
||||
|
||||
// 组织数据
|
||||
JSONArray paramArr = new JSONArray();
|
||||
JSONObject paramJson = new JSONObject();
|
||||
paramJson.put("device_code", point_code);
|
||||
paramArr.add(paramJson);
|
||||
|
||||
// 调用接口
|
||||
whereJson.put("data", paramArr);
|
||||
JSONObject jsonObject = wmsToAcsService.queryBoxWeigh(whereJson);
|
||||
|
||||
JSONObject data = jsonObject.getJSONArray("data").getJSONObject(0);
|
||||
double weight_now = NumberUtil.div(data.getDoubleValue("weight"), 10);
|
||||
|
||||
// 获取系统参数
|
||||
double weight_sys = Double.parseDouble(SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("weight_sys").getValue());
|
||||
|
||||
// 查询子卷包装关系
|
||||
JSONObject jsonSub = subTab.query("package_box_sn = '" + box_no + "'").uniqueResult(0);
|
||||
double box_weight = jsonSub.getDoubleValue("box_weight");
|
||||
|
||||
if (NumberUtil.sub(box_weight, weight_sys) <= weight_now && NumberUtil.add(box_weight, weight_sys) >= weight_now) {
|
||||
jo.put("message", "重量合格!当前称重重量:"+weight_now);
|
||||
} else {
|
||||
jo.put("message", "重量不合格!当前称重重量:"+weight_now);
|
||||
}
|
||||
|
||||
return jo;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,6 +77,7 @@ public class CutConveyorTask extends AbstractAcsTask {
|
||||
public void updateTaskStatus(JSONObject taskObj, String status) {
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
WQLObject ivtTab = WQLObject.getWQLObject("ST_IVT_DeliveryPointIvt");
|
||||
WQLObject subTab = WQLObject.getWQLObject("pdm_bi_subpackagerelation");
|
||||
|
||||
String task_id = taskObj.getString("task_id");
|
||||
JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
|
||||
@@ -111,6 +112,15 @@ public class CutConveyorTask extends AbstractAcsTask {
|
||||
jsonTask.put("update_time", DateUtil.now());
|
||||
taskTab.update(jsonTask);
|
||||
|
||||
if ("010507".equals(jsonTask.getString("task_type"))) {
|
||||
double weight = taskObj.getDoubleValue("weight");
|
||||
|
||||
// 更新子卷包装实际重量
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("real_weight",weight);
|
||||
subTab.update(param,"package_box_sn ='"+jsonTask.getString("vehicle_code")+"'");
|
||||
}
|
||||
|
||||
//只有输送入的时候才调用MES
|
||||
if ("010402".equals(jsonTask.getString("task_type"))) {
|
||||
//调用MES接口,通知MES运输中
|
||||
|
||||
@@ -5683,9 +5683,10 @@ public class CheckOutBillServiceImpl implements CheckOutBillService {
|
||||
//如果为返检出库或者改切出库删除对应的包装关系
|
||||
JSONArray dis_rows = new JSONArray();
|
||||
if (jo_mst.getString("is_overdue").equals("1")) {
|
||||
dis_rows = WQLObject.getWQLObject("ST_IVT_IOStorInvDis").query("iostorinv_id = '" + iostorinv_id + "' and is_overdue = '0'").getResultJSONArray(0);
|
||||
dis_rows = WQLObject.getWQLObject("ST_IVT_IOStorInvDis").query("iostorinv_id = '" + iostorinv_id + "' and is_overdue = '0' and box_no = '"+jsonSub.getString("package_box_sn")+"'").getResultJSONArray(0);
|
||||
} else {
|
||||
dis_rows = WQLObject.getWQLObject("ST_IVT_IOStorInvDis").query("iostorinv_id = '" + iostorinv_id + "'").getResultJSONArray(0);
|
||||
|
||||
dis_rows = WQLObject.getWQLObject("ST_IVT_IOStorInvDis").query("iostorinv_id = '" + iostorinv_id + "' and box_no = '"+jsonSub.getString("package_box_sn")+"'").getResultJSONArray(0);
|
||||
}
|
||||
|
||||
for (int j = 0; j < dis_rows.size(); j++) {
|
||||
|
||||
@@ -175,3 +175,4 @@
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ const service = axios.create({
|
||||
service.interceptors.request.use(
|
||||
config => {
|
||||
if (getToken()) {
|
||||
config.headers['Authorization'] = getToken() ? 'Bearer ' + getToken() : undefined // 让每个请求携带自定义token 请根据实际情况自行修改
|
||||
config.headers['Authorization'] = 'Bearer ' + getToken()
|
||||
}
|
||||
config.headers['Content-Type'] = 'application/json'
|
||||
return config
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
<el-table-column prop="name" label="文件名">
|
||||
<template slot-scope="scope">
|
||||
<el-popover
|
||||
:content="'file/' + scope.row.type + '/' + scope.row.realName"
|
||||
:content="'file/' + scope.row.type + '/' + scope.row.real_name"
|
||||
placement="top-start"
|
||||
title="路径"
|
||||
width="200"
|
||||
@@ -65,7 +65,7 @@
|
||||
>
|
||||
<a
|
||||
slot="reference"
|
||||
:href="baseURLStr + '/file/' + scope.row.type + '/' + scope.row.realName"
|
||||
:href="baseURLStr + '/file/' + scope.row.type + '/' + scope.row.real_name"
|
||||
class="el-link--primary"
|
||||
style="word-break:keep-all;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color: #1890ff;font-size: 13px;"
|
||||
target="_blank"
|
||||
@@ -78,8 +78,8 @@
|
||||
<el-table-column prop="path" label="预览图">
|
||||
<template slot-scope="{row}">
|
||||
<el-image
|
||||
:src=" baseURLStr + '/file/' + row.type + '/' + row.realName"
|
||||
:preview-src-list="[baseURLStr + '/file/' + row.type + '/' + row.realName]"
|
||||
:src=" baseURLStr + '/file/' + row.type + '/' + row.real_name"
|
||||
:preview-src-list="[baseURLStr + '/file/' + row.type + '/' + row.real_name]"
|
||||
fit="contain"
|
||||
lazy
|
||||
class="el-avatar"
|
||||
@@ -112,7 +112,6 @@ import crudOperation from '@crud/CRUD.operation'
|
||||
import pagination from '@crud/Pagination'
|
||||
import DateRangePicker from '@/components/DateRangePicker'
|
||||
|
||||
|
||||
const defaultForm = { id: null, name: '' }
|
||||
export default {
|
||||
components: { pagination, crudOperation, rrOperation, DateRangePicker },
|
||||
|
||||
@@ -174,7 +174,7 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<rrOperation :crud="crud"/>
|
||||
<rrOperation :crud="crud" />
|
||||
</el-form>
|
||||
</div>
|
||||
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
|
||||
@@ -201,23 +201,36 @@
|
||||
</el-button>
|
||||
</crudOperation>
|
||||
<!--表格渲染-->
|
||||
<el-table ref="table" v-loading="crud.loading" :data="crud.data" size="mini" style="width: 100%;"
|
||||
@selection-change="crud.selectionChangeHandler"
|
||||
<el-table
|
||||
ref="table"
|
||||
v-loading="crud.loading"
|
||||
:data="crud.data"
|
||||
size="mini"
|
||||
style="width: 100%;"
|
||||
@selection-change="crud.selectionChangeHandler"
|
||||
>
|
||||
<el-table-column type="selection" width="55"/>
|
||||
<el-table-column prop="struct_code" label="仓位编码"
|
||||
:min-width="flexWidth('struct_code',crud.data,'仓位编码')"
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column
|
||||
prop="struct_code"
|
||||
label="仓位编码"
|
||||
:min-width="flexWidth('struct_code',crud.data,'仓位编码')"
|
||||
/>
|
||||
<el-table-column prop="struct_name" label="仓位名称"
|
||||
:min-width="flexWidth('struct_name',crud.data,'仓位名称')"
|
||||
<el-table-column
|
||||
prop="struct_name"
|
||||
label="仓位名称"
|
||||
:min-width="flexWidth('struct_name',crud.data,'仓位名称')"
|
||||
/>
|
||||
<el-table-column prop="stor_name" label="仓库" :min-width="flexWidth('stor_name',crud.data,'仓库')"/>
|
||||
<el-table-column prop="sect_name" label="库区" :min-width="flexWidth('sect_name',crud.data,'库区')"/>
|
||||
<el-table-column prop="material_code" label="物料编码"
|
||||
:min-width="flexWidth('material_code',crud.data,'物料编码')"
|
||||
<el-table-column prop="stor_name" label="仓库" :min-width="flexWidth('stor_name',crud.data,'仓库')" />
|
||||
<el-table-column prop="sect_name" label="库区" :min-width="flexWidth('sect_name',crud.data,'库区')" />
|
||||
<el-table-column
|
||||
prop="material_code"
|
||||
label="物料编码"
|
||||
:min-width="flexWidth('material_code',crud.data,'物料编码')"
|
||||
/>
|
||||
<el-table-column prop="material_name" label="物料名称"
|
||||
:min-width="flexWidth('material_name',crud.data,'物料名称')"
|
||||
<el-table-column
|
||||
prop="material_name"
|
||||
label="物料名称"
|
||||
:min-width="flexWidth('material_name',crud.data,'物料名称')"
|
||||
/>
|
||||
<!-- <el-table-column prop="region_name" label="下料区域" min-width="120" show-overflow-tooltip />-->
|
||||
<!-- <el-table-column prop="quality_scode" label="品质类型" min-width="120" show-overflow-tooltip>
|
||||
@@ -225,26 +238,31 @@
|
||||
{{ dict.label.ST_QUALITY_SCODE[scope.row.quality_scode] }}
|
||||
</template>
|
||||
</el-table-column>-->
|
||||
<el-table-column prop="package_box_sn" label="木箱码"
|
||||
:min-width="flexWidth('package_box_sn',crud.data,'木箱码')"
|
||||
<el-table-column
|
||||
prop="package_box_sn"
|
||||
label="木箱码"
|
||||
:min-width="flexWidth('package_box_sn',crud.data,'木箱码')"
|
||||
/>
|
||||
<el-table-column prop="quanlity_in_box" label="子卷数"
|
||||
:min-width="flexWidth('quanlity_in_box',crud.data,'子卷数')"
|
||||
<el-table-column
|
||||
prop="quanlity_in_box"
|
||||
label="子卷数"
|
||||
:min-width="flexWidth('quanlity_in_box',crud.data,'子卷数')"
|
||||
/>
|
||||
<el-table-column prop="pcsn" label="子卷号" :min-width="flexWidth('pcsn',crud.data,'子卷号')"/>
|
||||
<el-table-column prop="sap_pcsn" label="sap批次" :min-width="flexWidth('sap_pcsn',crud.data,'sap批次')"/>
|
||||
<el-table-column prop="box_weight" label="毛重" :formatter="rounding2"/>
|
||||
<el-table-column prop="canuse_qty" label="可用数" :formatter="rounding"/>
|
||||
<el-table-column prop="frozen_qty" label="冻结数" :formatter="rounding"/>
|
||||
<el-table-column prop="ivt_qty" label="库存数" :formatter="rounding"/>
|
||||
<el-table-column prop="warehousing_qty" label="待入数" :formatter="rounding"/>
|
||||
<el-table-column prop="unit_name" label="计量单位"/>
|
||||
<el-table-column prop="instorage_time" label="入库时间" min-width="150"/>
|
||||
<el-table-column prop="sub_type" label="子卷状态" min-width="150" :formatter="formatSubType"/>
|
||||
<el-table-column prop="pcsn" label="子卷号" :min-width="flexWidth('pcsn',crud.data,'子卷号')" />
|
||||
<el-table-column prop="sap_pcsn" label="sap批次" :min-width="flexWidth('sap_pcsn',crud.data,'sap批次')" />
|
||||
<el-table-column prop="box_weight" label="毛重" :formatter="rounding2" />
|
||||
<el-table-column prop="canuse_qty" label="可用数" :formatter="rounding" />
|
||||
<el-table-column prop="frozen_qty" label="冻结数" :formatter="rounding" />
|
||||
<el-table-column prop="ivt_qty" label="库存数" :formatter="rounding" />
|
||||
<el-table-column prop="warehousing_qty" label="待入数" :formatter="rounding" />
|
||||
<el-table-column prop="unit_name" label="计量单位" />
|
||||
<el-table-column prop="confirm_time" label="入库时间" min-width="150" />
|
||||
<el-table-column prop="joint_type" label="接头数" min-width="150" />
|
||||
<el-table-column prop="sub_type" label="子卷状态" min-width="150" :formatter="formatSubType" />
|
||||
<el-table-column prop="stock_age" label="生产时长(天)" min-width="120" />
|
||||
<el-table-column prop="paper_type" label="管件类型" min-width="150"/>
|
||||
<el-table-column prop="paper_code" label="管件编码" min-width="150"/>
|
||||
<el-table-column prop="paper_name" label="管件描述" min-width="250"/>
|
||||
<el-table-column prop="paper_type" label="管件类型" min-width="150" />
|
||||
<el-table-column prop="paper_code" label="管件编码" min-width="150" />
|
||||
<el-table-column prop="paper_name" label="管件描述" min-width="250" />
|
||||
<el-table-column prop="remark" label="超期原因" min-width="250">
|
||||
<template scope="scope">
|
||||
<!-- <el-input v-model="scope.row.remark" style="width: 200px" />-->
|
||||
@@ -267,16 +285,20 @@
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="操作" width="120" fixed="right">
|
||||
<template scope="scope">
|
||||
<el-button type="primary" class="filter-item" size="mini" icon="el-icon-edit"
|
||||
@click.native.prevent="save(scope.row)"
|
||||
<el-button
|
||||
type="primary"
|
||||
class="filter-item"
|
||||
size="mini"
|
||||
icon="el-icon-edit"
|
||||
@click.native.prevent="save(scope.row)"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--分页组件-->
|
||||
<pagination/>
|
||||
<pagination />
|
||||
</div>
|
||||
<UploadDialog :dialog-show.sync="viewShow" @tableChanged="querytable"/>
|
||||
<UploadDialog :dialog-show.sync="viewShow" @tableChanged="querytable" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -94,6 +94,17 @@
|
||||
</div>
|
||||
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
|
||||
<crudOperation :permission="permission">
|
||||
<el-button
|
||||
v-if="query.stor_id === '1582991156504039455'"
|
||||
slot="right"
|
||||
class="filter-item"
|
||||
type="warning"
|
||||
icon="el-icon-check"
|
||||
size="mini"
|
||||
@click="openOneCreate"
|
||||
>
|
||||
一键生成
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="query.stor_id === '1582991156504039455'"
|
||||
slot="right"
|
||||
|
||||
@@ -48,6 +48,14 @@ export function blurQuery(data) {
|
||||
})
|
||||
}
|
||||
|
||||
export function oneCreate(data) {
|
||||
return request({
|
||||
url: 'api/structattr/oneCreate',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function tunConfirm(data) {
|
||||
return request({
|
||||
url: 'api/structattr/tunConfirm',
|
||||
@@ -56,4 +64,12 @@ export function tunConfirm(data) {
|
||||
})
|
||||
}
|
||||
|
||||
export default { add, edit, del, changeActive, tunConfirm }
|
||||
export function blurQuery(data) {
|
||||
return request({
|
||||
url: 'api/structattr/blurQuery',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export default { add, edit, del, changeActive, oneCreate, blurQuery, tunConfirm }
|
||||
|
||||
@@ -60,8 +60,8 @@
|
||||
全部取消
|
||||
</el-button>
|
||||
<el-button
|
||||
slot="left"
|
||||
v-if="this.mstrow.bill_type !== '1011'"
|
||||
slot="left"
|
||||
class="filter-item"
|
||||
:loading="loadingAlldiv"
|
||||
type="primary"
|
||||
@@ -73,8 +73,8 @@
|
||||
自动分配
|
||||
</el-button>
|
||||
<el-button
|
||||
slot="left"
|
||||
v-if="this.mstrow.bill_type !== '1011'"
|
||||
slot="left"
|
||||
class="filter-item"
|
||||
type="primary"
|
||||
icon="el-icon-check"
|
||||
@@ -98,8 +98,8 @@
|
||||
手工分配
|
||||
</el-button>
|
||||
<el-button
|
||||
slot="left"
|
||||
v-if="this.mstrow.bill_type !== '1011'"
|
||||
slot="left"
|
||||
class="filter-item"
|
||||
type="warning"
|
||||
:loading="loadingSetAllPoint"
|
||||
@@ -163,7 +163,7 @@
|
||||
disabled
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="出库点" prop="point_code" v-if="mstrow.stor_id !== '1582991156504039455'">
|
||||
<el-form-item v-if="mstrow.stor_id !== '1582991156504039455'" label="出库点" prop="point_code">
|
||||
<el-select
|
||||
v-model="form2.point_code"
|
||||
clearable
|
||||
@@ -198,7 +198,7 @@
|
||||
</el-form-item>-->
|
||||
</el-form>
|
||||
</div>
|
||||
<span class="crud-opts-right2">
|
||||
<span v-if="mstrow.stor_id !== '1582991156504039455'" class="crud-opts-right2">
|
||||
<!--左侧插槽-->
|
||||
<slot name="left" />
|
||||
<!-- <el-button
|
||||
@@ -213,36 +213,34 @@
|
||||
设置站点
|
||||
</el-button>-->
|
||||
<el-button
|
||||
slot="left"
|
||||
v-if="this.mstrow.bill_type !== '1011'"
|
||||
slot="left"
|
||||
class="filter-item"
|
||||
:loading="loadingSetPoint"
|
||||
type="warning"
|
||||
icon="el-icon-check"
|
||||
size="mini"
|
||||
v-if="mstrow.stor_id !== '1582991156504039455'"
|
||||
:disabled="button4"
|
||||
@click="oneSetPoint2"
|
||||
>
|
||||
设置站点
|
||||
</el-button>
|
||||
<el-button
|
||||
slot="left"
|
||||
v-if="this.mstrow.bill_type !== '1011'"
|
||||
slot="left"
|
||||
class="filter-item"
|
||||
:loading="loadingSetAllPoint"
|
||||
type="warning"
|
||||
icon="el-icon-check"
|
||||
:disabled="button5"
|
||||
v-if="mstrow.stor_id !== '1582991156504039455'"
|
||||
size="mini"
|
||||
@click="allSetPoint"
|
||||
>
|
||||
一键设置
|
||||
</el-button>
|
||||
<el-button
|
||||
slot="left"
|
||||
v-if="this.mstrow.bill_type === '1011'"
|
||||
slot="left"
|
||||
class="filter-item"
|
||||
:loading="loadingSetAllPoint"
|
||||
type="warning"
|
||||
@@ -291,10 +289,10 @@
|
||||
<el-table-column prop="box_no" label="木箱号" width="250px" :min-width="flexWidth('box_no',crud.data,'木箱号')" />
|
||||
<el-table-column prop="pcsn" label="子卷批次号" width="150px" :min-width="flexWidth('pcsn',crud.data,'子卷批次号')" />
|
||||
<el-table-column prop="sap_pcsn" label="sap批次号" width="150px" :min-width="flexWidth('sap_pcsn',crud.data,'sap批次号')" />
|
||||
<el-table-column show-overflow-tooltip prop="plan_qty" label="出库重量" :formatter="crud.formatNum3" align="center" width="120px" :min-width="flexWidth('plan_qty',crud.data,'出库重量')" >
|
||||
<el-table-column show-overflow-tooltip prop="plan_qty" label="出库重量" :formatter="crud.formatNum3" align="center" width="120px" :min-width="flexWidth('plan_qty',crud.data,'出库重量')">
|
||||
<template scope="scope">
|
||||
<el-input-number v-show="mstrow.bill_type === '1011'" v-model="scope.row.plan_qty" :precision="3" :controls="false" :min="1" style="width: 90px" />
|
||||
<span v-show="mstrow.bill_type !== '1011'" >{{ parseFloat(scope.row.plan_qty).toFixed(3) }}</span>
|
||||
<span v-show="mstrow.bill_type !== '1011'">{{ parseFloat(scope.row.plan_qty).toFixed(3) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column show-overflow-tooltip prop="struct_code" width="150px" label="仓位编码" align="center" />
|
||||
|
||||
Reference in New Issue
Block a user