13 Commits

Author SHA1 Message Date
zhouz
aed0bdc2d7 fix:包装关系修改不变更状态 2025-07-24 13:39:34 +08:00
zhouz
c7492a6cd7 fix:异常入库 2025-07-21 08:52:14 +08:00
yangyufu
e849b87eb2 删除多余连接查询 2025-07-10 15:04:40 +08:00
yangyufu
b3833d52ce fix(wms): 修复出库查询中箱子材质信息问题
- 在子查询中添加 box_type 字段
- 新增与 md_me_materialbase 表的左连接,获取材质名称
- 移除 bst_ivt_boxinfo 表的左连接,不再使用箱型信息
2025-07-10 15:04:31 +08:00
yangyufu
13ea603036 perf(query): 优化出库查询 SQL 语句
- 修改内联查询为左查询,确保出库记录不会丢失
2025-07-10 15:04:26 +08:00
yangyufu
d36b4811d9 feat(wms): 退货出库查询页面添加日期范围选择功能- 引入 DateRangePicker组件用于选择日期范围
- 添加 udOperation 组件以支持更新和删除操作
2025-07-10 15:04:23 +08:00
yangyufu
d43f56f741 feat(wms): 出库查询列表添加木箱编码和木箱描述字段
- 在出库查询列表中新增木箱编码和木箱描述两个字段
2025-07-10 15:04:15 +08:00
zhouz
1b49ffcb2e feat(wms): 出库查询新增木箱编码和木箱描述字段
- 在出库查询界面添加木箱编码和木箱描述两个新字段
- 更新后端服务和数据库查询以支持新增字段
2025-07-10 15:04:06 +08:00
zhouz
be2459d5b5 fix:出库任务被占用,提示优化 2025-07-10 15:03:54 +08:00
zhouz
62521d3263 fix:提示、注释优化 2025-06-27 15:01:14 +08:00
zhouz
2a4742421a fix:分切计划改为按照母卷按照数组下发 2025-06-24 10:37:46 +08:00
zhouz
9853d7129e fix:MES同步BOM信息 2025-06-12 14:28:18 +08:00
zhouz
c5a63cd8b6 add:新增与MES用于更新分切计划和订单BOM信息的接口 2025-05-26 15:07:43 +08:00
10 changed files with 540 additions and 297 deletions

View File

