Compare commits

...

2 Commits

  1. 17
      lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/rest/SlittingproductionplanController.java
  2. 5
      lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/IPdmBiSlittingproductionplanService.java
  3. 33
      lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/impl/PdmBiSlittingproductionplanServiceImpl.java
  4. 10
      lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/BakingController.java
  5. 7
      lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/RawFoilController.java
  6. 2
      lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/BakingService.java
  7. 2
      lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/RawFoilService.java
  8. 359
      lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java
  9. 21
      lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/FeedingServiceImpl.java
  10. 74
      lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilServiceImpl.java
  11. 7
      lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/PrintService.java
  12. 46
      lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/impl/PrintServiceImpl.java
  13. 1
      lms/nladmin-system/src/main/java/org/nl/wms/pdm/rawfoilworkorder/service/impl/CoolPointIvtServiceImpl.java
  14. 6
      lms/nladmin-system/src/main/java/org/nl/wms/pdm/rawfoilworkorder/service/impl/RawfoilWorkOrderServiceImpl.java
  15. 26
      lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/ST_IVT_HOTPOINTIVT.wql
  16. 120
      lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoInHotTask.java
  17. 4
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InCoolIvtTask.java
  18. 25
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InHotTask.java
  19. 4
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutHotTask.java
  20. 12
      lms/nladmin-ui/src/views/wms/pdm/order/rawfoilworkorder/index.vue
  21. 92
      lms/nladmin-ui/src/views/wms/pdm/order/slittingplan/AddDialog.vue
  22. 148
      lms/nladmin-ui/src/views/wms/pdm/order/slittingplan/index.vue
  23. 18
      lms/nladmin-ui/src/views/wms/pdm/order/slittingplan/slittingproductionplan.js

17
lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/rest/SlittingproductionplanController.java

@ -5,6 +5,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproductionplanService;
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan;
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dto.PdmBiSlittingproductionplanDto;
import org.nl.common.domain.query.PageQuery;
import org.nl.modules.logging.annotation.Log;
import org.nl.wms.pdm.rawfoilworkorder.service.dao.RawfoilWorkOrder;
@ -25,6 +26,13 @@ public class SlittingproductionplanController {
private final IPdmBiSlittingproductionplanService biSlittingproductionplanService;
@GetMapping("/getSlittingproductionplanDtl")
@Log("查询同一组明细计划")
//@SaCheckPermission("@el.check('slittingproductionplan:list')")
public ResponseEntity<Object> getSlittingproductionplanDtl(PdmBiSlittingproductionplanDto dto) {
return new ResponseEntity<>(biSlittingproductionplanService.getSlittingproductionplanDtl(dto), HttpStatus.OK);
}
@GetMapping
@Log("查询分切计划")
@ -107,9 +115,16 @@ public class SlittingproductionplanController {
}
@PostMapping("/print")
@Log("打印")
@Log("打印卷标")
public ResponseEntity<Object> print( @RequestBody List<PdmBiSlittingproductionplan> list){
biSlittingproductionplanService.print(list);
return new ResponseEntity<>(HttpStatus.CREATED);
}
@PostMapping("/print1")
@Log("打印管标")
public ResponseEntity<Object> print1( @RequestBody List<PdmBiSlittingproductionplan> list){
biSlittingproductionplanService.print1(list);
return new ResponseEntity<>(HttpStatus.CREATED);
}
}

5
lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/IPdmBiSlittingproductionplanService.java

@ -2,6 +2,7 @@ package org.nl.b_lms.pdm.bi.slittingproductionplan.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dto.PdmBiSlittingproductionplanDto;
import org.nl.b_lms.sch.tasks.slitter.mapper.dto.SlitterPlanDistinctDto;
import org.nl.common.domain.query.PageQuery;
import com.baomidou.mybatisplus.extension.service.IService;
@ -189,4 +190,8 @@ public interface IPdmBiSlittingproductionplanService extends IService<PdmBiSlitt
void compelFinish(JSONObject whereJson);
void print(List<PdmBiSlittingproductionplan> list);
List<PdmBiSlittingproductionplan> getSlittingproductionplanDtl(PdmBiSlittingproductionplanDto dto);
void print1(List<PdmBiSlittingproductionplan> list);
}

33
lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/impl/PdmBiSlittingproductionplanServiceImpl.java