@@ -53,8 +53,8 @@ public class MesToLmsController {
@PostMapping("/cutPlanTransfer")
@Log("分切包装段:分切计划(单表,包含母卷/改制子卷-包装箱号、空包装箱物料、纸筒/FRP管MES下发智能物流")
@SaIgnore
public ResponseEntity<Object> cutPlanTransfer(@RequestBody JSONObject jo) {
return new ResponseEntity<>(mesToLmsService.cutPlanTransfer(jo), HttpStatus.OK);
public ResponseEntity<Object> cutPlanTransfer(@RequestBody JSONArray ja) {
return new ResponseEntity<>(mesToLmsService.cutPlanTransfer(ja), HttpStatus.OK);
}
@PostMapping("/callNextAssAndMomRoll")
@@ -190,4 +190,11 @@ public class MesToLmsController {
public ResponseEntity<Object> boxIsPass(@RequestBody JSONObject jo) {
return new ResponseEntity<>(mesToLmsService.boxIsPass(jo), HttpStatus.OK);
}
@PostMapping("/changeBomInfo")
@Log("MES更新LMS分切工单、订单BOM信息")
@SaIgnore
public ResponseEntity<Object> changeBomInfo(@RequestBody JSONObject jo) {
return new ResponseEntity<>(mesToLmsService.changeBomInfo(jo), HttpStatus.OK);
}
}

View File

@@ -27,7 +27,7 @@ public interface MesToLmsService {
/**
* 分切包装段:分切计划(单表,包含母卷/改制子卷-包装箱号、空包装箱物料、纸筒/FRP管MES下发智能物流
*/
JSONObject cutPlanTransfer(JSONObject param);
JSONObject cutPlanTransfer(JSONArray ja);
/**
* 分切即将完成,呼叫配送下一个母卷/改制子卷MES传智能物流
@@ -85,4 +85,6 @@ public interface MesToLmsService {
JSONObject WasteFoilSuccess(JSONObject param);
JSONObject boxIsPass(JSONObject jo);
JSONObject changeBomInfo(JSONObject jo);
}

View File

@@ -6,6 +6,7 @@ import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpStatus;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -420,7 +421,7 @@ public class MesToLmsServiceImpl implements MesToLmsService {
} else {
if (containerName.startsWith("B1") || containerName.startsWith("B3")) {
point_code = jsonCoolIvt.getString("point_code");
}else {
} else {
point_code = jsonCoolIvt.getString("full_point_code");
}
}
@@ -457,7 +458,7 @@ public class MesToLmsServiceImpl implements MesToLmsService {
JSONObject jsonPoint = pointTab.query("material_code = '" + containerName + "' and is_delete = '0' and is_used = '1'").uniqueResult(0);
JSONObject cool_jo = new JSONObject();
if (ObjectUtil.isEmpty(jsonPoint)) {
cool_jo = coolIvtTab.query("container_name = '"+containerName+"'").uniqueResult(0);
cool_jo = coolIvtTab.query("container_name = '" + containerName + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(cool_jo)) {
throw new BadRequestException("当前AGV已启用且母卷不存在烘箱对接位上");
}
@@ -466,7 +467,7 @@ public class MesToLmsServiceImpl implements MesToLmsService {
// 调用接口输入参数
if (ObjectUtil.isEmpty(jsonPoint)) {
jsonParam.put("point_code", cool_jo.getString("point_code"));
}else {
} else {
jsonParam.put("point_code", jsonPoint.getString("point_code"));
}
jsonParam.put("container_name", containerName);
@@ -533,205 +534,208 @@ public class MesToLmsServiceImpl implements MesToLmsService {
*/
@Override
@Transactional(rollbackFor = Exception.class)
public JSONObject cutPlanTransfer(JSONObject param) {
log.info("cutPlanTransfer接口输入参数为-------------------" + param.toString());
String orderType = param.getString("OrderType"); // 分切订单类型
String ContainerName = param.getString("ContainerName"); // 子卷号
String ProductName = param.getString("ProductName"); // 产品编码
String Description = param.getString("Description"); // 产品名称
String Warehouse = param.getString("Warehouse"); // 来源卷位置
String ResourceName = param.getString("ResourceName"); // 分切机台编码
String SplitGroup = param.getString("SplitGroup"); // 分切组
String ManufactureSort = param.getString("ManufactureSort"); // 生产顺序
String MfgOrderName = param.getString("MfgOrderName"); // 生产订单
String ManufactureDate = param.getString("ManufactureDate"); // 生产日期
String PaperTubeOrFRP = param.getString("PaperTubeOrFRP"); // 管件类型
String SplitBreadth = param.getString("SplitBreadth"); // 子卷幅宽
String SplitHeight = param.getString("SplitHeight"); // 子卷理论长度
String SplitWeight = param.getString("SplitWeight"); // 子卷理论重量
String Attribute2 = param.getString("Attribute2"); // 销售订单及行号
String Attribute3 = param.getString("Attribute3"); // 上下轴
String Attribute4 = param.getString("Attribute4"); // 位置左右
String Attribute5 = param.getString("Attribute5"); // 是否套轴
String Attribute6 = param.getString("Attribute6"); // 是否套轴
public JSONObject cutPlanTransfer(JSONArray ja) {
log.info("cutPlanTransfer接口输入参数为-------------------" + ja.toString());
WQLObject tab = WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan");
JSONObject result = new JSONObject();
try {
// 基础校验
if (ObjectUtil.isEmpty(orderType)) {
throw new BadRequestException("分切订单类型不能为空");
}
if (ObjectUtil.isEmpty(ContainerName)) {
throw new BadRequestException("子卷号不能为空");
}
if (ObjectUtil.isEmpty(ProductName)) {
throw new BadRequestException("产品编码不能为空");
}
if (ObjectUtil.isEmpty(Description)) {
throw new BadRequestException("产品名称不能为空");
}
if (ObjectUtil.isEmpty(Warehouse)) {
throw new BadRequestException("来源卷位置不能为空");
}
if (ObjectUtil.isEmpty(ResourceName)) {
throw new BadRequestException("分切机台编码不能为空");
}
if (ObjectUtil.isEmpty(SplitGroup)) {
throw new BadRequestException("分切组不能为空");
}
if (ObjectUtil.isEmpty(ManufactureSort)) {
throw new BadRequestException("生产顺序不能为空");
}
if (ObjectUtil.isEmpty(MfgOrderName)) {
throw new BadRequestException("生产订单不能为空");
}
if (ObjectUtil.isEmpty(ManufactureDate)) {
throw new BadRequestException("生产日期不能为空");
}
if (ObjectUtil.isEmpty(PaperTubeOrFRP)) {
throw new BadRequestException("管件类型不能为空");
}
if (ObjectUtil.isEmpty(SplitBreadth)) {
throw new BadRequestException("子卷幅宽不能为空");
}
if (ObjectUtil.isEmpty(SplitHeight)) {
throw new BadRequestException("子卷理论长度不能为空");
}
if (ObjectUtil.isEmpty(SplitWeight)) {
throw new BadRequestException("子卷理论重量不能为空");
}
for (int i = 0; i < ja.size(); i++) {
JSONObject param = ja.getJSONObject(i);
String orderType = param.getString("OrderType"); // 分切订单类型
String ContainerName = param.getString("ContainerName"); // 子卷号
String ProductName = param.getString("ProductName"); // 产品编码
String Description = param.getString("Description"); // 产品名称
String Warehouse = param.getString("Warehouse"); // 来源卷位置
String ResourceName = param.getString("ResourceName"); // 分切机台编码
String SplitGroup = param.getString("SplitGroup"); // 分切组
String ManufactureSort = param.getString("ManufactureSort"); // 生产顺序
String MfgOrderName = param.getString("MfgOrderName"); // 生产订单
String ManufactureDate = param.getString("ManufactureDate"); // 生产日期
String PaperTubeOrFRP = param.getString("PaperTubeOrFRP"); // 管件类型
String SplitBreadth = param.getString("SplitBreadth"); // 子卷幅宽
String SplitHeight = param.getString("SplitHeight"); // 子卷理论长度
String SplitWeight = param.getString("SplitWeight"); // 子卷理论重量
String Attribute2 = param.getString("Attribute2"); // 销售订单及行号
String Attribute3 = param.getString("Attribute3"); // 上下轴
String Attribute4 = param.getString("Attribute4"); // 位置左右
String Attribute5 = param.getString("Attribute5"); // 是否套轴
String Attribute6 = param.getString("Attribute6"); // 物料类型
/* orderType
* 1.当订单类型为1常规时 ParentContainerName 来源母卷号不能为空
* 2.当订单类型为2改制时 RestructContainerName 改制来源子卷号、PackageBoxSN 子卷立库木箱号 不能为空
*/
if (StrUtil.equals(orderType, "1")) {
if (ObjectUtil.isEmpty(param.getString("ParentContainerName"))) {
throw new BadRequestException("来源母卷号不能为空");
// 基础校验
if (ObjectUtil.isEmpty(orderType)) {
throw new BadRequestException("分切订单类型不能为空");
}
} else {
if (ObjectUtil.isEmpty(param.getString("RestructContainerName"))) {
throw new BadRequestException("改制来源子卷号不能为空");
if (ObjectUtil.isEmpty(ContainerName)) {
throw new BadRequestException("子卷号不能为空");
}
}
/* PaperTubeOrFRP
* 1.当管件类型为1纸筒时 PaperTubeMaterial 纸筒物料编码、PaperTubeDescription 纸筒物料描述、PaperTubeModel 纸筒规格 不能为空
* 2.当管件类型为2FRP管时 FRPMaterial FRP管物料编码、FRPDescription FRP管物料描述、FRPModel FRP管规格 不能为空
*/
String qzz_generation = "0";
String qzz_size = "0";
if (StrUtil.equals(PaperTubeOrFRP, "1")) {
if (ObjectUtil.isEmpty(param.getString("PaperTubeMaterial"))) {
throw new BadRequestException("纸筒物料编码不能为空");
if (ObjectUtil.isEmpty(ProductName)) {
throw new BadRequestException("产品编码不能为空");
}
if (ObjectUtil.isEmpty(param.getString("PaperTubeDescription"))) {
throw new BadRequestException("纸筒物料描述不能为空");
if (ObjectUtil.isEmpty(Description)) {
throw new BadRequestException("产品名称不能为空");
}
if (ObjectUtil.isEmpty(param.getString("PaperTubeModel"))) {
throw new BadRequestException("纸筒规格不能为空");
if (ObjectUtil.isEmpty(Warehouse)) {
throw new BadRequestException("来源卷位置不能为空");
}
if (param.getString("PaperTubeDescription").contains("3.12")) {
qzz_generation = "4";
} else if (param.getString("PaperTubeDescription").contains("3.15")) {
qzz_generation = "5";
if (ObjectUtil.isEmpty(ResourceName)) {
throw new BadRequestException("分切机台编码不能为空");
}
if (ObjectUtil.isEmpty(SplitGroup)) {
throw new BadRequestException("分切组不能为空");
}
if (ObjectUtil.isEmpty(ManufactureSort)) {
throw new BadRequestException("生产顺序不能为空");
}
if (ObjectUtil.isEmpty(MfgOrderName)) {
throw new BadRequestException("生产订单不能为空");
}
if (ObjectUtil.isEmpty(ManufactureDate)) {
throw new BadRequestException("生产日期不能为空");
}
if (ObjectUtil.isEmpty(PaperTubeOrFRP)) {
throw new BadRequestException("管件类型不能为空");
}
if (ObjectUtil.isEmpty(SplitBreadth)) {
throw new BadRequestException("子卷幅宽不能为空");
}
if (ObjectUtil.isEmpty(SplitHeight)) {
throw new BadRequestException("子卷理论长度不能为空");
}
if (ObjectUtil.isEmpty(SplitWeight)) {
throw new BadRequestException("子卷理论重量不能为空");
}
/* orderType
* 1.当订单类型为1常规时 ParentContainerName 来源母卷号不能为空
* 2.当订单类型为2改制时 RestructContainerName 改制来源子卷号、PackageBoxSN 子卷立库木箱号 不能为空
*/
if (StrUtil.equals(orderType, "1")) {
if (ObjectUtil.isEmpty(param.getString("ParentContainerName"))) {
throw new BadRequestException("来源母卷号不能为空");
}
} else {
qzz_generation = "4";
if (ObjectUtil.isEmpty(param.getString("RestructContainerName"))) {
throw new BadRequestException("改制来源子卷号不能为空");
}
}
/* PaperTubeOrFRP
* 1.当管件类型为1纸筒时 PaperTubeMaterial 纸筒物料编码、PaperTubeDescription 纸筒物料描述、PaperTubeModel 纸筒规格 不能为空
* 2.当管件类型为2FRP管时 FRPMaterial FRP管物料编码、FRPDescription FRP管物料描述、FRPModel FRP管规格 不能为空
*/
String qzz_generation = "0";
String qzz_size = "0";
if (StrUtil.equals(PaperTubeOrFRP, "1")) {
if (ObjectUtil.isEmpty(param.getString("PaperTubeMaterial"))) {
throw new BadRequestException("纸筒物料编码不能为空");
}
if (ObjectUtil.isEmpty(param.getString("PaperTubeDescription"))) {
throw new BadRequestException("纸筒物料描述不能为空");
}
if (ObjectUtil.isEmpty(param.getString("PaperTubeModel"))) {
throw new BadRequestException("纸筒规格不能为空");
}
if (param.getString("PaperTubeDescription").contains("3.12")) {
qzz_generation = "4";
} else if (param.getString("PaperTubeDescription").contains("3.15")) {
qzz_generation = "5";
} else {
qzz_generation = "4";
}
// 解析描述数组
String[] tubeArray = param.getString("PaperTubeDescription").split("\\|");
// 定义尺寸与长度
qzz_size = Character.toString(tubeArray[2].charAt(0));
} else {
if (ObjectUtil.isEmpty(param.getString("FRPMaterial"))) {
throw new BadRequestException("FRP管物料编码不能为空");
}
if (ObjectUtil.isEmpty(param.getString("FRPDescription"))) {
throw new BadRequestException("FRP管物料描述不能为空");
}
if (ObjectUtil.isEmpty(param.getString("FRPModel"))) {
throw new BadRequestException("FRP管规格不能为空");
}
if (param.getString("FRPDescription").contains("3.12")) {
qzz_generation = "4";
} else if (param.getString("FRPDescription").contains("3.15")) {
qzz_generation = "5";
// 解析描述数组
String[] tubeArray = param.getString("PaperTubeDescription").split("\\|");
// 定义尺寸与长度
qzz_size = Character.toString(tubeArray[2].charAt(0));
} else {
qzz_generation = "4";
if (ObjectUtil.isEmpty(param.getString("FRPMaterial"))) {
throw new BadRequestException("FRP管物料编码不能为空");
}
if (ObjectUtil.isEmpty(param.getString("FRPDescription"))) {
throw new BadRequestException("FRP管物料描述不能为空");
}
if (ObjectUtil.isEmpty(param.getString("FRPModel"))) {
throw new BadRequestException("FRP管规格不能为空");
}
if (param.getString("FRPDescription").contains("3.12")) {
qzz_generation = "4";
} else if (param.getString("FRPDescription").contains("3.15")) {
qzz_generation = "5";
} else {
qzz_generation = "4";
}
// 解析描述数组
String[] tubeArray = param.getString("FRPDescription").split("\\|");
// 定义尺寸与长度
qzz_size = Character.toString(tubeArray[2].charAt(0));
}
// 解析描述数组
String[] tubeArray = param.getString("FRPDescription").split("\\|");
// 定义尺寸与长度
qzz_size = Character.toString(tubeArray[2].charAt(0));
JSONObject json = new JSONObject();
json.put("workorder_id", IdUtil.getSnowflake(1, 1).nextId());
json.put("order_type", orderType);
json.put("container_name", ContainerName);
json.put("product_name", ProductName);
json.put("description", Description);
json.put("parent_container_name", param.getString("ParentContainerName"));
json.put("restruct_container_name", param.getString("RestructContainerName"));
json.put("package_box_sn", param.getString("PackageBoxSN"));
json.put("ware_house", Warehouse);
json.put("resource_name", ResourceName);
json.put("split_group", SplitGroup);
json.put("manufacture_sort", ManufactureSort);
json.put("mfg_order_name", MfgOrderName);
json.put("manufacture_date", ManufactureDate);
json.put("paper_tube_or_FRP", PaperTubeOrFRP);
json.put("paper_tube_material", param.getString("PaperTubeMaterial"));
json.put("paper_tube_description", param.getString("PaperTubeDescription"));
json.put("paper_tube_model", param.getString("PaperTubeModel"));
json.put("FRP_material", param.getString("FRPMaterial"));
json.put("FRP_description", param.getString("FRPDescription"));
json.put("FRP_model", param.getString("FRPModel"));
json.put("split_breadth", SplitBreadth);
json.put("split_height", SplitHeight);
json.put("split_weight", SplitWeight);
if (Attribute3.equals("U")) {
json.put("up_or_down", "1");
} else {
json.put("up_or_down", "2");
}
if (Attribute4.equals("L")) {
json.put("left_or_right", "1");
} else {
json.put("left_or_right", "2");
}
json.put("qzz_size", qzz_size);
if (ResourceName.startsWith("B5") || ResourceName.startsWith("B6")) {
json.put("is_paper_ok", "1");
}
if (Attribute5.equals("0")) {
json.put("is_paper_ok", "2");
}
json.put("sale_order_name", Attribute2);
json.put("material_type", Attribute6);
json.put("start_time", DateUtil.now());
json.put("status", "01");
json.put("qzz_generation", qzz_generation);
json.put("is_parent_ok", "0");
json.put("is_child_tz_ok", "0");
json.put("is_child_ps_ok", "0");
json.put("is_delete", "0");
tab.insert(json);
}
JSONObject json = new JSONObject();
json.put("workorder_id", IdUtil.getSnowflake(1, 1).nextId());
json.put("order_type", orderType);
json.put("container_name", ContainerName);
json.put("product_name", ProductName);
json.put("description", Description);
json.put("parent_container_name", param.getString("ParentContainerName"));
json.put("restruct_container_name", param.getString("RestructContainerName"));
json.put("package_box_sn", param.getString("PackageBoxSN"));
json.put("ware_house", Warehouse);
json.put("resource_name", ResourceName);
json.put("split_group", SplitGroup);
json.put("manufacture_sort", ManufactureSort);
json.put("mfg_order_name", MfgOrderName);
json.put("manufacture_date", ManufactureDate);
json.put("paper_tube_or_FRP", PaperTubeOrFRP);
json.put("paper_tube_material", param.getString("PaperTubeMaterial"));
json.put("paper_tube_description", param.getString("PaperTubeDescription"));
json.put("paper_tube_model", param.getString("PaperTubeModel"));
json.put("FRP_material", param.getString("FRPMaterial"));
json.put("FRP_description", param.getString("FRPDescription"));
json.put("FRP_model", param.getString("FRPModel"));
json.put("split_breadth", SplitBreadth);
json.put("split_height", SplitHeight);
json.put("split_weight", SplitWeight);
if (Attribute3.equals("U")) {
json.put("up_or_down", "1");
} else {
json.put("up_or_down", "2");
}
if (Attribute4.equals("L")) {
json.put("left_or_right", "1");
} else {
json.put("left_or_right", "2");
}
json.put("qzz_size", qzz_size);
if (ResourceName.startsWith("B5") || ResourceName.startsWith("B6")) {
json.put("is_paper_ok", "1");
}
if (Attribute5.equals("0")) {
json.put("is_paper_ok", "2");
}
json.put("sale_order_name", Attribute2);
json.put("material_type", Attribute6);
json.put("start_time", DateUtil.now());
json.put("status", "01");
json.put("qzz_generation", qzz_generation);
json.put("is_parent_ok", "0");
json.put("is_child_tz_ok", "0");
json.put("is_child_ps_ok", "0");
json.put("is_delete", "0");
tab.insert(json);
result.put("RTYPE", "S");
result.put("RTMSG", "操作成功!");
result.put("RTOAL", 1);
result.put("RTDAT", null);
} catch (Exception e) {
result.put("RTYPE", "E");
result.put("RTMSG", "操作失败!" + e.getMessage());
result.put("RTOAL", 0);
result.put("RTDAT", null);
}
result.put("RTYPE", "S");
result.put("RTMSG", "操作成功!");
result.put("RTOAL", 1);
result.put("RTDAT", null);
log.info("cutPlanTransfer接口输出参数为-------------------" + result.toString());
return result;
}
@@ -2453,4 +2457,172 @@ public class MesToLmsServiceImpl implements MesToLmsService {
}
return resultParam;
}
@Override
public JSONObject changeBomInfo(JSONObject param) {
log.info("changeBomInfo输入参数为-------------------" + param.toString());
WQLObject plan_tab = WQLObject.getWQLObject("pdm_bi_slittingproductionplan");
/* MES传递的入参内容
{
ChangType:1
"MfgOrderName": "25529502-20230926$02#02",
"ContainerName":"A2512505050203B2",
"ProductName": "44151000900045",
"Description": "木制包装容器及板材|木箱|650|4|3|1290*750*494",
"CarrierName": "48221000000001",
"CarrierDescription": "纸制筒管|纸管|3英寸|650",
"Type": "RW2",
"HL01": "A+",
"HL02": "520",
"HL03": "1,538.000",
"HL031": "2,000.000",
"HL04": "100.000",
"HL041": "130.000",
"HL05": "20,000.000",
"HL06": "CC",
"HL07": "4",
"HL08": "ZT1(纸筒-3寸)",
"HL081": "650",
"HL09": "ROF(毛面朝外)",
"HL10": "纸管长度650中性包装",
"HL11": null
}
*/
Long id = IdUtil.getSnowflake(1, 1).nextId();
//变更类型
String change_type = param.getString("ChangeType");
//子卷号
String container_name = param.getString("ContainerName");
//设备级工单号
String mfg_order = param.getString("MfgOrderName");
//木箱物料编码
String product_name = param.getString("ProductName");
//木箱描述
String description = param.getString("Description");
//管芯编码
String carrier_name = param.getString("CarrierName");
//管芯描述
String carrier_description = param.getString("CarrierDescription");
//类型
String type = param.getString("Type");
//等级
String level = param.getString("HL01");
//幅宽
String thickness = param.getString("HL02");
//单卷长度下限
String length_floor = param.getString("HL03");
//单卷长度上限
String length_ceiling = param.getString("HL031");
//单卷重量下限
String weight_floor = param.getString("HL04");
//单卷重量上限
String weight_ceiling = param.getString("HL041");
//订单重量
String order_weight = param.getString("HL05");
//包装方案
String package_type = param.getString("HL06");
//单箱装卷数
String package_num = param.getString("HL07");
//管芯选配
String paper_type = param.getString("HL08");
//客户要求管芯长度
String need_paper_length = param.getString("HL081");
//收卷方式
String rolling_type = param.getString("HL09");
//客户特殊包装要求
String package_request = param.getString("HL10");
//客户指定生箔机台
String request_machine = param.getString("HL11");
JSONObject resultParam = new JSONObject();
try {
if (change_type.equals("1")) {
HashMap plan_map = new HashMap();
//变更分切计划的管件信息及订单号
//1、判断变更的属于FRP管还是纸管通过判断类型。TypeRW2FRP管RW3纸管
if (type.equals("RW2")) {
plan_map.put("paper_tube_or_FRP", "2");
plan_map.put("FRP_material", carrier_name);
plan_map.put("FRP_description", carrier_description);
plan_map.put("FRP_model", carrier_description);
plan_map.put("mfg_order_name", mfg_order);
} else {
plan_map.put("paper_tube_or_FRP", "1");
plan_map.put("paper_tube_material", carrier_name);
plan_map.put("paper_tube_description", carrier_description);
plan_map.put("paper_tube_model", carrier_description);
plan_map.put("mfg_order_name", mfg_order);
}
plan_tab.update(plan_map, "container_name = '" + container_name + "'");
}
//变更订单BOM的信息
//判断当前订单BOM是否存在如果存在则更新否则保存
IPdmBiOrderbominfoService orderbominfoService = SpringContextHolder.getBean(IPdmBiOrderbominfoService.class);
PdmBiOrderbominfo orderbominfo = orderbominfoService.getOne(new LambdaQueryWrapper<PdmBiOrderbominfo>().eq(PdmBiOrderbominfo::getMfgOrder, mfg_order));
if (ObjectUtil.isEmpty(orderbominfo)) {
PdmBiOrderbominfo bom_info = PdmBiOrderbominfo.builder()
.id(id)
.mfgOrder(mfg_order)
.productName(product_name)
.description(description)
.carrierName(carrier_name)
.carrierDescription(carrier_description)
.type(type)
.level(level)
.thickness(thickness)
.lengthFloor(length_floor)
.lengthCeiling(length_ceiling)
.weightFloor(weight_floor)
.weightCeiling(weight_ceiling)
.orderWeight(order_weight)
.packageType(package_type)
.packageNum(package_num)
.paperType(paper_type)
.needPaperLength(need_paper_length)
.rollingType(rolling_type)
.packageRequest(package_request)
.requestMachine(request_machine)
.inputTime(DateUtil.now())
.build();
orderbominfoService.save(bom_info);
} else {
orderbominfo.setProductName(product_name);
orderbominfo.setDescription(description);
orderbominfo.setCarrierName(carrier_name);
orderbominfo.setCarrierDescription(carrier_description);
orderbominfo.setType(type);
orderbominfo.setLevel(level);
orderbominfo.setThickness(thickness);
orderbominfo.setLengthFloor(length_floor);
orderbominfo.setLengthCeiling(length_ceiling);
orderbominfo.setWeightFloor(weight_floor);
orderbominfo.setWeightCeiling(weight_ceiling);
orderbominfo.setOrderWeight(order_weight);
orderbominfo.setPackageType(package_type);
orderbominfo.setPackageNum(package_num);
orderbominfo.setPaperType(paper_type);
orderbominfo.setNeedPaperLength(need_paper_length);
orderbominfo.setRollingType(rolling_type);
orderbominfo.setPackageRequest(package_request);
orderbominfo.setRequestMachine(request_machine);
orderbominfoService.updateById(orderbominfo);
}
resultParam.put("RTYPE", "S");
resultParam.put("RTMSG", "操作成功!");
resultParam.put("RTOAL", 1);
resultParam.put("RTDAT", null);
} catch (Exception e) {
resultParam.put("RTYPE", "E");
resultParam.put("RTMSG", "操作失败!" + e.getMessage());
resultParam.put("RTOAL", 0);
resultParam.put("RTDAT", null);
}
log.info("changeBomInfo输出参数为-------------------" + resultParam.toString());
return resultParam;
}
}

View File

@@ -162,7 +162,7 @@ public class ProductInstorServiceImpl implements ProductInstorService {
//判断明细数组中箱号与扫码的箱子是否一致,不一致让客户重新扫码
if (ObjectUtil.isNotEmpty(package_box_sn)) {
if (!box_no.equals(package_box_sn)) {
throw new BadRequestException("扫码箱号:"+box_no+"与明细数据中箱号:"+package_box_sn+"不一致,请重新扫码操作!");
throw new BadRequestException("扫码箱号:" + box_no + "与明细数据中箱号:" + package_box_sn + "不一致,请重新扫码操作!");
}
}
for (int i = 0; i < box_rows.size(); i++) {
@@ -216,36 +216,39 @@ public class ProductInstorServiceImpl implements ProductInstorService {
double box_weight = sub_jo.getDoubleValue("box_weight");
// 木箱实称重重量
double real_weight = sub_jo.getDoubleValue("real_weight");
if (ObjectUtil.isEmpty(sub_jo.getString("real_weight"))) {
throw new BadRequestException("请先进行木箱称重校验!");
//一楼是否异常
String one_exc_param = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("one_exc_param").getValue();
if (!"1".equals(one_exc_param)) {
if (ObjectUtil.isEmpty(sub_jo.getString("real_weight"))) {
throw new BadRequestException("请先进行木箱称重校验!");
}
}
// 判断木箱毛重是否超标
if (NumberUtil.sub(box_weight, weight_sys) <= real_weight && NumberUtil.add(box_weight, weight_sys) >= real_weight) {
} else {
//调用ACS让对应蜂鸣器报警
JSONObject param = new JSONObject();
param.put("code", "to_command");
param.put("product_area", "LK");
param.put("value", "99");
param.put("device_code", point_code);
JSONArray rows = new JSONArray();
rows.add(param);
WmsToAcsService wmsToAcsService = SpringContextHolder.getBean(WmsToAcsService.class);
wmsToAcsService.action(rows);
if (!"1".equals(one_exc_param)) {
//调用ACS让对应蜂鸣器报警
JSONObject param = new JSONObject();
param.put("code", "to_command");
param.put("product_area", "LK");
param.put("value", "99");
param.put("device_code", point_code);
JSONArray rows = new JSONArray();
rows.add(param);
WmsToAcsService wmsToAcsService = SpringContextHolder.getBean(WmsToAcsService.class);
wmsToAcsService.action(rows);
//判断is_pass是否为空如果为空则通知飞书不为空判断为0则不允许通过为1则允许
if (ObjectUtil.isEmpty(sub_jo.getString("is_pass")) || sub_jo.getString("is_pass").equals(IOSEnum.IS_NOTANDYES.code("")) ) {
// 通知飞书
notifyMes(sub_jo);
throw new BadRequestException("重量不合格!系统重量浮动超过" + weight_sys + "KG,当前木箱称重重量:" + real_weight + ",已通知飞书处理!");
} else {
if (sub_jo.getString("is_pass").equals(IOSEnum.IS_NOTANDYES.code(""))) {
throw new BadRequestException("请等待放行!");
//判断is_pass是否为空如果为空则通知飞书不为空判断为0则不允许通过为1则允许
if (ObjectUtil.isEmpty(sub_jo.getString("is_pass")) || sub_jo.getString("is_pass").equals(IOSEnum.IS_NOTANDYES.code(""))) {
// 通知飞书
notifyMes(sub_jo);
throw new BadRequestException("重量不合格!系统重量浮动超过" + weight_sys + "KG,当前木箱称重重量:" + real_weight + ",已通知飞书处理!");
} else {
if (sub_jo.getString("is_pass").equals(IOSEnum.IS_NOTANDYES.code(""))) {
throw new BadRequestException("请等待放行!");
}
}
}
}
//判断是该包装计划是否存在长宽高
@@ -371,7 +374,9 @@ public class ProductInstorServiceImpl implements ProductInstorService {
form.put("vehicle_code", box_no);
form.put("task_type", "010507");
cutConveyorTask.createTask(form);
if (!"1".equals(one_exc_param)) {
cutConveyorTask.createTask(form);
}
} else {
/*
* 如果有实际重量则需要判断重量是否超标
@@ -413,13 +418,13 @@ public class ProductInstorServiceImpl implements ProductInstorService {
.uniqueResult(0);
if ("XN01".equals(jsonObject.getString("sect_code"))) {
whereJson.put("sect_id","1712667908095741952");
whereJson.put("sect_id", "1712667908095741952");
}
if ("XN02".equals(jsonObject.getString("sect_code"))) {
whereJson.put("sect_id","1760184056861036544");
whereJson.put("sect_id", "1760184056861036544");
}
if ("TH01".equals(jsonObject.getString("sect_code"))) {
whereJson.put("sect_id","1760183817781514240");
whereJson.put("sect_id", "1760183817781514240");
}
}
@@ -686,7 +691,7 @@ public class ProductInstorServiceImpl implements ProductInstorService {
JSONObject data = jsonObject.getJSONArray("data").getJSONObject(0);
double weight_now = NumberUtil.div(data.getDoubleValue("weight"), 10);
if (data.getDoubleValue("weight") <= 0) {
throw new BadRequestException("当前称重重量有误,请检查!当前称重重量为【"+weight_now+"");
throw new BadRequestException("当前称重重量有误,请检查!当前称重重量为【" + weight_now + "");
}
// 获取系统参数1

View File

@@ -3146,7 +3146,8 @@ public class CheckOutBillServiceImpl implements CheckOutBillService {
+ "' and row_num = '" + jsonRow.getString("row_num") + "' and is_used = '1' and is_delete = '0' and lock_type not in ('1','6','3')").getResultJSONArray(0);
if (ObjectUtil.isNotEmpty(structArr)) {
throw new BadRequestException("有其他任务正在执行中,请稍后在试!");
JSONObject jsonObject = structArr.getJSONObject(0);
throw new BadRequestException("当前排存在单据号为【"+jsonObject.getString("inv_code")+"】的仓位【"+jsonObject.getString("struct_code")+"】正在执行任务,请稍后在试!");
}
}

View File

@@ -407,6 +407,8 @@ public class OutBillQueryServiceImpl implements OutBillQueryService {
mp.put("物流公司", json.getString("cust_name"));
mp.put("运费", json.getString("estimated_freight"));
mp.put("木箱号", json.getString("box_no"));
mp.put("木箱编码", json.getString("box_material_code"));
mp.put("木箱描述", json.getString("box_material_name"));
mp.put("物料编码", json.getString("material_code"));
mp.put("物料名称", json.getString("material_name"));
mp.put("子卷号", json.getString("pcsn"));

View File

@@ -266,6 +266,8 @@
base.cust_name,
dis.sect_name,
dis.box_no,
sub.box_type box_material_code,
mmm.material_name box_material_name,
dis.qty_unit_name,
mater.material_code,
mater.material_name,
@@ -327,6 +329,7 @@
record.bill_code,
record.container_name,
record.package_box_sn,
record.box_type,
record.sap_pcsn,
max(record.customer_name) as customer_name,
max(record.customer_description) as customer_description,
@@ -350,7 +353,9 @@
record.bill_code,
record.container_name,
record.sap_pcsn,
record.package_box_sn) sub ON (sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no AND sub.bill_id = mst.iostorinv_id)
record.package_box_sn,
record.box_type) sub ON (sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no AND sub.bill_id = mst.iostorinv_id)
LEFT JOIN md_me_materialbase mmm ON sub.box_type = mmm.material_code
LEFT JOIN md_cs_customerbase cust ON cust.cust_code = sub.customer_name
LEFT JOIN (SELECT
container_name,
@@ -385,6 +390,8 @@
base.cust_name,
dis.sect_name,
dis.box_no,
sub.box_type box_material_code,
mmm.material_name box_material_name,
dis.qty_unit_name,
mater.material_code,
mater.material_name,
@@ -446,6 +453,7 @@
record.bill_code,
record.container_name,
record.package_box_sn,
record.box_type,
record.sap_pcsn,
max(record.customer_name) as customer_name,
max(record.customer_description) as customer_description,
@@ -469,7 +477,9 @@
record.bill_code,
record.container_name,
record.sap_pcsn,
record.package_box_sn) sub ON (sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no AND sub.bill_id = mst.iostorinv_id)
record.package_box_sn,
record.box_type) sub ON (sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no AND sub.bill_id = mst.iostorinv_id)
LEFT JOIN md_me_materialbase mmm ON sub.box_type = mmm.material_code
LEFT JOIN md_cs_customerbase cust ON cust.cust_code = sub.customer_name
LEFT JOIN (SELECT
container_name,

View File

@@ -160,7 +160,7 @@
@change="crud.toQuery"
/>
</el-form-item>
<rrOperation :crud="crud" />
<rrOperation :crud="crud"/>
</el-form>
</div>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
@@ -189,144 +189,167 @@
<el-row>
<el-col :span="12">
<el-form-item label="木箱唯一码" prop="package_box_sn">
<el-input v-model="form.package_box_sn" :disabled="crud.status.edit > 0 && form.status !== '0'" style="width: 300px;" />
<el-input v-model="form.package_box_sn" :disabled="crud.status.edit > 0 && form.status !== '0'"
style="width: 300px;"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="箱内子卷数量">
<el-input v-model="form.quanlity_in_box" :disabled="crud.status.edit > 0 && form.status !== '0'" style="width: 300px;" />
<el-input v-model="form.quanlity_in_box" :disabled="crud.status.edit > 0 && form.status !== '0'"
style="width: 300px;"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="木箱自身重量">
<el-input v-model="form.box_weight" :disabled="crud.status.edit > 0 && form.status !== '0'" style="width: 300px;" />
<el-input v-model="form.box_weight" :disabled="crud.status.edit > 0 && form.status !== '0'"
style="width: 300px;"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="木箱实际重量">
<el-input v-model="form.real_weight" style="width: 300px;" />
<el-input v-model="form.real_weight" style="width: 300px;"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="客户编码" prop="customer_name">
<el-input v-model="form.customer_name" :disabled="crud.status.edit > 0 && form.status !== '0'" style="width: 300px;" />
<el-input v-model="form.customer_name" :disabled="crud.status.edit > 0 && form.status !== '0'"
style="width: 300px;"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="客户名称" prop="customer_description">
<el-input v-model="form.customer_description" :disabled="crud.status.edit > 0 && form.status !== '0'" style="width: 300px;" />
<el-input v-model="form.customer_description" :disabled="crud.status.edit > 0 && form.status !== '0'"
style="width: 300px;"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="产品编码" prop="product_name">
<el-input v-model="form.product_name" :disabled="crud.status.edit > 0 && form.status !== '0'" style="width: 300px;" />
<el-input v-model="form.product_name" :disabled="crud.status.edit > 0 && form.status !== '0'"
style="width: 300px;"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="产品描述" prop="product_description">
<el-input v-model="form.product_description" :disabled="crud.status.edit > 0 && form.status !== '0'" style="width: 300px;" />
<el-input v-model="form.product_description" :disabled="crud.status.edit > 0 && form.status !== '0'"
style="width: 300px;"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="业务日期">
<el-input v-model="form.date_of_fg_inbound" :disabled="crud.status.edit > 0 && form.status !== '0'" style="width: 300px;" />
<el-input v-model="form.date_of_fg_inbound" :disabled="crud.status.edit > 0 && form.status !== '0'"
style="width: 300px;"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="子卷号" prop="container_name">
<el-input v-model="form.container_name" :disabled="crud.status.edit > 0 && form.status !== '0'" style="width: 300px;" />
<el-input v-model="form.container_name" :disabled="crud.status.edit > 0 && form.status !== '0'"
style="width: 300px;"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="产品规格(幅宽)" prop="width">
<el-input v-model="form.width" :disabled="crud.status.edit > 0 && form.status !== '0'" style="width: 300px;" />
<el-input v-model="form.width" :disabled="crud.status.edit > 0 && form.status !== '0'"
style="width: 300px;"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="产品厚度" prop="thickness">
<el-input v-model="form.thickness" :disabled="crud.status.edit > 0 && form.status !== '0'" style="width: 300px;" />
<el-input v-model="form.thickness" :disabled="crud.status.edit > 0 && form.status !== '0'"
style="width: 300px;"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="单位面积质量" prop="mass_per_unit_area">
<el-input v-model="form.mass_per_unit_area" :disabled="crud.status.edit > 0 && form.status !== '0'" style="width: 300px;" />
<el-input v-model="form.mass_per_unit_area" :disabled="crud.status.edit > 0 && form.status !== '0'"
style="width: 300px;"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="净重" prop="net_weight">
<el-input v-model="form.net_weight" :disabled="crud.status.edit > 0 && form.status !== '0'" style="width: 300px;" />
<el-input v-model="form.net_weight" :disabled="crud.status.edit > 0 && form.status !== '0'"
style="width: 300px;"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="长度" prop="length">
<el-input v-model="form.length" :disabled="crud.status.edit > 0 && form.status !== '0'" style="width: 300px;" />
<el-input v-model="form.length" :disabled="crud.status.edit > 0 && form.status !== '0'"
style="width: 300px;"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="制造完成日期" prop="date_of_production">
<el-input v-model="form.date_of_production" :disabled="crud.status.edit > 0 && form.status !== '0'" style="width: 300px;" />
<el-input v-model="form.date_of_production" :disabled="crud.status.edit > 0 && form.status !== '0'"
style="width: 300px;"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="计划外分切的子卷" prop="is_un_plan_production">
<el-input v-model="form.is_un_plan_production" :disabled="crud.status.edit > 0 && form.status !== '0'" style="width: 300px;" />
<el-input v-model="form.is_un_plan_production" :disabled="crud.status.edit > 0 && form.status !== '0'"
style="width: 300px;"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="子卷的物性值1">
<el-input v-model="form.un_plan_product_property1" :disabled="crud.status.edit > 0 && form.status !== '0'" style="width: 300px;" />
<el-input v-model="form.un_plan_product_property1"
:disabled="crud.status.edit > 0 && form.status !== '0'" style="width: 300px;"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="子卷的物性值2">
<el-input v-model="form.un_plan_product_property2" :disabled="crud.status.edit > 0 && form.status !== '0'" style="width: 300px;" />
<el-input v-model="form.un_plan_product_property2"
:disabled="crud.status.edit > 0 && form.status !== '0'" style="width: 300px;"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="子卷的物性值3">
<el-input v-model="form.un_plan_product_property3" :disabled="crud.status.edit > 0 && form.status !== '0'" style="width: 300px;" />
<el-input v-model="form.un_plan_product_property3"
:disabled="crud.status.edit > 0 && form.status !== '0'" style="width: 300px;"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="木箱料号">
<el-input v-model="form.box_type" :disabled="crud.status.edit > 0 && form.status !== '0'" style="width: 300px;" />
<el-input v-model="form.box_type" :disabled="crud.status.edit > 0 && form.status !== '0'"
style="width: 300px;"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="SAP批次" prop="sap_pcsn">
<el-input v-model="form.sap_pcsn" :disabled="crud.status.edit > 0 && form.status !== '0'" style="width: 300px;" />
<el-input v-model="form.sap_pcsn" :disabled="crud.status.edit > 0 && form.status !== '0'"
style="width: 300px;"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="是否重打外包装标签">
<el-input v-model="form.isreprintpackageboxlabel" :disabled="crud.status.edit > 0 && form.status !== '0'" style="width: 300px;" />
<el-input v-model="form.isreprintpackageboxlabel"
:disabled="crud.status.edit > 0 && form.status !== '0'" style="width: 300px;"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否拆包重打子卷标签">
<el-input v-model="form.isunpackbox" :disabled="crud.status.edit > 0 && form.status !== '0'" style="width: 300px;" />
<el-input v-model="form.isunpackbox" :disabled="crud.status.edit > 0 && form.status !== '0'"
style="width: 300px;"/>
</el-form-item>
</el-col>
</el-row>
@@ -371,33 +394,38 @@
</el-col>
<el-col :span="12">
<el-form-item label="销售订单及行号" prop="sale_order_name">
<el-input v-model="form.sale_order_name" :disabled="crud.status.edit > 0 && form.status !== '0'" style="width: 300px;" />
<el-input v-model="form.sale_order_name" :disabled="crud.status.edit > 0 && form.status !== '0'"
style="width: 300px;"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="物料主数据厚度" prop="thickness_request">
<el-input v-model="form.thickness_request" :disabled="crud.status.edit > 0 && form.status !== '0'" :controls="false" style="width: 300px;" />
<el-input v-model="form.thickness_request" :disabled="crud.status.edit > 0 && form.status !== '0'"
:controls="false" style="width: 300px;"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="要求幅宽" prop="width_standard">
<el-input v-model="form.width_standard" :disabled="crud.status.edit > 0 && form.status !== '0'" style="width: 300px;" />
<el-input v-model="form.width_standard" :disabled="crud.status.edit > 0 && form.status !== '0'"
style="width: 300px;"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="保质期">
<el-input v-model="form.quality_guaran_period" :disabled="crud.status.edit > 0 && form.status !== '0'" style="width: 300px;" />
<el-input v-model="form.quality_guaran_period" :disabled="crud.status.edit > 0 && form.status !== '0'"
style="width: 300px;"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="备注">
<el-input v-model="form.remark" type="textarea" :rows="2" :disabled="crud.status.edit > 0 && form.status !== '0'" style="width: 750px;" />
<el-input v-model="form.remark" type="textarea" :rows="2"
:disabled="crud.status.edit > 0 && form.status !== '0'" style="width: 750px;"/>
</el-form-item>
</el-col>
</el-row>
@@ -417,7 +445,7 @@
size="mini"
@selection-change="crud.selectionChangeHandler"
>
<el-table-column type="selection" />
<el-table-column type="selection"/>
<el-table-column
sortable
prop="package_box_sn"
@@ -429,7 +457,8 @@
label="箱内子卷数量"
:min-width="flexWidth('quanlity_in_box',crud.data,'箱内子卷数量')"
/>
<el-table-column prop="customer_name" label="客户编码" :min-width="flexWidth('customer_name',crud.data,'客户编码')" />
<el-table-column prop="customer_name" label="客户编码"
:min-width="flexWidth('customer_name',crud.data,'客户编码')"/>
<el-table-column
prop="customer_description"
label="客户名称"
@@ -446,16 +475,20 @@
label="子卷号"
:min-width="flexWidth('container_name',crud.data,'子卷号')"
/>
<el-table-column prop="product_name" label="产品编码" :min-width="flexWidth('product_name',crud.data,'产品描述')" />
<el-table-column prop="product_name" label="产品编码"
:min-width="flexWidth('product_name',crud.data,'产品描述')"/>
<el-table-column
prop="product_description"
label="产品描述"
:min-width="flexWidth('product_description',crud.data,'产品描述')"
/>
<el-table-column sortable prop="sap_pcsn" label="sap批次" :min-width="flexWidth('sap_pcsn',crud.data,'SAP批次')" />
<el-table-column prop="width" label="产品规格(幅宽)" :min-width="flexWidth('width',crud.data,'产品规格(幅宽)')" />
<el-table-column prop="width_standard" :formatter="crud.formatNum0" label="客户要求幅宽" :min-width="flexWidth('width_standard',crud.data,'客户要求幅宽')" />
<el-table-column prop="thickness" label="产品厚度" :min-width="flexWidth('thickness',crud.data,'产品厚度')" />
<el-table-column sortable prop="sap_pcsn" label="sap批次"
:min-width="flexWidth('sap_pcsn',crud.data,'SAP批次')"/>
<el-table-column prop="width" label="产品规格(幅宽)"
:min-width="flexWidth('width',crud.data,'产品规格(幅宽)')"/>
<el-table-column prop="width_standard" :formatter="crud.formatNum0" label="客户要求幅宽"
:min-width="flexWidth('width_standard',crud.data,'客户要求幅宽')"/>
<el-table-column prop="thickness" label="产品厚度" :min-width="flexWidth('thickness',crud.data,'产品厚度')"/>
<el-table-column
prop="mass_per_unit_area"
label="单位面积质量"
@@ -529,16 +562,19 @@
label="子卷的物性值3"
:min-width="flexWidth('un_plan_product_property3',crud.data,'子卷的物性值3')"
/>
<el-table-column prop="box_type" label="木箱料号" :min-width="flexWidth('box_type',crud.data,'木箱料号')" />
<el-table-column prop="box_length" label="" :min-width="flexWidth('box_length',crud.data,'长')" />
<el-table-column prop="box_width" label="" :min-width="flexWidth('box_width',crud.data,'宽')" />
<el-table-column prop="box_high" label="" :min-width="flexWidth('box_high',crud.data,'高')" />
<el-table-column prop="demand_limit" label="客户需求抗拉下限" :min-width="flexWidth('demand_limit',crud.data,'客户需求抗拉下限')" />
<el-table-column prop="standard_limit" label="内控标准抗拉下限" :min-width="flexWidth('standard_limit',crud.data,'内控标准抗拉下限')" />
<el-table-column prop="actual_value" label="生产实际抗拉值" :min-width="flexWidth('actual_value',crud.data,'生产实际抗拉值')" />
<el-table-column prop="remark" label="备注" :min-width="flexWidth('remark',crud.data,'备注')" />
<el-table-column prop="vbeln" label="来源交货单" :min-width="flexWidth('vbeln',crud.data,'来源交货单')" />
<el-table-column prop="posnr" label="来源交货单行" :min-width="flexWidth('posnr',crud.data,'来源交货单行')" />
<el-table-column prop="box_type" label="木箱料号" :min-width="flexWidth('box_type',crud.data,'木箱料号')"/>
<el-table-column prop="box_length" label="" :min-width="flexWidth('box_length',crud.data,'长')"/>
<el-table-column prop="box_width" label="" :min-width="flexWidth('box_width',crud.data,'宽')"/>
<el-table-column prop="box_high" label="" :min-width="flexWidth('box_high',crud.data,'高')"/>
<el-table-column prop="demand_limit" label="客户需求抗拉下限"
:min-width="flexWidth('demand_limit',crud.data,'客户需求抗拉下限')"/>
<el-table-column prop="standard_limit" label="内控标准抗拉下限"
:min-width="flexWidth('standard_limit',crud.data,'内控标准抗拉下限')"/>
<el-table-column prop="actual_value" label="生产实际抗拉值"
:min-width="flexWidth('actual_value',crud.data,'生产实际抗拉值')"/>
<el-table-column prop="remark" label="备注" :min-width="flexWidth('remark',crud.data,'备注')"/>
<el-table-column prop="vbeln" label="来源交货单" :min-width="flexWidth('vbeln',crud.data,'来源交货单')"/>
<el-table-column prop="posnr" label="来源交货单行" :min-width="flexWidth('posnr',crud.data,'来源交货单行')"/>
<el-table-column
prop="sale_order_description"
label="销售订单描述"
@@ -562,8 +598,9 @@
{{ dict.label.IS_OR_NOT[scope.row.isunpackbox] }}
</template>
</el-table-column>
<el-table-column prop="create_name" label="创建人" :min-width="flexWidth('create_name',crud.data,'创建人')" />
<el-table-column prop="create_time" label="创建时间" :min-width="flexWidth('create_time',crud.data,'创建时间')" />
<el-table-column prop="create_name" label="创建人" :min-width="flexWidth('create_name',crud.data,'创建人')"/>
<el-table-column prop="create_time" label="创建时间"
:min-width="flexWidth('create_time',crud.data,'创建时间')"/>
<el-table-column
v-permission="['admin','sub:edit','sub:del']"
label="操作"
@@ -581,20 +618,20 @@
</el-table-column>
</el-table>
<!--分页组件-->
<pagination />
<pagination/>
</div>
</div>
</template>
<script>
import crudSubpackagerelation from './subpackagerelation'
import CRUD, { crud, form, header, presenter } from '@crud/crud'
import CRUD, {crud, form, header, presenter} from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination'
import { download } from '@/api/data'
import { downloadFile } from '@/utils'
import {download} from '@/api/data'
import {downloadFile} from '@/utils'
import crudUserStor from "@/views/wms/basedata/st/userStor/userStor";
const defaultForm = {
@@ -636,16 +673,16 @@ const defaultForm = {
export default {
name: 'Subpackagerelation',
dicts: ['sub_package_relation', 'IS_OR_NOT'],
components: { pagination, crudOperation, rrOperation, udOperation },
components: {pagination, crudOperation, rrOperation, udOperation},
mixins: [presenter(), header(), form(defaultForm), crud()],
cruds() {
return CRUD({
title: '子卷包装关系',
optShow: { add: true, edit: false, del: false },
optShow: {add: true, edit: false, del: false},
url: 'api/subpackagerelation',
idField: 'workorder_id',
sort: 'workorder_id,desc',
crudMethod: { ...crudSubpackagerelation }
crudMethod: {...crudSubpackagerelation}
})
},
data() {
@@ -657,76 +694,76 @@ export default {
},
showDtlLoading: false,
isPlanProducList: [
{ 'label': '是', 'value': '1' },
{ 'label': '否', 'value': '0' }
{'label': '是', 'value': '1'},
{'label': '否', 'value': '0'}
],
typeList: [
{ 'label': '是', 'value': '1' },
{ 'label': '否', 'value': '0' }
{'label': '是', 'value': '1'},
{'label': '否', 'value': '0'}
],
rules: {
customer_description: [
{ required: true, message: '客户名称不能为空', trigger: 'blur' }
{required: true, message: '客户名称不能为空', trigger: 'blur'}
],
customer_name: [
{ required: true, message: '客户编码不能为空', trigger: 'blur' }
{required: true, message: '客户编码不能为空', trigger: 'blur'}
],
package_box_sn: [
{ required: true, message: '木箱唯一码不能为空', trigger: 'blur' }
{required: true, message: '木箱唯一码不能为空', trigger: 'blur'}
],
product_name: [
{ required: true, message: '产品编码不能为空', trigger: 'blur' }
{required: true, message: '产品编码不能为空', trigger: 'blur'}
],
product_description: [
{ required: true, message: '产品描述不能为空', trigger: 'blur' }
{required: true, message: '产品描述不能为空', trigger: 'blur'}
],
container_name: [
{ required: true, message: '子卷号不能为空', trigger: 'blur' }
{required: true, message: '子卷号不能为空', trigger: 'blur'}
],
width: [
{ required: true, message: '产品规格(幅宽)不能为空', trigger: 'blur' }
{required: true, message: '产品规格(幅宽)不能为空', trigger: 'blur'}
],
thickness: [
{ required: true, message: '产品厚度不能为空', trigger: 'blur' }
{required: true, message: '产品厚度不能为空', trigger: 'blur'}
],
mass_per_unit_area: [
{ required: true, message: '单位面积质量不能为空', trigger: 'blur' }
{required: true, message: '单位面积质量不能为空', trigger: 'blur'}
],
net_weight: [
{ required: true, message: '净重不能为空', trigger: 'blur' }
{required: true, message: '净重不能为空', trigger: 'blur'}
],
length: [
{ required: true, message: '长度不能为空', trigger: 'blur' }
{required: true, message: '长度不能为空', trigger: 'blur'}
],
date_of_production: [
{ required: true, message: '制造完成日期不能为空', trigger: 'blur' }
{required: true, message: '制造完成日期不能为空', trigger: 'blur'}
],
sale_order_name: [
{ required: true, message: '销售订单及行号不能为空', trigger: 'blur' }
{required: true, message: '销售订单及行号不能为空', trigger: 'blur'}
],
width_standard: [
{ required: true, message: '要求幅宽不能为空', trigger: 'blur' }
{required: true, message: '要求幅宽不能为空', trigger: 'blur'}
],
thickness_request: [
{ required: true, message: '物流主数据厚度不能为空', trigger: 'blur' }
{required: true, message: '物流主数据厚度不能为空', trigger: 'blur'}
],
box_length: [
{ required: true, message: '长不能为空', trigger: 'blur' }
{required: true, message: '长不能为空', trigger: 'blur'}
],
box_width: [
{ required: true, message: '宽不能为空', trigger: 'blur' }
{required: true, message: '宽不能为空', trigger: 'blur'}
],
box_high: [
{ required: true, message: '高不能为空', trigger: 'blur' }
{required: true, message: '高不能为空', trigger: 'blur'}
],
sap_pcsn: [
{ required: true, message: 'SAP批次不能为空', trigger: 'blur' }
{required: true, message: 'SAP批次不能为空', trigger: 'blur'}
],
is_un_plan_production: [
{ required: true, message: '计划外分切的子卷不能为空', trigger: 'blur' }
{required: true, message: '计划外分切的子卷不能为空', trigger: 'blur'}
],
status: [
{ required: true, message: '状态不能为空', trigger: 'blur' }
{required: true, message: '状态不能为空', trigger: 'blur'}
]
}
}
@@ -739,6 +776,10 @@ export default {
[CRUD.HOOK.beforeRefresh]() {
return true
},
[CRUD.HOOK.beforeSubmit](row) {
this.$delete(row.form, 'status')
return true
},
initQuery() {
const end = new Date()
const start = new Date()

View File

@@ -183,8 +183,8 @@
<el-checkbox v-if="mstrow.stor_id !== '1582991156504039455'" v-model="checked">是否异常出库</el-checkbox>
</el-form-item>
<el-form-item label="超期发货:" prop="is_overdue">
<el-radio v-model="rowmst.is_overdue" label="1" :disabled="rowmst.bill_status === '40'" @change="updataIsOverdue">不发超期</el-radio>
<el-radio v-model="rowmst.is_overdue" label="0" :disabled="rowmst.bill_status === '40'" @change="updataIsOverdue">发超期</el-radio>
<el-radio v-model="rowmst.is_overdue" label="0" :disabled="rowmst.bill_status === '40'" @change="updataIsOverdue">不发超期</el-radio>
<el-radio v-model="rowmst.is_overdue" label="1" :disabled="rowmst.bill_status === '40'" @change="updataIsOverdue">发超期</el-radio>
</el-form-item>
<!--<el-form-item label="超期数量:" prop="assign_qty" v-if="rowmst.is_overdue === '1'">
<el-input-number
@@ -596,6 +596,7 @@ export default {
this.loadingAlldiv = true
this.mstrow.cancel_type = '1'
checkoutbill.allCancel(this.mstrow).then(res => {
this.crud.notify('全部取消成功!', CRUD.NOTIFICATION_TYPE.INFO)
this.queryTableDtl()
this.updataIsOverdue()
this.loadingAlldiv = false

View File

@@ -118,6 +118,8 @@
<el-table-column show-overflow-tooltip prop="cust_name" label="物流公司" :min-width="flexWidth('cust_name',crud.data,'物流公司')" />
<el-table-column show-overflow-tooltip prop="estimatedd_freight" label="运费" :formatter="crud.formatNum2" :min-width="flexWidth('estimated_freight',crud.data,'运费')" />
<el-table-column show-overflow-tooltip prop="box_no" label="木箱号" :min-width="flexWidth('box_no',crud.data,'木箱号')" />
<el-table-column show-overflow-tooltip prop="box_material_code" label="木箱编码" :min-width="flexWidth('box_material_code',crud.data,'木箱编码')" />
<el-table-column show-overflow-tooltip prop="box_material_name" label="木箱描述" :min-width="flexWidth('box_material_name',crud.data,'木箱描述')" />
<el-table-column show-overflow-tooltip prop="material_code" label="物料编码" :min-width="flexWidth('material_code',crud.data,'物料编码')" />
<el-table-column show-overflow-tooltip prop="material_name" label="物料名称" :min-width="flexWidth('material_name',crud.data,'物料名称')" />
<el-table-column show-overflow-tooltip prop="pcsn" label="子卷号" :min-width="flexWidth('pcsn',crud.data,'子卷号')" />