@ -161,7 +161,7 @@ public class PdmBiSlittingproductionplanServiceImpl extends ServiceImpl<PdmBiSli
dto.setMfg_order_name("FQ" + TaskUtils.getDateTime("yyMMddHHmmss") + CodeUtil.getNewCode("SBGD_CODE"));
dto.setIs_call("0");
dto.setStart_time(DateUtil.now());
dto.setSale_order_name(IdUtil.getSnowflake(1, 1).nextId() + "");
dto.setSale_order_name(rows.get(i).getString("sale_order_name"));
dto.setStatus("01");
dto.setIs_delete("0");
dto.setIs_paper_ok("0");
@ -522,5 +522,36 @@ public class PdmBiSlittingproductionplanServiceImpl extends ServiceImpl<PdmBiSli
}
}
}
@Override
public void print1(List<PdmBiSlittingproductionplan> list) {
JSONObject print_info = WQLObject.getWQLObject("pdm_bi_printinfo").query("print_name = 'tube_tag'").uniqueResult(0);
for (int i = 0; i < list.size(); i++) {
PdmBiSlittingproductionplan pdmBiSlittingproductionplan = list.get(i);
JSONObject print_jo = new JSONObject();
print_jo.put("container_name", pdmBiSlittingproductionplan.getContainer_name());
if ("1".equals(pdmBiSlittingproductionplan.getPaper_tube_or_frp())) {
print_jo.put("paper_tube_or_frp", pdmBiSlittingproductionplan.getPaper_tube_model());
} else {
print_jo.put("paper_tube_or_frp", pdmBiSlittingproductionplan.getFRP_model());
}
print_jo.put("print_type", print_info.getString("print_id"));
new PrintServiceImpl().tube_print(print_jo);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Override
public List<PdmBiSlittingproductionplan> getSlittingproductionplanDtl(PdmBiSlittingproductionplanDto dto) {
List<PdmBiSlittingproductionplan> list = pdmBiSlittingproductionplanMapper.selectList(new LambdaQueryWrapper<PdmBiSlittingproductionplan>().eq(PdmBiSlittingproductionplan::getParent_container_name, dto.getParent_container_name())
.eq(PdmBiSlittingproductionplan::getSplit_group, dto.getSplit_group()));
return list;
}
}

10
lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/BakingController.java

@ -1,5 +1,6 @@
package org.nl.wms.pda.mps.rest;
import cn.dev33.satoken.annotation.SaIgnore;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -52,7 +53,7 @@ public class BakingController {
@PostMapping("/queryHotPoints")
@Log("烘烤区域母卷详情")
@SaIgnore
public ResponseEntity<Object> queryHotPoints(@RequestBody JSONObject whereJson) {
HttpContext ctx = new HttpContext("11");
ctx.setPage((String) (whereJson.get("page")));
@ -67,4 +68,11 @@ public class BakingController {
return new ResponseEntity<>(bakingService.inCoolOrOven(whereJson), HttpStatus.OK);
}
@PostMapping("/inHotByPoint")
@Log("定点入烘箱")
public ResponseEntity<Object> inHotByPoint(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(bakingService.inHotByPoint(whereJson), HttpStatus.OK);
}
}

7
lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/RawFoilController.java

@ -70,6 +70,13 @@ public class RawFoilController {
return new ResponseEntity<>(rawFoilService.scrollDowm(whereJson), HttpStatus.OK);
}
@PostMapping("/confirmWeight")
@Log("母卷重量维护")
public ResponseEntity<Object> confirmWeight(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(rawFoilService.confirmWeight(whereJson), HttpStatus.OK);
}
@PostMapping("/query")
@Log("查询冷却区生箔情况")

2
lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/BakingService.java

@ -35,4 +35,6 @@ public interface BakingService {
JSONObject inCoolOrOven(JSONObject whereJson);
JSONObject queryHotPoints(JSONObject whereJson, HttpContext ctx);
JSONObject inHotByPoint(JSONObject whereJson);
}

2
lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/RawFoilService.java

@ -56,4 +56,6 @@ public interface RawFoilService {
JSONObject scrollDowm(JSONObject whereJson);
JSONObject query(JSONObject whereJson, HttpContext ctx);
JSONObject confirmWeight(JSONObject whereJson);
}

359
lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java

@ -20,6 +20,7 @@ import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.modules.wql.core.content.HttpContext;
import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.modules.wql.util.WqlUtil;
import org.nl.system.service.param.ISysParamService;
import org.nl.wms.basedata.st.service.impl.UserAreaServiceImpl;
import org.nl.wms.ext.acs.service.impl.WmsToAcsServiceImpl;
import org.nl.wms.pda.mps.eum.RegionTypeEnum;
@ -47,6 +48,8 @@ public class BakingServiceImpl implements BakingService {
@Autowired
private RedisUtils redisUtils;
@Autowired
private ISysParamService paramService;
@Autowired
private CoolPointIvtMapper coolPointIvtMapper;
@Autowired
private RawfoilWorkOrderMapper rawfoilWorkOrderMapper;
@ -114,10 +117,12 @@ public class BakingServiceImpl implements BakingService {
throw new BadRequestException("未查询到母卷号:" + container_name + "对应的生箔机台编号!");
}
if (StrUtil.equals("1", sb_jo.getString("mes_used")) && !"1".equals(raw_jo.getString("is_baking"))) {
String mes_used = paramService.findByCode("mes_used").getValue();
if (StrUtil.equals("1", mes_used)) {
if (!"1".equals(raw_jo.getString("is_baking"))) {
throw new BadRequestException("该母卷在MES上未进行决策入烘箱,不允许进行入烘箱操作!");
}
}
if (ObjectUtil.isEmpty(container_name)) {
throw new BadRequestException("母卷号不能为空");
}
@ -134,7 +139,7 @@ public class BakingServiceImpl implements BakingService {
/*
* 根据点位判断是 冷却区入烘箱还是烘箱对接位入烘箱
*/
JSONObject jsonPointZc = pointTab.query("point_code = '" + point_code1 + "' AND point_type = '4'").uniqueResult(0);
JSONObject jsonPointZc = pointTab.query("point_code = '" + point_code1 + "' AND point_type = '5'").uniqueResult(0);
String point_type = "1";
// 冷却点
@ -242,25 +247,29 @@ public class BakingServiceImpl implements BakingService {
//只找入箱点位
map.put("point_type", "4");
String point_code2 = "";
JSONObject point_code2_jo = WQL.getWO("PDA_OVENINANDOUT_01").addParamMap(map).process().uniqueResult(0);
if (ObjectUtil.isEmpty(point_code2_jo)) {
throw new BadRequestException("未查询到可用的点位类型为入箱的烘箱对接位!");
if (ObjectUtil.isNotEmpty(point_code2_jo)) {
point_code2 = point_code2_jo.getString("point_code");
}
String point_code3 = "";
JSONObject jsonHotIvt = getJsonObject(product_area, point_code2_jo, temperature);
if (ObjectUtil.isEmpty(jsonHotIvt)) {
throw new BadRequestException("烘烤区没有合适温度的空位!");
if (ObjectUtil.isNotEmpty(jsonHotIvt)) {
point_code3 = jsonHotIvt.getString("point_code");
}
// 3.创建冷却区 --> 烘烤区任务
JSONObject param = new JSONObject();
param.put("type", "1"); // 1- 冷却区入烘箱 2- 暂存位入烘箱
param.put("point_code1", point_code1);
param.put("point_code2", point_code2_jo.getString("point_code"));
param.put("point_code3", jsonHotIvt.getString("point_code"));
param.put("point_code2", point_code2);
param.put("point_code3", point_code3);
param.put("material_code", container_name);
param.put("product_area", product_area);
param.put("request_param", NumberUtil.mul(Double.parseDouble(hours), 60));
param.put("temperature", temperature);
param.put("param", map);
// 创建冷却区 --> 暂存位的任务
InHotTask inHotTask = new InHotTask();
@ -316,7 +325,7 @@ public class BakingServiceImpl implements BakingService {
jsonCool.put("confirm_time", DateUtil.now());
coolTab.insert(jsonCool);
} else {
throw new BadRequestException("请扫描正确的冷却区点位或对接点位!");
throw new BadRequestException("请扫描正确的冷却区点位或烘箱对接点位!");
}
} else if (StrUtil.equals(option, "2")) {
// 出箱
@ -445,6 +454,283 @@ public class BakingServiceImpl implements BakingService {
return result;
}
@Override
@Transactional(rollbackFor = Exception.class)
public JSONObject inHotByPoint(JSONObject whereJson) {
WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point"); // 点位表
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表
WQLObject coolIvtTab = WQLObject.getWQLObject("ST_IVT_CoolPointIvt"); // 冷却区点位库存表
WQLObject hosIvtTab = WQLObject.getWQLObject("ST_IVT_HotPointIvt"); // 烤箱区点位库存表
WQLObject hosReMstTab = WQLObject.getWQLObject("ST_IVT_HotRegionIOMst"); // 烤箱区出入主表
WQLObject coolTab = WQLObject.getWQLObject("ST_IVT_CoolRegionIO"); // 冷却区出入表
WQLObject rawTab = WQLObject.getWQLObject("PDM_BI_RawFoilWorkOrder"); // 生箔工单表
WQLObject materTab = WQLObject.getWQLObject("md_me_materialbase"); // 物料表
//获取人员对应的区域
UserAreaServiceImpl userAreaService = new UserAreaServiceImpl();
String in_area_id = userAreaService.getInArea();
// 入箱
String container_name = whereJson.getString("container_name"); // 母卷号
String temperature = whereJson.getString("temperature"); // 温度
String hours = whereJson.getString("hours"); // 时间
String point_code1 = whereJson.getString("point_code"); // 起点
String point_code3 = whereJson.getString("next_point_code");//终点
if (ObjectUtil.isEmpty(container_name)) {
throw new BadRequestException("母卷号不能为空");
}
if (ObjectUtil.isEmpty(temperature)) {
throw new BadRequestException("温度不能为空");
}
if (ObjectUtil.isEmpty(hours)) {
throw new BadRequestException("时间不能为空");
}
if (ObjectUtil.isEmpty(point_code1)) {
throw new BadRequestException("起点不能为空");
}
if (ObjectUtil.isEmpty(point_code3)) {
throw new BadRequestException("终点不能为空");
}
//查询该点位是否存在未完成的任务
JSONObject task1 = isSingleTask(point_code1);
if (task1 != null) {
throw new BadRequestException("当前点位" + point_code1 + "存在正在执行的任务" + task1.getString("task_code"));
}
JSONObject task2 = isSingleTask(point_code3);
if (task2 != null) {
throw new BadRequestException("当前点位" + point_code3 + "存在正在执行的任务" + task2.getString("task_code"));
}
//校验该设备是否启用,且母卷MES是否请求烘烤
//查询该母卷号、设备号对应的生箔工单
JSONObject raw_jo = WQLObject.getWQLObject("PDM_BI_RawFoilWorkOrder").query("container_name ='" + container_name + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(raw_jo)) {
throw new BadRequestException("未查询到对应的生箔工单!");
}
if (raw_jo.getString("order_type").equals("1")) {
throw new BadRequestException("当前工单为标箔工单,不允许烘烤!");
}
String resource_name = raw_jo.getString("resource_name");
JSONObject sb_jo = WQLObject.getWQLObject("st_ivt_sbpointivt").query("ext_code ='" + resource_name + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(sb_jo)) {
throw new BadRequestException("未查询到母卷号:" + container_name + "对应的生箔机台编号!");
}
String mes_used = paramService.findByCode("mes_used").getValue();
if (StrUtil.equals("1", mes_used)) {
if (!"1".equals(raw_jo.getString("is_baking"))) {
throw new BadRequestException("该母卷在MES上未进行决策入烘箱,不允许进行入烘箱操作!");
}
}
/*
* 根据点位判断是 冷却区入烘箱还是烘箱对接位入烘箱
*/
JSONObject jsonPointZc = pointTab.query("point_code = '" + point_code1 + "' AND point_type = '5'").uniqueResult(0);
String point_type = "1";
// 冷却点
JSONObject jsonCoolIvt = coolIvtTab.query("full_point_code = '" + point_code1 + "' and is_used = '1' AND point_type = '" + point_type + "'").uniqueResult(0);
// CoolPointIvt coolPointIvt = coolPointIvtMapper.selectOne(new LambdaQueryWrapper<CoolPointIvt>()
// .eq(ObjectUtil.isNotEmpty(point_code1), CoolPointIvt::getPoint_code, point_code1));
if (ObjectUtil.isNotEmpty(jsonPointZc)) {
if (!in_area_id.contains(jsonPointZc.getString("product_area"))) {
throw new BadRequestException("当前登录人员暂无【" + jsonPointZc.getString("product_area") + "】操作权限");
}
/*
* 暂存区入烘箱
*/
JSONObject jsonHotIvt = hosIvtTab.query("point_code = '" + point_code3 + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(jsonHotIvt)) {
throw new BadRequestException("烘烤区域无此点位!");
}
if (!jsonPointZc.getString("point_location").equals(jsonHotIvt.getString("point_location"))) {
throw new BadRequestException("暂存位和烘烤区域点位位置不一致!请选择点位位置一致的烘箱位置或者暂存位");
}
boolean exists = redisUtils.hHasKey(point_code3, "temperature");
String point_temperature = "";
if (exists) {
point_temperature = (String) redisUtils.hget(point_code3, "temperature");
} else {
throw new BadRequestException("获取不到redis中" + point_code3 + "的温度");
}
if (ObjectUtil.isEmpty(point_temperature)) {
if (!point_temperature.equals(temperature)) {
throw new BadRequestException("请先调节指定烘箱的温度到" + temperature + ",再重新操作!");
}
}
// 2.创建暂存位 --> 烘烤区任务
JSONObject param = new JSONObject();
param.put("type", "2"); // 1- 冷却区入烘箱 2- 暂存位入烘箱
param.put("point_code1", point_code1);
param.put("point_code2", jsonHotIvt.getString("point_code"));
param.put("material_code", container_name);
param.put("product_area", jsonPointZc.getString("product_area"));
param.put("request_param", NumberUtil.mul(Double.parseDouble(hours), 60));
InHotTask inHotTask = new InHotTask();
String task_id = inHotTask.createTask(param);
// 3.插入主表
JSONObject jsonRaw = rawTab.query("container_name = '" + container_name + "' and is_delete = '0'").uniqueResult(0);
JSONObject jsonMater = materTab.query("material_code = '" + jsonRaw.getString("product_name") + "'").uniqueResult(0);
JSONObject hotParam = new JSONObject();
hotParam.put("container_name", container_name);
hotParam.put("workorder_id", jsonRaw.getString("workorder_id"));
hotParam.put("material_id", jsonMater.getString("material_id"));
hotParam.put("qty", jsonRaw.get("productin_qty"));
hotParam.put("io_type", "0");
hotParam.put("qty_unit_id", jsonMater.getString("base_unit_id"));
hotParam.put("task_id", task_id);
hotParam.put("start_point_code", point_code1);
hotParam.put("end_point_code", jsonHotIvt.getString("point_code"));
hotParam.put("temperature", temperature);
hotParam.put("oven_time", hours);
this.createHotIoMst(hotParam);
} else if (ObjectUtil.isNotEmpty(jsonCoolIvt)) {
/*
* 冷却区入烘箱
*/
// hint:
// 1.根据烘箱点位此母卷的点位找到对应的暂存区
JSONObject jsonHotIvt = hosIvtTab.query("point_code = '" + point_code3 + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(jsonHotIvt)) {
throw new BadRequestException("烘烤区域无此点位!");
}
boolean exists = redisUtils.hHasKey(point_code3, "temperature");
String point_temperature = "";
if (exists) {
point_temperature = (String) redisUtils.hget(point_code3, "temperature");
} else {
throw new BadRequestException("获取不到redis中" + point_code3 + "的温度");
}
if (ObjectUtil.isEmpty(point_temperature)) {
if (!point_temperature.equals(temperature)) {
throw new BadRequestException("请先调节指定烘箱的温度到" + temperature + ",再重新操作!");
}
}
String product_area = jsonHotIvt.getString("product_area"); // 生产区域
String point_location = jsonHotIvt.getString("point_location"); // 位置
String reging_id = "";
if (!in_area_id.contains(product_area)) {
throw new BadRequestException("当前登录人员暂无【" + product_area + "】操作权限");
}
switch (product_area) {
case "A1":
reging_id = RegionTypeEnum.A_HKZC.getId();
break;
case "A2":
reging_id = RegionTypeEnum.B_HKZC.getId();
break;
case "A3":
reging_id = RegionTypeEnum.C_HKZC.getId();
break;
case "A4":
reging_id = RegionTypeEnum.D_HKZC.getId();
break;
case "B2":
reging_id = RegionTypeEnum.B2_HKZC.getId();
break;
default:
break;
}
JSONObject map = new JSONObject();
map.put("flag", "1");
map.put("reging_id", reging_id);
map.put("point_location", point_location);
//只找入箱点位
map.put("point_type", "4");
JSONObject point_code2_jo = WQL.getWO("PDA_OVENINANDOUT_01").addParamMap(map).process().uniqueResult(0);
if (ObjectUtil.isEmpty(point_code2_jo)) {
throw new BadRequestException("未查询到可用的点位类型为入箱的冷却位对接位!");
}
// 3.创建冷却区 --> 烘烤区任务
JSONObject param = new JSONObject();
param.put("type", "1"); // 1- 冷却区入烘箱 2- 暂存位入烘箱
param.put("point_code1", point_code1);
param.put("point_code2", point_code2_jo.getString("point_code"));
param.put("point_code3", point_code3);
param.put("material_code", container_name);
param.put("product_area", product_area);
param.put("request_param", NumberUtil.mul(Double.parseDouble(hours), 60));
param.put("temperature", temperature);
param.put("param", map);
// 创建冷却区 --> 暂存位的任务
InHotTask inHotTask = new InHotTask();
String task_id = inHotTask.createTask(param);
// 4.插入烘箱区出入主表
JSONObject jsonRaw = rawTab.query("container_name = '" + container_name + "' and is_delete = '0'").uniqueResult(0);
JSONObject jsonMater = materTab.query("material_code = '" + jsonRaw.getString("product_name") + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(jsonMater)) {
throw new BadRequestException("物料基础信息中无此物料!");
}
JSONObject hotParam = new JSONObject();
hotParam.put("container_name", container_name);
hotParam.put("workorder_id", jsonRaw.getString("workorder_id"));
hotParam.put("material_id", jsonMater.getString("material_id"));
hotParam.put("qty", jsonRaw.get("productin_qty"));
hotParam.put("qty_unit_id", jsonMater.getString("base_unit_id"));
hotParam.put("task_id", task_id);
hotParam.put("io_type", "0");
hotParam.put("start_point_code", point_code1);
hotParam.put("end_point_code", jsonHotIvt.getString("point_code"));
hotParam.put("temperature", temperature);
hotParam.put("oven_time", hours);
this.createHotIoMst(hotParam);
// 生成冷却区出入表
String currentUserId = SecurityUtils.getCurrentUserId();
String currentUsername = SecurityUtils.getCurrentUsername();
JSONObject jsonCool = new JSONObject();
jsonCool.put("iostorinv_id", IdUtil.getSnowflake(1, 1).nextId());
jsonCool.put("bill_code", CodeUtil.getNewCode("COOLREGION_BILL_CODE"));
jsonCool.put("io_type", "1");
jsonCool.put("material_id", jsonMater.getString("material_id"));
jsonCool.put("pcsn", container_name);
jsonCool.put("bill_status", "50");
jsonCool.put("qty", jsonRaw.get("productin_qty"));
jsonCool.put("task_id", task_id);
jsonCool.put("qty_unit_id", jsonMater.getString("base_unit_id"));
jsonCool.put("start_point_code", point_code1);
jsonCool.put("end_point_code", jsonHotIvt.getString("point_code"));
jsonCool.put("create_mode", "03");
jsonCool.put("create_id", currentUserId);
jsonCool.put("create_name", currentUsername);
jsonCool.put("create_time", DateUtil.now());
jsonCool.put("update_optid", currentUserId);
jsonCool.put("update_optname", currentUsername);
jsonCool.put("update_time", DateUtil.now());
jsonCool.put("confirm_optid", currentUserId);
jsonCool.put("confirm_optname", currentUsername);
jsonCool.put("confirm_time", DateUtil.now());
coolTab.insert(jsonCool);
} else {
throw new BadRequestException("请扫描正确的冷却区点位或烘箱对接点位!");
}
JSONObject result = new JSONObject();
result.put("message", "操作成功!");
return result;
}
public JSONObject getJsonObject(String product_area, JSONObject point_code2_jo, String temperature) {
if (ObjectUtil.isEmpty(point_code2_jo)) {
throw new BadRequestException("烘箱对接没有可用位置!");
@ -510,9 +796,12 @@ public class BakingServiceImpl implements BakingService {
throw new BadRequestException("未查询到母卷号:" + container_name + "对应的生箔机台编号!");
}
if (StrUtil.equals("1", sb_jo.getString("mes_used")) && !"1".equals(raw_jo.getString("is_instor"))) {
String mes_used = paramService.findByCode("mes_used").getValue();
if (StrUtil.equals("1", mes_used)) {
if (!"1".equals(raw_jo.getString("is_instor"))) {
throw new BadRequestException("该母卷在MES上未进行决策入半成品库,不允许进行入冷却操作!");
}
}
// 1.获取此暂存位的生产区域和上下位置
JSONObject jsonPoint = pointTab.query("point_code = '" + point_code1 + "' and point_type = '5'").uniqueResult(0);
@ -776,9 +1065,12 @@ public class BakingServiceImpl implements BakingService {
throw new BadRequestException("未查询到母卷号:" + container_name + "对应的生箔机台编号!");
}
if (StrUtil.equals("1", sb_jo.getString("mes_used")) && !"1".equals(raw_jo.getString("is_baking"))) {
String mes_used = paramService.findByCode("mes_used").getValue();
if (StrUtil.equals("1", mes_used)) {
if (!"1".equals(raw_jo.getString("is_baking"))) {
throw new BadRequestException("该母卷在MES上未进行决策入烘箱,不允许进行入烘箱操作!");
}
}
if (ObjectUtil.isEmpty(container_name)) {
throw new BadRequestException("母卷号不能为空");
@ -861,7 +1153,7 @@ public class BakingServiceImpl implements BakingService {
hotParam.put("oven_time", hours);
this.createHotIoMst(hotParam);
} else {
throw new BadRequestException("请扫描点位类型为出箱的烘箱对接位!");
throw new BadRequestException("请选择点位类型为出箱的烘箱对接位上的母卷!");
}
} else if (StrUtil.equals(option, "1")) {
// 入冷却
@ -888,9 +1180,12 @@ public class BakingServiceImpl implements BakingService {
throw new BadRequestException("未查询到母卷号:" + container_name + "对应的生箔机台编号!");
}
if (StrUtil.equals("1", sb_jo.getString("mes_used")) && !"1".equals(raw_jo.getString("is_instor"))) {
String mes_used = paramService.findByCode("mes_used").getValue();
if (StrUtil.equals("1", mes_used)) {
if (!"1".equals(raw_jo.getString("is_instor"))) {
throw new BadRequestException("该母卷在MES上未进行决策入半成品库,不允许进行入冷却操作!");
}
}
// 1.获取此暂存位的生产区域和上下位置
JSONObject jsonPoint = pointTab.query("point_code = '" + point_code1 + "' and point_type = '5'").uniqueResult(0);
@ -993,16 +1288,30 @@ public class BakingServiceImpl implements BakingService {
}
JSONObject json = WQL.getWO("ST_IVT_HOTPOINTIVT").addParamMap(map).pageQuery(ctx, "container_name");
JSONArray rows = json.getJSONArray("content");
JSONArray new_rows = new JSONArray();
for (int i = 0; i < rows.size(); i++) {
JSONObject row = rows.getJSONObject(i);
String temperature = (String) redisUtils.hget(row.getString("point_code"), "temperature");
String last_time = (String) redisUtils.hget(row.getString("point_code"), "last_time");
row.put("temperature", temperature);
row.put("last_time", last_time);
new_rows.add(row);
}
json.put("content", new_rows);
return json;
JSONObject jo = new JSONObject();
jo.put("data", rows);
jo.put("size", json.getString("totalElements"));
jo.put("message", "查询成功!");
return jo;
}
public JSONObject isSingleTask(String point_code) {
JSONObject task1 = WQLObject.getWQLObject("SCH_BASE_Task").query("point_code1 = '" + point_code + "' AND task_status < '07' AND is_delete = '0'").uniqueResult(0);
JSONObject task2 = WQLObject.getWQLObject("SCH_BASE_Task").query("point_code2 = '" + point_code + "' AND task_status < '07' AND is_delete = '0'").uniqueResult(0);
JSONObject task3 = WQLObject.getWQLObject("SCH_BASE_Task").query("point_code3 = '" + point_code + "' AND task_status < '07' AND is_delete = '0'").uniqueResult(0);
JSONObject task4 = WQLObject.getWQLObject("SCH_BASE_Task").query("point_code4 = '" + point_code + "' AND task_status < '07' AND is_delete = '0'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(task1)) {
return task1;
} else if (ObjectUtil.isNotEmpty(task2)) {
return task2;
} else if (ObjectUtil.isNotEmpty(task3)) {
return task3;
} else if (ObjectUtil.isNotEmpty(task4)) {
return task4;
}
return null;
}
}

21
lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/FeedingServiceImpl.java

@ -101,19 +101,17 @@ public class FeedingServiceImpl implements FeedingService {
@Transactional(rollbackFor = Exception.class)
@Override
public JSONObject handleConfirm(JSONObject form) {
String point_code = form.getString("point_code");
String next_point_code = form.getString("next_point_code");
String container_name = form.getString("container_name");
if (StrUtil.isEmpty(point_code)) {
throw new BadRequestException("输入的起点不能为空!");
JSONObject json = form.getJSONObject("raw_jo");
String next_point_code = json.getString("point_code");
String container_name = json.getString("container_name");
JSONObject cut_jo = WQLObject.getWQLObject("st_ivt_cutpointivt").query("point_code = '" + next_point_code + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(cut_jo)) {
throw new BadRequestException("找不到分切机:" + next_point_code + "的点位!");
}
JSONObject cool_jo = WQLObject.getWQLObject("st_ivt_coolpointivt").query("full_point_code = '" + point_code + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(cool_jo)) {
cool_jo = WQLObject.getWQLObject("st_ivt_coolpointivt").query("point_code = '" + point_code + "'").uniqueResult(0);
}
JSONObject cool_jo = WQLObject.getWQLObject("st_ivt_coolpointivt").query("container_name = '" + container_name + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(cool_jo)) {
throw new BadRequestException("请输入或者扫描冷却区满轴位的点位做为起点!");
throw new BadRequestException("找不到母卷号:" + container_name + "的冷却区满轴位的点位!");
} else {
//获取人员对应的区域
UserAreaServiceImpl userAreaService = new UserAreaServiceImpl();
@ -122,6 +120,7 @@ public class FeedingServiceImpl implements FeedingService {
throw new BadRequestException("当前登录人员暂无【" + cool_jo.getString("product_area") + "】操作权限");
}
}
String point_code = cool_jo.getString("point_code");
if (!StrUtil.equals(cool_jo.getString("full_point_status"), "02")) {
throw new BadRequestException("该点位上不存在母卷!");
@ -132,8 +131,6 @@ public class FeedingServiceImpl implements FeedingService {
JSONObject result = new JSONObject();
result.put("message", "操作成功!");
JSONObject jo = new JSONObject();
//查询该分切机对应的点位
JSONObject cut_jo = WQLObject.getWQLObject("st_ivt_cutpointivt").query("full_point_code = '" + next_point_code + "'").uniqueResult(0);
if (StrUtil.isNotEmpty(cut_jo.getString("container_name")) || "02".equals(cut_jo.getString("full_point_status"))) {
throw new BadRequestException("该分切机对应的上料位存在母卷,不能下发搬运任务!");

74
lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilServiceImpl.java

@ -152,6 +152,7 @@ public class RawFoilServiceImpl implements RawFoilService {
JSONObject map = new JSONObject();
map.put("point_code", whereJson.getString("point_code"));
map.put("container_name", whereJson.getString("container_name"));
map.put("product_area", whereJson.getString("product_area"));
// //获取人员对应的区域
// UserAreaServiceImpl userAreaService = new UserAreaServiceImpl();
// String in_area_id = userAreaService.getInArea();
@ -320,6 +321,24 @@ public class RawFoilServiceImpl implements RawFoilService {
return jo;
}
@Override
public JSONObject confirmWeight(JSONObject whereJson) {
BigDecimal weight = whereJson.getBigDecimal("weight");
String container_name = whereJson.getString("container_name");
if (ObjectUtil.isEmpty(weight)){
throw new BadRequestException("请输入称重值!");
}
if (ObjectUtil.isEmpty(container_name)){
throw new BadRequestException("请输入母卷号!");
}
RawfoilWorkOrder rawfoilWorkOrder = rawfoilWorkOrderMapper.selectOne(new LambdaQueryWrapper<RawfoilWorkOrder>().eq(RawfoilWorkOrder::getContainer_name, container_name));
rawfoilWorkOrder.setProductin_qty(weight);
rawfoilWorkOrderMapper.updateById(rawfoilWorkOrder);
JSONObject jo = new JSONObject();
jo.put("message", "操作成功!");
return jo;
}
private void handleType1And3(JSONObject raw_jo, JSONObject param, String type) {
if (ObjectUtil.isEmpty(raw_jo)) {
throw new BadRequestException("生箔工单不能为空!");
@ -361,18 +380,19 @@ public class RawFoilServiceImpl implements RawFoilService {
CoolPointIvt jsonIvt;
//如果没找到则继续找下一节点
if (CollectionUtil.isEmpty(coolPointIvtList)) {
adjustPointLocation(map, stIvtSbpointivt);
coolPointIvtList = coolPointIvtMapper.queryCoolPointIvt(map);
if (CollectionUtil.isEmpty(coolPointIvtList)) {
throw new BadRequestException("未查询到合适的点位");
}
jsonIvt = coolPointIvtList.get(0);
if ("1".equals(type)) {
start_pint_code = jsonIvt.getEmpty_point_code();
point_code4 = jsonIvt.getFull_point_code();
} else {
next_pint_code = jsonIvt.getFull_point_code();
}
// adjustPointLocation(map, stIvtSbpointivt);
// coolPointIvtList = coolPointIvtMapper.queryCoolPointIvt(map);
// if (CollectionUtil.isEmpty(coolPointIvtList)) {
// throw new BadRequestException("未查询到合适的点位");
// }
// jsonIvt = coolPointIvtList.get(0);
// if ("1".equals(type)) {
// start_pint_code = jsonIvt.getEmpty_point_code();
// point_code4 = jsonIvt.getFull_point_code();
// } else {
// next_pint_code = jsonIvt.getFull_point_code();
// }
throw new BadRequestException("未查询到合适的冷却区点位");
} else {
jsonIvt = coolPointIvtList.get(0);
@ -426,13 +446,14 @@ public class RawFoilServiceImpl implements RawFoilService {
//如果没找到则继续找下一节点
CoolPointIvt jsonIvt;
if (ObjectUtil.isEmpty(coolPointIvtList)) {
adjustPointLocation(map, stIvtSbpointivt);
coolPointIvtList = coolPointIvtMapper.queryCoolPointIvt(map);
if (CollectionUtil.isEmpty(coolPointIvtList)) {
throw new BadRequestException("未查询到合适的点位");
}
jsonIvt = coolPointIvtList.get(0);
start_pint_code = jsonIvt.getEmpty_point_code();
// adjustPointLocation(map, stIvtSbpointivt);
// coolPointIvtList = coolPointIvtMapper.queryCoolPointIvt(map);
// if (CollectionUtil.isEmpty(coolPointIvtList)) {
// throw new BadRequestException("未查询到合适的点位");
// }
// jsonIvt = coolPointIvtList.get(0);
// start_pint_code = jsonIvt.getEmpty_point_code();
throw new BadRequestException("未查询到合适的冷却区点位");
} else {
jsonIvt = coolPointIvtList.get(0);
start_pint_code = jsonIvt.getEmpty_point_code();
@ -477,13 +498,14 @@ public class RawFoilServiceImpl implements RawFoilService {
CoolPointIvt jsonIvt;
//如果没找到则继续找下一节点
if (CollectionUtil.isEmpty(coolPointIvtList)) {
adjustPointLocation(map, stIvtSbpointivt);
coolPointIvtList = coolPointIvtMapper.queryCoolPointIvt(map);
if (CollectionUtil.isEmpty(coolPointIvtList)) {
throw new BadRequestException("未查询到合适的点位");
}
jsonIvt = coolPointIvtList.get(0);
next_pint_code = jsonIvt.getEmpty_point_code();
// adjustPointLocation(map, stIvtSbpointivt);
// coolPointIvtList = coolPointIvtMapper.queryCoolPointIvt(map);
// if (CollectionUtil.isEmpty(coolPointIvtList)) {
// throw new BadRequestException("未查询到合适的点位");
// }
// jsonIvt = coolPointIvtList.get(0);
// next_pint_code = jsonIvt.getEmpty_point_code();
throw new BadRequestException("未查询到合适的冷却区点位");
} else {
jsonIvt = coolPointIvtList.get(0);
next_pint_code = jsonIvt.getEmpty_point_code();

7
lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/PrintService.java

@ -65,6 +65,13 @@ public interface PrintService {
*/
public JSONObject subVolume_print(JSONObject whereJson);
/**
* 管标打印
* @param whereJson
* @return
*/
public JSONObject tube_print(JSONObject whereJson);
/**
* 获取单据类型
*

46
lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/impl/PrintServiceImpl.java

@ -624,6 +624,52 @@ public class PrintServiceImpl implements PrintService {
return jo;
}
@Override
public JSONObject tube_print(JSONObject whereJson) {
JSONObject jo = new JSONObject();
String container_name = jo.getString("container_name");
String paper_tube_or_frp = jo.getString("paper_tube_or_frp");
WQLObject printTab = WQLObject.getWQLObject("pdm_bi_printinfo");
// 生成txt文件
JSONObject jsonPrint = printTab.query("print_id = '" + whereJson.getString("print_type") + "'").uniqueResult(0);
//10.1.3.21/LMSPrinter/
String time = String.valueOf(DateUtil.current());
String filePath = jsonPrint.getString("print_route") +time+"外包标签.txt";
FileWriter fw = null;
try {
File file = new File(filePath);
if (!file.exists()) {
file.createNewFile();
}
fw = new FileWriter(filePath);
OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(file), "utf-8");
BufferedWriter bw = new BufferedWriter(write);
bw.write("container_name,paper_tube_or_frp\n");
bw.write(container_name + ","
+ paper_tube_or_frp + "\n"
);
bw.close();
jo.put("message", "打印成功!");
log.info(DateUtil.now()+"打印成功!");
} catch (Exception e) {
jo.put("message", "打印失败!" + e.getMessage());
log.info(DateUtil.now()+"1打印失败!");
} finally {
try {
if(fw != null){
fw.close();
}
} catch (Exception e) {
jo.put("message", "打印失败!" + e.getMessage());
log.info(DateUtil.now()+"2打印失败!");
}
}
return jo;
}
@Override
public JSONObject printType(JSONObject whereJson) {
JSONArray rows = WQL.getWO("PDA_ST_01").addParam("flag", "6").process().getResultJSONArray(0);

1
lms/nladmin-system/src/main/java/org/nl/wms/pdm/rawfoilworkorder/service/impl/CoolPointIvtServiceImpl.java

@ -58,6 +58,7 @@ public class CoolPointIvtServiceImpl extends ServiceImpl<CoolPointIvtMapper, Coo
wrapper.eq(ObjectUtil.isNotEmpty(whereJson.get("point_location")), CoolPointIvt::getPoint_location, whereJson.get("point_location"));
wrapper.eq(ObjectUtil.isNotEmpty(whereJson.get("is_used")), CoolPointIvt::getIs_used, whereJson.get("is_used"));
// wrapper.eq(ObjectUtil.isNotEmpty(whereJson.get("in_area_id")), CoolPointIvt::getProduct_area, whereJson.get("in_area_id"));
wrapper.like(ObjectUtil.isNotEmpty(whereJson.get("product_area")), CoolPointIvt::getProduct_area, whereJson.get("product_area"));
wrapper.ge(ObjectUtil.isNotEmpty(whereJson.get("begin_time")), CoolPointIvt::getInstorage_time, whereJson.get("begin_time"));
wrapper.le(ObjectUtil.isNotEmpty(whereJson.get("end_time")), CoolPointIvt::getInstorage_time, whereJson.get("end_time"));
IPage<CoolPointIvt> pages = new Page<>(page.getOffset() + 1, page.getPageSize());

6
lms/nladmin-system/src/main/java/org/nl/wms/pdm/rawfoilworkorder/service/impl/RawfoilWorkOrderServiceImpl.java

@ -138,7 +138,6 @@ public class RawfoilWorkOrderServiceImpl extends ServiceImpl<RawfoilWorkOrderMap
}
dto.setWorkorder_id(IdUtil.getSnowflake(1, 1).nextId());
dto.setCreate_id(currentUserId);
dto.setCreate_name(nickName);
@ -228,14 +227,9 @@ public class RawfoilWorkOrderServiceImpl extends ServiceImpl<RawfoilWorkOrderMap
if (ObjectUtil.isNotEmpty(task_jo)) {
throw new BadRequestException("该生箔工单存在未完成的任务,请先完成任务!");
}
if (StrUtil.equals("01", sbPointIvt.getFull_point_status()) && StrUtil.equals("02", sbPointIvt.getEmpty_point_status())) {
rawfoilWorkOrder.setStatus("30");
rawfoilWorkOrder.setFinish_type("02");
rawfoilWorkOrder.setUpdate_time(DateUtil.now());
rawfoilWorkOrderMapper.updateById(rawfoilWorkOrder);
} else {
throw new BadRequestException("当前生箔机:" + sbPointIvt.getExt_code() + "不为满轴位为空且空轴位有轴的状态!,请先维护生箔机点位状态再来操作");
}
JSONObject jo = new JSONObject();

26
lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/ST_IVT_HOTPOINTIVT.wql

@ -141,26 +141,30 @@
IF 输入.flag = "3"
PAGEQUERY
SELECT
hot.*
der.origin
der.roll_status
b.*,
CASE der.roll_status
WHEN '0' THEN '未烘烤'
WHEN '1' THEN '待质检'
WHEN '2' THEN '正在烘烤'
WHEN '3' THEN '质检合格'
WHEN '4' THEN '需复烤'
ELSE ''
END AS roll_status
FROM
PDM_BI_RawFoilWorkOrder der
LEFT JOIN st_ivt_hotpointivt hot ON hot.container_name = der.container_name
LEFT JOIN sch_base_point a ON a.material_code = der.container_name
LEFT JOIN (SELECT point_code,material_code as container_name,product_area FROM `sch_base_point` UNION SELECT point_code,container_name,product_area from st_ivt_hotpointivt) b ON b.container_name = der.container_name
WHERE
der.is_delete = '0'
AND hot.is_delete = '0'
AND hot.product_area in 输入.in_area_id
AND b.container_name != ''
AND b.product_area in 输入.in_area_id
OPTION 输入.point_code <> ""
hot.point_code = 输入.point_code
or a.point_code = 输入.point_code
b.point_code = 输入.point_code
ENDOPTION
OPTION 输入.product_area <> ""
product_area = 输入.product_area
b.product_area = 输入.product_area
ENDOPTION
OPTION 输入.container_name <> ""
container_name >= 输入.container_name
b.container_name >= 输入.container_name
ENDOPTION
ENDSELECT
ENDPAGEQUERY

120
lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoInHotTask.java

@ -0,0 +1,120 @@
package org.nl.wms.sch.manage;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.common.utils.RedisUtils;
import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.sch.tasks.InHotTask;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.concurrent.TimeUnit;
@Slf4j
@Component
public class AutoInHotTask {
private final String THIS_CLASS = AutoInHotTask.class.getName();
@Autowired
private RedisUtils redisUtils;
@Autowired
private IschBaseTaskService taskService;
@Autowired
private RedissonClient redissonClient;
@SneakyThrows
public void run() {
log.info("定时入烘箱....");
RLock lock = redissonClient.getLock(THIS_CLASS);
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try {
if (tryLock) {
List<SchBaseTask> tasks = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_type, "010201")
.eq(SchBaseTask::getIs_delete, "0")
.eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_START.getCode()));
for (SchBaseTask task : tasks) {
handleUnTask(task);
}
} else {
log.info("定时入烘箱任务被锁住。");
}
} finally {
if (lock.isLocked() && lock.isHeldByCurrentThread()) {
lock.unlock();
}
}
}
@Transactional(rollbackFor = Exception.class)
public void handleUnTask(SchBaseTask task) {
JSONObject form = JSONObject.parseObject(task.getRemark());
String point_code1 = form.getString("point_code1");
WQLObject coolIvtTab = WQLObject.getWQLObject("ST_IVT_CoolPointIvt"); // 冷却区点位库存表
WQLObject hotMstTab = WQLObject.getWQLObject("ST_IVT_HotRegionIOMst");
JSONObject jsonCoolIvt = coolIvtTab.query("full_point_code = '" + point_code1 + "' and is_used = '1' AND point_type = '" + "1" + "'").uniqueResult(0);
String product_area = jsonCoolIvt.getString("product_area");
String temperature = form.getString("temperature");
JSONObject map = JSONObject.parseObject(form.getString("param"));
JSONObject point_code2_jo = WQL.getWO("PDA_OVENINANDOUT_01").addParamMap(map).process().uniqueResult(0);
if (ObjectUtil.isEmpty(point_code2_jo) || ObjectUtil.isEmpty(point_code2_jo.getString("point_code"))) {
log.info("冷却区满轴位:{} 没找到烘箱对接位!", task.getPoint_code1());
return;
}
JSONObject jsonHotIvt = getJsonObject(product_area, point_code2_jo, temperature);
if (ObjectUtil.isEmpty(jsonHotIvt) || ObjectUtil.isEmpty(jsonHotIvt.getString("point_code"))) {
log.info("冷却区满轴位:{} 没找到合适的烘箱!", task.getPoint_code1());
return;
}
JSONObject jsonHotMst = hotMstTab.query("task_id = '" + task.getTask_id() + "'").uniqueResult(0);
jsonHotMst.put("end_point_code", jsonHotIvt.getString("point_code"));
hotMstTab.update(jsonHotMst);
task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode());
task.setPoint_code2(point_code2_jo.getString("point_code"));
task.setPoint_code3(jsonHotIvt.getString("point_code"));
task.setRemark("-");
task.setUpdate_time(DateUtil.now());
taskService.updateById(task);
new InHotTask().immediateNotifyAcs(task.getTask_id());
}
public JSONObject getJsonObject(String product_area, JSONObject point_code2_jo, String temperature) {
if (ObjectUtil.isEmpty(point_code2_jo)) {
throw new BadRequestException("烘箱对接没有可用位置!");
}
JSONObject jsonMap = new JSONObject();
jsonMap.put("flag", "1");
jsonMap.put("product_area", product_area);
jsonMap.put("point_location", point_code2_jo.getString("point_location"));
JSONArray hot_rows = WQL.getWO("PDA_BAKING_01").addParamMap(jsonMap).process().getResultJSONArray(0);
JSONObject jsonHotIvt = new JSONObject();
for (int i = 0; i < hot_rows.size(); i++) {
JSONObject hot_row = hot_rows.getJSONObject(i);
String point_code = hot_row.getString("point_code");
boolean exists = redisUtils.hHasKey(point_code, "temperature");
String point_temperature = "";
if (exists) {
point_temperature = (String) redisUtils.hget(point_code, "temperature");
}
if (ObjectUtil.isNotEmpty(point_temperature)) {
if (point_temperature.equals(temperature)) {
jsonHotIvt = hot_row;
break;
}
}
}
return jsonHotIvt;
}
}

4
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InCoolIvtTask.java

@ -120,10 +120,10 @@ public class InCoolIvtTask extends AbstractAcsTask {
String requestParam = jsonTask.getString("request_param");
if ("1".equals(requestParam)) {
raw_jo.put("origin", "2");
raw_jo.put("roll_status", "2");
raw_jo.put("roll_status", "4");
}else if ("2".equals(requestParam)){
raw_jo.put("origin", "2");
raw_jo.put("roll_status", "1");
raw_jo.put("roll_status", "3");
}
pdm_bi_rawfoilworkorder.update(raw_jo);

25
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InHotTask.java

@ -212,6 +212,7 @@ public class InHotTask extends AbstractAcsTask {
//将该母卷的入烘箱标识改为0
HashMap<String, String> map = new HashMap<>();
map.put("is_baking", "0");
map.put("roll_status", "2");//母卷状态改为正在烘烤
WQLObject.getWQLObject("PDM_BI_RawFoilWorkOrder").update(map, "container_name = '" + jsonHotMst.getString("container_name") + "'");
log.info("母卷:" + jsonHotMst.getString("container_name") + "对应的入烘箱任务完成,请求烘烤标识改为0");
}
@ -245,17 +246,33 @@ public class InHotTask extends AbstractAcsTask {
if (cutConveyorTask.isSingleTask(point_code1)) {
throw new BadRequestException("点位:" + point_code1 + "存在未完成的任务!");
}
if (StrUtil.isNotEmpty(point_code2)) {
if (cutConveyorTask.isSingleTask(point_code2)) {
throw new BadRequestException("点位:" + point_code2 + "存在未完成的任务!");
}
}
if (StrUtil.isNotEmpty(point_code3)) {
if (cutConveyorTask.isSingleTask(point_code3)) {
throw new BadRequestException("点位:" + point_code3 + "存在未完成的任务!");
}
}
JSONObject json = new JSONObject();
json.put("task_id", IdUtil.getSnowflake(1, 1).nextId());
json.put("task_code", IdUtil.getSnowflake(1, 1).nextId());
json.put("task_type", "010201");
if (StrUtil.isNotEmpty(point_code2) && StrUtil.isNotEmpty(point_code3)) {
json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
json.put("point_code1", form.getString("point_code1"));
json.put("task_status", TaskStatusEnum.SURE_START.getCode());
json.put("remark", form);
json.put("point_code2", form.getString("point_code2"));
json.put("point_code3", form.getString("point_code3"));
} else {
json.put("remark", form);
json.put("point_code2", "");
json.put("point_code3", "");
json.put("task_status", TaskStatusEnum.SURE_START.getCode());
}
json.put("point_code1", form.getString("point_code1"));
json.put("product_area", form.getString("product_area"));
json.put("request_param", form.getString("request_param"));
json.put("sort_seq", "1");
@ -274,7 +291,9 @@ public class InHotTask extends AbstractAcsTask {
json.put("acs_task_type", "8");
tab.insert(json);
task_id = json.getString("task_id");
if ("04".equals(json.getString("task_status"))) {
immediateNotifyAcs(task_id);
}
//更新对应点位库存为已裹膜
JSONObject cool_ivt = WQLObject.getWQLObject("st_ivt_coolpointivt").query("full_point_code = '" + form.getString("point_code1") + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(cool_ivt)) {
@ -320,8 +339,8 @@ public class InHotTask extends AbstractAcsTask {
json.put("acs_task_type", "6");
tab.insert(json);
task_id = json.getString("task_id");
}
immediateNotifyAcs(task_id);
}
return task_id;
}

4
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutHotTask.java

@ -23,6 +23,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@Service
@ -138,6 +139,9 @@ public class OutHotTask extends AbstractAcsTask {
if (!update_ivt2.getString("container_name").equals(update_ivt.getString("container_name"))) {
log.info("出烘箱WQL更新不成功!");
}
HashMap<String, String> map = new HashMap<>();
map.put("roll_status","1");//母卷状态改为待质检
WQLObject.getWQLObject("PDM_BI_RawFoilWorkOrder").update(map, "container_name = '" + jsonHotMst.getString("container_name") + "'");
// 将出烘箱信息发送给mes
// JSONObject param = new JSONObject();

12
lms/nladmin-ui/src/views/wms/pdm/order/rawfoilworkorder/index.vue

@ -231,6 +231,8 @@
<el-table-column prop="productin_qty" label="重量(Kg)" :min-width="flexWidth('productin_qty',crud.data,'重量(Kg)')" :formatter="crud.formatNum3" />
<el-table-column prop="agvno" label="车号" :min-width="flexWidth('agvno',crud.data,'车号')" />
<el-table-column prop="pscn" label="SAP批次号" :min-width="flexWidth('pscn',crud.data,'批次号')" />
<el-table-column prop="origin" label="母卷来源" :min-width="flexWidth('origin',crud.data,'母卷来源')" :formatter="formatOrigin"/>
<el-table-column prop="roll_status" label="母卷状态" :min-width="flexWidth('roll_status',crud.data,'母卷状态')" :formatter="formatRollStatus" />
<el-table-column prop="product_area" label="生产区域" :min-width="flexWidth('product_area',crud.data,'生产区域')" />
<el-table-column prop="is_baking" label="请求烘烤" :min-width="flexWidth('is_baking',crud.data,'请求烘烤')" :formatter="formatBakeIsOrNot" />
<el-table-column prop="is_instor" label="请求入半成品库" :min-width="flexWidth('is_instor',crud.data,'请求入半成品库')" :formatter="formatStorIsOrNot" />
@ -296,7 +298,7 @@ const defaultForm = {
}
export default {
name: 'Rawfoilworkorder',
dicts: ['product_area', 'product_status', 'IS_OR_NOT'],
dicts: ['product_area', 'product_status', 'IS_OR_NOT', 'ROLL_STATUS_TYPE', 'ORIGIN_TYPE'],
components: { pagination, crudOperation, rrOperation, udOperation, Dialog, MaterDialog, SbpointivtDialog },
mixins: [presenter(), header(), form(defaultForm), crud()],
cruds() {
@ -346,7 +348,7 @@ export default {
eqp_velocity: [
{ required: true, message: '设备生产速度不能为空', trigger: 'blur' }
],
p_coiler_date: [
up_coiler_date: [
{ required: true, message: '上卷开始时间不能为空', trigger: 'blur' }
],
pscn: [
@ -375,6 +377,12 @@ export default {
formatStatusName(row) {
return this.dict.label.product_status[row.status]
},
formatOrigin(row) {
return this.dict.label.ORIGIN_TYPE[row.origin]
},
formatRollStatus(row) {
return this.dict.label.ROLL_STATUS_TYPE[row.roll_status]
},
formatBakeIsOrNot(row) {
return this.dict.label.IS_OR_NOT[row.is_baking]
},

92
lms/nladmin-ui/src/views/wms/pdm/order/slittingplan/AddDialog.vue

@ -104,13 +104,13 @@
<el-form-item label="产品描述" prop="description">
<el-input v-model="form.description" disabled style="width: 150px;" />
</el-form-item>
<el-form-item label="客户编码" prop="customer_code">
<el-input v-model="form.customer_code" disabled class="input-with-select">
<el-form-item label="客户编码" prop="costomer_code">
<el-input v-model="form.costomer_code" disabled class="input-with-select">
<el-button slot="append" icon="el-icon-search" @click="queryCustomer()" />
</el-input>
</el-form-item>
<el-form-item label="客户名称" prop="customer_name">
<el-input v-model="form.customer_name" disabled style="width: 150px;" />
<el-form-item label="客户名称" prop="costomer_name">
<el-input v-model="form.costomer_name" disabled style="width: 150px;" />
</el-form-item>
<el-form-item label="明细数" prop="detail_count">
<label slot="label">&nbsp;&nbsp;&nbsp;:</label>
@ -168,6 +168,7 @@
>
<el-option
v-for="item in dict.paper_tube_or_frp_type"
:key="item.value"
:label="item.label"
:value="item.value"
/>
@ -247,13 +248,19 @@
<span v-show="scope.row.edit">{{ scope.row.split_breadth }}</span>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip prop="sale_order_name" label="销售订单及行号" :min-width="flexWidth('sale_order_name',crud.data,'销售订单及行号')">
<template scope="scope">
<el-input v-show="!scope.row.edit" v-model="scope.row.sale_order_name" size="mini" />
<span v-show="scope.row.edit">{{ scope.row.sale_order_name }}</span>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip prop="split_height" label="子卷理论长度" :min-width="flexWidth('split_height',crud.data,'子卷理论长度')">
<template scope="scope">
<el-input v-show="!scope.row.edit" v-model="scope.row.split_height" size="mini" />
<span v-show="scope.row.edit">{{ scope.row.split_height }}</span>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip prop="split_weight" label="子卷理论长度" :min-width="flexWidth('split_weight',crud.data,'子卷理论重量')">
<el-table-column show-overflow-tooltip prop="split_weight" label="子卷理论重量" :min-width="flexWidth('split_weight',crud.data,'子卷理论重量')">
<template scope="scope">
<el-input v-show="!scope.row.edit" v-model="scope.row.split_weight" size="mini" />
<span v-show="scope.row.edit">{{ scope.row.split_weight }}</span>
@ -278,8 +285,8 @@
</template>
<script>
import crudSlittingproductionplan, { getSlittingproductionplanDtl } from '@/views/wms/pdm/order/slittingplan/slittingproductionplan'
import CRUD, { crud, form } from '@crud/crud'
import crudRawAssist from '@/views/wms/st/inbill/rawassist'
import crudUserStor from '@/views/wms/basedata/st/userStor/userStor'
import MaterDialog from '@/views/wms/pub/MaterDialog'
import CustomerDialog from '@/views/wms/pub/CustomerDialog'
@ -293,13 +300,14 @@ const defaultForm = {
restruct_container_name: null,
ware_house: null,
resource_name: null,
paper_tube_or_frp: null,
split_group: null,
mfg_order_name: null,
manufacture_date: null,
remark: null,
qzzno: null,
customer_code: null,
customer_name: null,
costomer_code: null,
costomer_name: null,
show_edit: false,
tableData: [],
detail_count: '0'
@ -360,6 +368,60 @@ export default {
rules: {
order_type: [
{ required: true, message: '订单类型不能为空', trigger: 'blur' }
],
container_name: [
{ required: true, message: '子卷号不能为空', trigger: 'blur' }
],
split_weight: [
{ required: true, message: '子卷理论重量不能为空', trigger: 'blur' }
],
split_breadth: [
{ required: true, message: '子卷幅宽不能为空', trigger: 'blur' }
],
split_height: [
{ required: true, message: '子卷长度不能为空', trigger: 'blur' }
],
sale_order_name: [
{ required: true, message: '销售订单及行号不能为空', trigger: 'blur' }
],
product_name: [
{ required: true, message: '产品编码不能为空', trigger: 'blur' }
],
description: [
{ required: true, message: '产品描述不能为空', trigger: 'blur' }
],
ware_house: [
{ required: true, message: '来源卷位置不能为空', trigger: 'blur' }
],
resource_name: [
{ required: true, message: '分切机台编码不能为空', trigger: 'blur' }
],
split_group: [
{ required: true, message: '分切组别不能为空', trigger: 'blur' }
],
paper_tube_or_frp: [
{ required: true, message: '管件类型不能为空', trigger: 'blur' }
],
up_or_down: [
{ required: true, message: '上轴下轴不能为空', trigger: 'blur' }
],
left_or_right: [
{ required: true, message: '左卷右卷不能为空', trigger: 'blur' }
],
box_code: [
{ required: true, message: '木箱物料编码不能为空', trigger: 'blur' }
],
box_description: [
{ required: true, message: '木箱描述不能为空', trigger: 'blur' }
],
manufacture_date: [
{ required: true, message: '生产日期不能为空', trigger: 'blur' }
],
costomer_code: [
{ required: true, message: '客户编码不能为空', trigger: 'blur' }
],
costomer_name: [
{ required: true, message: '客户名称不能为空', trigger: 'blur' }
]
}
}
@ -381,12 +443,12 @@ export default {
this.$emit('AddChanged')
},
[CRUD.HOOK.afterToEdit]() {
//
crudRawAssist.getIODtl({ 'bill_code': this.form.bill_code }).then(res => {
crudSlittingproductionplan.getSlittingproductionplanDtl({ 'parent_container_name': this.form.parent_container_name, 'split_group': this.form.split_group }).then(res => {
this.form.tableData = res
//
for (let i = 0; i < this.form.tableData.length; i++) {
const row = this.form.tableData[i]
row.edit = false
this.form.tableData.splice(i, 1, row)
}
})
@ -396,9 +458,7 @@ export default {
this.mater_btn = false
},
[CRUD.HOOK.afterToView]() {
this.bill_btn = true
this.mater_btn = true
crudRawAssist.getIODtl({ 'bill_code': this.form.bill_code }).then(res => {
crudSlittingproductionplan.getSlittingproductionplanDtl({ 'parent_container_name': this.form.parent_container_name, 'split_group': this.form.split_group }).then(res => {
this.form.tableData = res
//
for (let i = 0; i < this.form.tableData.length; i++) {
@ -482,7 +542,7 @@ export default {
this.cutpointivtShow = true
},
async insertdtl() {
this.form.tableData.push({ container_name: '', paper_tube_or_frp: '', paper_tube_material: '', paper_tube_description: '', paper_tube_model: '', frp_material: '', frp_description: '', frp_model: '', up_or_down: '', left_or_right: '', box_code: '', box_description: '', box_model: '', split_length: '', split_breadth: '', split_weight: '', edit: false })
this.form.tableData.push({ container_name: '', paper_tube_or_frp: '', paper_tube_material: '', paper_tube_description: '', paper_tube_model: '', frp_material: '', frp_description: '', frp_model: '', up_or_down: '', left_or_right: '', box_code: '', box_description: '', box_model: '', split_length: '', split_breadth: '', split_weight: '', sale_order_name: '', sale_order_name: '', edit: false })
this.form.detail_count = this.form.tableData.length
},
tube_or_FRP1() {
@ -533,8 +593,8 @@ export default {
this.form.tableData.splice(this.nowindex, 1, this.nowrow) // splice
},
setCustomValue(row) {
this.form.customer_code = row.cust_code
this.form.customer_name = row.cust_name
this.form.costomer_code = row.cust_code
this.form.costomer_name = row.cust_name
},
setCutpointivtValue(row) {
this.form.resource_name = row.ext_code

148
lms/nladmin-ui/src/views/wms/pdm/order/slittingplan/index.vue

@ -329,7 +329,17 @@
size="mini"
@click="print"
>
打印
打印卷标
</el-button>
<el-button
slot="right"
class="filter-item"
type="success"
icon="el-icon-printer"
size="mini"
@click="print1"
>
打印管标
</el-button>
</crudOperation>
<!--表单组件-->
@ -410,6 +420,8 @@
</el-table-column>
<el-table-column prop="qzzno" label="气涨轴编码" width="160px" />
<el-table-column prop="start_time" label="开始时间" width="150px" />
<el-table-column prop="costomer_code" label="客户编码" width="150px" />
<el-table-column prop="costomer_name" label="客户名称" width="150px" />
<el-table-column prop="end_time" label="结束时间" width="150px" />
<el-table-column v-permission="[]" label="操作" width="120px" align="center" fixed="right">
<template slot-scope="scope">
@ -427,9 +439,6 @@
</div>
<AddDialog @AddChanged="querytable" />
<tube-dialog2 :dialog-show.sync="showView2" :rowmst="mstrow" @AddChanged="querytable" />
<MaterDialog :dialog-show.sync="materShow" :mater-opt-code.sync="materType" @setMaterValue="setMaterValue" />
<CustomerDialog :dialog-show.sync="customShow" :mater-opt-code.sync="customType" @setCustomValue="setCustomValue" />
<CutpointivtDialog :dialog-show.sync="cutpointivtShow" :mater-opt-code.sync="cutpointivtType" @setCutpointivtValue="setCutpointivtValue" />
</div>
</template>
@ -441,72 +450,14 @@ import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation'
import pagination from '@crud/Pagination'
import TubeDialog2 from '@/views/wms/pdm/order/slittingplan/tubeDialog2.vue'
import MaterDialog from '@/views/wms/pub/MaterDialog'
import CustomerDialog from '@/views/wms/pub/CustomerDialog'
import CutpointivtDialog from '@/views/wms/pub/CutpointivtDialog'
import cutSbpointivt from '@/views/wms/pdm/ivt/cutpointivt/cutpointivt'
import AddDialog from '@/views/wms/pdm/order/slittingplan/AddDialog'
const defaultForm = {
workorder_id: null,
order_type: null,
container_name: null,
product_name: null,
description: null,
parent_container_name: null,
restruct_container_name: null,
package_box_sn: null,
ware_house: null,
resource_name: null,
split_group: null,
manufacture_sort: null,
mfg_order_name: null,
manufacture_date: null,
paper_tube_or_frp: null,
paper_tube_material: null,
paper_tube_description: null,
paper_tube_model: null,
frp_material: null,
frp_description: null,
frp_model: null,
up_or_down: null,
left_or_right: null,
split_breadth: null,
split_height: null,
split_weight: null,
start_time: null,
end_time: null,
status: null,
remark: null,
sale_order_name: null,
create_id: null,
create_name: null,
create_time: null,
update_optid: null,
update_optname: null,
update_time: null,
sysdeptid: null,
syscompanyid: null,
is_delete: null,
is_parent_ok: null,
is_child_tz_ok: null,
is_child_ps_ok: null,
is_call: null,
qzzno: null,
box_code: null,
box_description: null,
pscn: null,
customer_code: null,
customer_name: null,
joint_type: null,
paper_weight: null,
show_edit: false
}
export default {
name: 'Slittingproductionplan',
dicts: ['product_area', 'order_type', 'cut_product_status', 'ware_house', 'paper_tube_or_frp_type', 'IS_OR_NOT'],
components: { pagination, crudOperation, rrOperation, udOperation, TubeDialog2, MaterDialog, CustomerDialog, CutpointivtDialog, AddDialog },
mixins: [presenter(), header(), form(defaultForm), crud()],
components: { pagination, crudOperation, rrOperation, udOperation, TubeDialog2, AddDialog },
mixins: [presenter(), header(), form(), crud()],
cruds() {
return CRUD({
title: '分切计划',
@ -648,44 +599,10 @@ export default {
this.materType = '4415'
}
},
async queryCustomer() {
this.customShow = true
},
async queryCutpointivt() {
this.cutpointivtShow = true
},
querytable() {
this.$refs.table.clearSelection()
this.crud.toQuery()
},
tube_or_FRP1() {
if (this.paper_type === '1') {
return false
} else {
return true
}
},
tube_or_FRP2() {
if (this.paper_type === '2') {
return false
} else {
return true
}
},
reform_or_normal1() {
if (this.order_type_select === '1') {
return false
} else {
return true
}
},
reform_or_normal2() {
if (this.order_type_select === '2') {
return false
} else {
return true
}
},
upMaterFinish() {
const _selectData = this.$refs.table.selection
const data = {
@ -696,30 +613,6 @@ export default {
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
})
},
setMaterValue(row) {
if (this.indexType === 1) {
this.form.product_name = row.material_code
this.form.description = row.material_name
} else if (this.indexType === 2) {
this.form.paper_tube_material = row.material_code
this.form.paper_tube_description = row.material_name
this.form.paper_tube_model = row.material_name
} else if (this.indexType === 3) {
this.form.frp_material = row.material_code
this.form.frp_description = row.material_name
this.form.frp_model = row.material_name
} else if (this.indexType === 4) {
this.form.box_code = row.material_code
this.form.box_description = row.material_name
}
},
setCustomValue(row) {
this.form.customer_code = row.cust_code
this.form.customer_name = row.cust_name
},
setCutpointivtValue(row) {
this.form.resource_name = row.ext_code
},
caseFinish() {
const _selectData = this.$refs.table.selection
const data = {
@ -823,6 +716,17 @@ export default {
this.crud.toQuery()
})
},
print1() {
const _selectData = this.$refs.table.selection
if (!_selectData || _selectData.length < 1) {
this.crud.notify('请选择一条记录', CRUD.NOTIFICATION_TYPE.INFO)
return
}
crudSlittingproductionplan.print1(_selectData).then(res => {
this.crud.notify('打印成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.crud.toQuery()
})
},
save(row, index) {
row.show_edit = '0'
crudSlittingproductionplan.updates(row).then(res => {

18
lms/nladmin-ui/src/views/wms/pdm/order/slittingplan/slittingproductionplan.js

@ -86,4 +86,20 @@ export function print(data) {
})
}
export default { add, edit, del, upMaterFinish, caseFinish, sendFinish, inFinish, compelFinish, setDirection, updates, print }
export function print1(data) {
return request({
url: '/api/slittingproductionplan/print1',
method: 'post',
data
})
}
export function getSlittingproductionplanDtl(params) {
return request({
url: '/api/slittingproductionplan/getSlittingproductionplanDtl',
method: 'get',
params
})
}
export default { add, edit, del, upMaterFinish, caseFinish, sendFinish, inFinish, compelFinish, setDirection, updates, print, getSlittingproductionplanDtl }

Loading…
Cancel
Save