diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/domain/entity/BaseDto.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/domain/entity/BaseDto.java index e2484a5c..9a96533f 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/common/domain/entity/BaseDto.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/domain/entity/BaseDto.java @@ -22,7 +22,7 @@ public class BaseDto implements Serializable { private String update_name; - private String update_optid; + private String update_id; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JSONField(format = "yyyy-MM-dd HH:mm:ss") diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/sap/service/impl/WmsToSapServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/sap/service/impl/WmsToSapServiceImpl.java index 2c691cbc..7200ed3d 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/sap/service/impl/WmsToSapServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/sap/service/impl/WmsToSapServiceImpl.java @@ -175,7 +175,7 @@ public class WmsToSapServiceImpl implements WmsToSapService { } //sale_jo.setPlandeliver_date(row.getString("Edatu")); sale_jo.setCreate_id(SecurityUtils.getCurrentUserId()); - sale_jo.setCreate_time(new Date()); + sale_jo.setCreate_time(DateUtil.now()); sale_jo.setCreate_name(SecurityUtils.getCurrentNickName()); if (need_update) { saleOrderService.updateById(sale_jo); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/mdme.xls b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/mdme.xls index c66039cf..6eff23b4 100644 Binary files a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/mdme.xls and b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/mdme.xls differ diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/material/impl/MdMeMaterialbaseServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/material/impl/MdMeMaterialbaseServiceImpl.java index 65b4daa5..c8fe0aa7 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/material/impl/MdMeMaterialbaseServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/material/impl/MdMeMaterialbaseServiceImpl.java @@ -71,7 +71,7 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl().eq("class_name", product_series).eq("is_delete", false)); +// if (ObjectUtil.isEmpty(class_jo)) { +// errorMap.put("第" + (i + 1) + "行:", "系列分类编码对应的分类不存在!"); +// continue; +// } +// material_jo.setProduct_series(class_jo.getClass_id()); +// } + String material_type = list.get(4).toString(); + if (StrUtil.isEmpty(material_type)&&!"1".equals(material_spec)) { errorMap.put("第" + (i + 1) + "行:", "物料分类编码为空!"); - }else { + }else{ //查询对应的系列名称 MdPbClassstandard class_jo = classstandardService.getOne(new QueryWrapper().eq("class_name", material_type).eq("is_delete", false)); if (ObjectUtil.isEmpty(class_jo)) { @@ -110,20 +114,12 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl().eq("class_name", product_series).eq("is_delete", false)); - if (ObjectUtil.isEmpty(class_jo)) { - errorMap.put("第" + (i + 1) + "行:", "系列分类编码对应的分类不存在!"); - continue; - } - material_jo.setProduct_series(class_jo.getClass_id()); + String material_model = list.get(5).toString(); + if (StrUtil.isNotEmpty(material_model)&&!"1".equals(material_spec)) { + material_jo.setMaterial_model(material_model); } - - String unit_name = (String) list.get(6); - if (StrUtil.isEmpty(unit_name)) { + String unit_name = list.get(6).toString(); + if (StrUtil.isEmpty(unit_name)&&!"1".equals(material_spec)) { errorMap.put("第" + (i + 1) + "行:", "单位为空!"); }else { MdPbMeasureunit unit_jo = measureunitService.getOne(new QueryWrapper().eq("unit_name", unit_name)); @@ -134,8 +130,8 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl().eq("workprocedure_code", workprocedure_code)); - if (ObjectUtil.isEmpty(workprocedure)) { - errorMap.put("第" + (i + 1) + "行:", "为查询到该工序编号对应的工序!"); - continue; - } - - String semi_material_code = (String) list.get(1); + String semi_material_code = (String) list.get(0); if (StrUtil.isEmpty(semi_material_code)){ errorMap.put("第" + (i + 1) + "行:", "半成品物料编码为空!"); continue; @@ -193,7 +182,7 @@ public class SemirealrawmaterialServiceImpl implements SemirealrawmaterialServic continue; } - String raw_material_code = String.valueOf(list.get(2)); + String raw_material_code = String.valueOf(list.get(1)); if (StrUtil.isEmpty(raw_material_code)){ errorMap.put("第" + (i + 1) + "行:", "原材料物料编码为空!"); continue; @@ -206,7 +195,7 @@ public class SemirealrawmaterialServiceImpl implements SemirealrawmaterialServic continue; } - String rate_qty = String.valueOf(list.get(3)); + String rate_qty = String.valueOf(list.get(2)); if (StrUtil.isEmpty(rate_qty)){ errorMap.put("第" + (i + 1) + "行:", "原材料消耗重量为空!"); continue; @@ -217,7 +206,6 @@ public class SemirealrawmaterialServiceImpl implements SemirealrawmaterialServic if (ObjectUtil.isNotEmpty(jo)){ jo.put("rate_qty",rate_qty); - jo.put("workprocedure_id",workprocedure.getWorkprocedure_id()); WQLObject.getWQLObject("md_me_semirealrawmaterial").update(jo); }else { jo = new JSONObject(); @@ -225,12 +213,12 @@ public class SemirealrawmaterialServiceImpl implements SemirealrawmaterialServic String nickName = SecurityUtils.getCurrentNickName(); jo.put("relation_id",IdUtil.getSnowflake(1, 1).nextId()); jo.put("semi_material_id",semi_jo.getMaterial_id()); - jo.put("raw_material_id",semi_jo.getMaterial_id()); + jo.put("raw_material_id",raw_jo.getMaterial_id()); + jo.put("raw_material_code",raw_jo.getMaterial_code()); jo.put("create_id",currentUserId); jo.put("create_name",nickName); jo.put("create_time",DateUtil.now()); jo.put("rate_qty",rate_qty); - jo.put("workprocedure_id",workprocedure.getWorkprocedure_id()); WQLObject wo = WQLObject.getWQLObject("md_me_semirealrawmaterial"); wo.insert(jo); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/service/dao/MpsSaleOrder.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/service/dao/MpsSaleOrder.java index f493f88f..d36be4b5 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/service/dao/MpsSaleOrder.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/service/dao/MpsSaleOrder.java @@ -1,16 +1,13 @@ package org.nl.wms.mps_manage.saleorder.service.dao; -import java.math.BigDecimal; - import com.baomidou.mybatisplus.annotation.*; - -import java.io.Serializable; -import java.util.Date; - import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; +import java.io.Serializable; +import java.math.BigDecimal; + /** *

* 生产订单表 @@ -94,7 +91,7 @@ public class MpsSaleOrder implements Serializable{ * 计划交期 */ @ApiModelProperty(value = "/**计划交期*/") - private Date plandeliver_date; + private String plandeliver_date; /** * 创建人 */ @@ -110,7 +107,7 @@ public class MpsSaleOrder implements Serializable{ */ @ApiModelProperty(value = "/**创建时间*/") @TableField(fill = FieldFill.INSERT) - private Date create_time; + private String create_time; /** * 提交人 */ @@ -216,5 +213,5 @@ public class MpsSaleOrder implements Serializable{ * aps变更时间 */ @ApiModelProperty(value = "/**aps变更时间*/") - private Date aps_update_time; + private String aps_update_time; } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/service/dao/mapper/xml/MpsSaleOrderMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/service/dao/mapper/xml/MpsSaleOrderMapper.xml index 690ee974..7c2edeb5 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/service/dao/mapper/xml/MpsSaleOrderMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/service/dao/mapper/xml/MpsSaleOrderMapper.xml @@ -26,6 +26,12 @@ and der.cust_code >= #{query.cust_code} + + and der.create_time >= #{query.start_time} + + + and #{query.end_time} >= der.create_time + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/service/impl/MpsSaleOrderServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/service/impl/MpsSaleOrderServiceImpl.java index 9376a8d4..ede19516 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/service/impl/MpsSaleOrderServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/service/impl/MpsSaleOrderServiceImpl.java @@ -112,7 +112,7 @@ public class MpsSaleOrderServiceImpl extends ServiceImpl().eq("cust_code", mpsSaleOrder.getCust_code())); mpsSaleOrder.setCust_id(cust.getCust_id()); mpsSaleOrder.setCust_name(cust.getCust_name()); @@ -144,11 +144,10 @@ public class MpsSaleOrderServiceImpl extends ServiceImpl meMaterialBases = materialbaseService.list(new QueryWrapper().like("material_spec", col)); if(CollectionUtils.isEmpty(meMaterialBases)) { errorMap.put("第" + i + "行" + col, "物料规格对应物料信息不存在"); - error_message = error_message + col + "物料规格对应物料信息不存在,"; } else{ Optional first = meMaterialBases.stream().findFirst(); @@ -229,7 +227,7 @@ public class MpsSaleOrderServiceImpl extends ServiceImpl dtlArr = pdmBiProcessroutedtlService.list(new QueryWrapper().eq("processroute_id", processroute_id)); @@ -154,8 +154,8 @@ public class PdmBiProcessrouteServiceImpl extends ServiceImpl() .set("is_delete","1") - .set("update_optid",SecurityUtils.getCurrentUserId()) - .set("update_optname",SecurityUtils.getCurrentNickName()) + .set("update_id",SecurityUtils.getCurrentUserId()) + .set("update_name",SecurityUtils.getCurrentNickName()) .set("update_time",DateUtil.now()) .in("processroute_id",ids)); } @@ -178,8 +178,8 @@ public class PdmBiProcessrouteServiceImpl extends ServiceImpl() .set("processroute_status","10") - .set("update_optid",SecurityUtils.getCurrentUserId()) - .set("update_optname",SecurityUtils.getCurrentNickName()) + .set("update_id",SecurityUtils.getCurrentUserId()) + .set("update_name",SecurityUtils.getCurrentNickName()) .set("update_time",DateUtil.now()) .set("audit_id"," ") .set("audit_name"," ") @@ -191,8 +191,8 @@ public class PdmBiProcessrouteServiceImpl extends ServiceImpl() .set("processroute_status","20") - .set("update_optid",SecurityUtils.getCurrentUserId()) - .set("update_optname",SecurityUtils.getCurrentNickName()) + .set("update_id",SecurityUtils.getCurrentUserId()) + .set("update_name",SecurityUtils.getCurrentNickName()) .set("update_time",DateUtil.now()) .set("audit_id",SecurityUtils.getCurrentUserId()) .set("audit_name",SecurityUtils.getCurrentNickName()) diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/productProcessRoute/dao/PdmBiProductprocessroute.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/productProcessRoute/dao/PdmBiProductprocessroute.java index 1a9a2091..f46a683f 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/productProcessRoute/dao/PdmBiProductprocessroute.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/productProcessRoute/dao/PdmBiProductprocessroute.java @@ -69,12 +69,12 @@ public class PdmBiProductprocessroute implements Serializable { /** * 修改人 */ - private String update_optid; + private String update_id; /** * 修改人姓名 */ - private String update_optname; + private String update_name; /** * 修改时间 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/productProcessRoute/impl/PdmBiProductprocessrouteServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/productProcessRoute/impl/PdmBiProductprocessrouteServiceImpl.java index c4af9047..cb8ed670 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/productProcessRoute/impl/PdmBiProductprocessrouteServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/productProcessRoute/impl/PdmBiProductprocessrouteServiceImpl.java @@ -151,7 +151,7 @@ public class PdmBiProductprocessrouteServiceImpl extends ServiceImpl().set("remark", jo.getString("remark")).set("class_id", jo.getString("class_id")).set("detail_count", rows.size()).set("update_optid", SecurityUtils.getCurrentUserId()).set("update_optname", SecurityUtils.getCurrentNickName()).set("update_time", DateUtil.now()).eq("productprocess_id", jo.getString("productprocess_id"))); + this.update(new UpdateWrapper().set("remark", jo.getString("remark")).set("class_id", jo.getString("class_id")).set("detail_count", rows.size()).set("update_id", SecurityUtils.getCurrentUserId()).set("update_name", SecurityUtils.getCurrentNickName()).set("update_time", DateUtil.now()).eq("productprocess_id", jo.getString("productprocess_id"))); productprocessroutedtlService.remove(new QueryWrapper().eq("productprocess_id", jo.getString("productprocess_id"))); for (int i = 0; i < rows.size(); i++) { JSONObject row = rows.getJSONObject(i); @@ -164,7 +164,7 @@ public class PdmBiProductprocessrouteServiceImpl extends ServiceImpl().set("is_delete", "1").set("update_optid", SecurityUtils.getCurrentUserId()).set("update_optname", SecurityUtils.getCurrentNickName()).set("update_time", DateUtil.now()).in("productprocess_id", ids)); + this.update(new UpdateWrapper().set("is_delete", "1").set("update_id", SecurityUtils.getCurrentUserId()).set("update_name", SecurityUtils.getCurrentNickName()).set("update_time", DateUtil.now()).in("productprocess_id", ids)); } @Override @@ -185,12 +185,12 @@ public class PdmBiProductprocessrouteServiceImpl extends ServiceImpl().set("productprocess_status", "20").set("update_optid", SecurityUtils.getCurrentUserId()).set("update_optname", SecurityUtils.getCurrentNickName()).set("update_time", DateUtil.now()).set("audit_optid", SecurityUtils.getCurrentUserId()).set("audit_optname", SecurityUtils.getCurrentNickName()).set("audit_time", DateUtil.now()).eq("processroute_id", whereJson.getString("processroute_id"))); + this.update(new UpdateWrapper().set("productprocess_status", "20").set("update_id", SecurityUtils.getCurrentUserId()).set("update_name", SecurityUtils.getCurrentNickName()).set("update_time", DateUtil.now()).set("audit_optid", SecurityUtils.getCurrentUserId()).set("audit_optname", SecurityUtils.getCurrentNickName()).set("audit_time", DateUtil.now()).eq("productprocess_id", whereJson.getString("productprocess_id"))); } @Override public void unSubmit(JSONObject whereJson) { - this.update(new UpdateWrapper().set("productprocess_status", "10").set("update_optid", SecurityUtils.getCurrentUserId()).set("update_optname", SecurityUtils.getCurrentNickName()).set("update_time", DateUtil.now()).set("audit_optid", " ").set("audit_optname", " ").set("audit_time", " ").eq("processroute_id", whereJson.getString("processroute_id"))); + this.update(new UpdateWrapper().set("productprocess_status", "10").set("update_id", SecurityUtils.getCurrentUserId()).set("update_name", SecurityUtils.getCurrentNickName()).set("update_time", DateUtil.now()).set("audit_optid", " ").set("audit_optname", " ").set("audit_time", " ").eq("productprocess_id", whereJson.getString("productprocess_id"))); } @Override diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/rest/BomController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/rest/BomController.java index 557d0f67..ffdefe46 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/rest/BomController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/rest/BomController.java @@ -13,7 +13,9 @@ import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletRequest; import java.util.Map; /** @@ -106,4 +108,14 @@ public class BomController { return new ResponseEntity<>(HttpStatus.OK); } + /** + *导入bom数据 + */ + @Log("导入bom数据") + @PostMapping("/excelImport") + public ResponseEntity excelImport(@RequestParam("file") MultipartFile file, HttpServletRequest request) { + bomService.excelImport(file,request); + return new ResponseEntity<>(HttpStatus.OK); + } + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/BomService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/BomService.java index b4c241fb..f58e932a 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/BomService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/BomService.java @@ -5,7 +5,9 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import org.nl.wms.product_manage.备份pdm.service.dto.BomDto; import org.springframework.data.domain.Pageable; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletRequest; import java.util.List; import java.util.Map; @@ -33,10 +35,10 @@ public interface BomService { /** * 根据ID查询 - * @param bom_uuid ID + * @param bom_id ID * @return Bom */ - BomDto findById(String bom_uuid); + BomDto findById(String bom_id); /** * 根据编码查询 @@ -73,4 +75,12 @@ public interface BomService { void submits(JSONObject param); void cancelSubmit(JSONObject param); + + + /** + * excel导入 + * @param file + * @param request + */ + void excelImport(MultipartFile file, HttpServletRequest request); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/dto/BomDto.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/dto/BomDto.java index aee66c63..205931c4 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/dto/BomDto.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/dto/BomDto.java @@ -15,7 +15,7 @@ import java.math.BigDecimal; public class BomDto implements Serializable { /** BOM单标识 */ - private String bom_uuid; + private String bom_id; /** BOM单编码 */ private String bom_code; @@ -24,10 +24,10 @@ public class BomDto implements Serializable { private String bom_name; /** 物料标识 */ - private String material_uuid; + private String material_id; /** 产品工艺路线标识 */ - private String processroute_uuid; + private String processroute_id; /** 成材率百分比 */ private BigDecimal yield_rate; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/dto/ProcessrouteDto.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/dto/ProcessrouteDto.java index b1da83f4..84932d5e 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/dto/ProcessrouteDto.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/dto/ProcessrouteDto.java @@ -55,10 +55,10 @@ public class ProcessrouteDto implements Serializable { private String update_time; /** 审核人 */ - private Long audit_optid; + private Long audit_id; /** 审核人姓名 */ - private String audit_optname; + private String audit_name; /** 审核时间 */ private String audit_time; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/dto/ProductprocessrouteDto.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/dto/ProductprocessrouteDto.java index e3cd2c2f..b5bbd4d5 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/dto/ProductprocessrouteDto.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/dto/ProductprocessrouteDto.java @@ -57,10 +57,10 @@ public class ProductprocessrouteDto implements Serializable { private String update_time; /** 审核人 */ - private Long audit_optid; + private Long audit_id; /** 审核人姓名 */ - private String audit_optname; + private String audit_name; /** 审核时间 */ private String audit_time; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/impl/BomServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/impl/BomServiceImpl.java index 8cd30c24..b0a58e0b 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/impl/BomServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/impl/BomServiceImpl.java @@ -7,24 +7,34 @@ import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.poi.excel.ExcelReader; +import cn.hutool.poi.excel.ExcelUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; - import lombok.RequiredArgsConstructor; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.nl.modules.common.exception.BadRequestException; import org.nl.common.utils.SecurityUtils; +import org.nl.modules.system.util.CodeUtil; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.WqlUtil; import org.nl.wms.product_manage.备份pdm.service.BomService; import org.nl.wms.product_manage.备份pdm.service.dto.BomDto; - +import org.nl.wms.system_manage.service.user.ISysUserService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; +import org.springframework.web.multipart.MultipartFile; -import java.util.List; -import java.util.Map; +import javax.servlet.http.HttpServletRequest; +import java.io.InputStream; +import java.math.BigDecimal; +import java.util.*; /** * @description 服务实现 @@ -36,14 +46,18 @@ import java.util.Map; @Slf4j public class BomServiceImpl implements BomService { + @Autowired + ISysUserService userService; + @Override public Map queryAll(Map whereJson, Pageable page){ String material = MapUtil.getStr(whereJson, "material"); String bom = MapUtil.getStr(whereJson, "bom"); JSONObject map = new JSONObject(); map.put("flag", "1"); - if (StrUtil.isNotEmpty(material)) map.put("material", "%" + material + "%"); - if (StrUtil.isNotEmpty(bom)) map.put("bom", "%" + bom + "%"); + if (StrUtil.isNotEmpty(material)) + {map.put("material", "%" + material + "%");} + if (StrUtil.isNotEmpty(bom)) {map.put("bom", "%" + bom + "%");} JSONObject json = WQL.getWO("PDM_BI_BOM01").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "bom.update_time desc"); return json; } @@ -52,14 +66,14 @@ public class BomServiceImpl implements BomService { public List queryAll(Map whereJson){ WQLObject wo = WQLObject.getWQLObject("pdm_bi_bom"); JSONArray arr = wo.query().getResultJSONArray(0); - if (ObjectUtil.isNotEmpty(arr)) return arr.toJavaList(BomDto.class); + if (ObjectUtil.isNotEmpty(arr)) {return arr.toJavaList(BomDto.class);} return null; } @Override - public BomDto findById(String bom_uuid) { + public BomDto findById(String bom_id) { WQLObject wo = WQLObject.getWQLObject("pdm_bi_bom"); - JSONObject json = wo.query("bom_uuid = '" + bom_uuid + "'").uniqueResult(0); + JSONObject json = wo.query("bom_id = '" + bom_id + "'").uniqueResult(0); if (ObjectUtil.isNotEmpty(json)){ return json.toJavaObject( BomDto.class); } @@ -82,33 +96,33 @@ public class BomServiceImpl implements BomService { WQLObject wo_bom = WQLObject.getWQLObject("pdm_bi_bom"); WQLObject wo_bomdtl = WQLObject.getWQLObject("PDM_BI_BOMDtl"); final JSONArray jsonArray = param.getJSONArray("tableData"); - final String material_uuid = param.getString("material_uuid"); - final JSONObject jsonObject1 = wo_bom.query("material_uuid = '" + material_uuid + "'").uniqueResult(0); + final String material_id = param.getString("material_id"); + final JSONObject jsonObject1 = wo_bom.query("material_id = '" + material_id + "'").uniqueResult(0); if (ObjectUtil.isNotEmpty(jsonObject1)){ throw new BadRequestException("物料已经存在,请重新选择"); } String currentUserId = SecurityUtils.getCurrentUserId(); String nickName = SecurityUtils.getCurrentNickName(); - String bom_uuid = IdUtil.getSnowflake(1, 1).nextId() + ""; - param.put("bom_uuid",bom_uuid); + String bom_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + param.put("bom_id",bom_id); param.put("bom_status","01"); param.put("detail_count",jsonArray.size()); param.put("create_id",currentUserId); param.put("create_name",nickName); param.put("create_time",DateUtil.now()); - param.put("update_optid",currentUserId); - param.put("update_optname",nickName); + param.put("update_id",currentUserId); + param.put("update_name",nickName); param.put("update_time",DateUtil.now()); wo_bom.insert(param); if (jsonArray.size() > 0) { for (int i = 0; i < jsonArray.size(); i++) { JSONObject map = new JSONObject(); final JSONObject jsonObject = jsonArray.getJSONObject(i); - map.put("bomdtl_uuid",IdUtil.getSnowflake(1, 1).nextId() + ""); - map.put("bom_uuid",bom_uuid); - map.put("workprocedure_uuid",jsonObject.getString("workprocedure_uuid")); - map.put("material_uuid",jsonObject.getString("material_uuid")); + map.put("bomdtl_id",IdUtil.getSnowflake(1, 1).nextId() + ""); + map.put("bom_id",bom_id); + map.put("workprocedure_id",jsonObject.getString("workprocedure_id")); + map.put("material_id",jsonObject.getString("material_id")); map.put("yield_rate",jsonObject.getString("yield_rate")); map.put("endproduct_rate",jsonObject.getString("endproduct_rate")); map.put("piece_weight",jsonObject.getString("piece_weight")); @@ -129,15 +143,15 @@ public class BomServiceImpl implements BomService { String nickName = SecurityUtils.getCurrentNickName(); param.put("detail_count",jsonArray.size()); - param.put("update_optid",currentUserId); - param.put("update_optname",nickName); + param.put("update_id",currentUserId); + param.put("update_name",nickName); param.put("update_time",DateUtil.now()); wo_bom.update(param); if (jsonArray.size() > 0) { for (int i = 0; i < jsonArray.size(); i++) { JSONObject map = new JSONObject(); final JSONObject jsonObject = jsonArray.getJSONObject(i); - map.put("bomdtl_uuid",jsonObject.getString("bomdtl_uuid")); + map.put("bomdtl_id",jsonObject.getString("bomdtl_id")); map.put("yield_rate",jsonObject.getString("yield_rate")); map.put("endproduct_rate",jsonObject.getString("endproduct_rate")); map.put("piece_weight",jsonObject.getString("piece_weight")); @@ -151,30 +165,30 @@ public class BomServiceImpl implements BomService { public void deleteAll(String[] ids) { WQLObject wo = WQLObject.getWQLObject("pdm_bi_bom"); WQLObject wo_dtl = WQLObject.getWQLObject("PDM_BI_BOMDtl"); - for (String bom_uuid: ids) { - wo.delete("bom_uuid = '"+bom_uuid+"'"); - wo_dtl.delete("bom_uuid = '"+bom_uuid+"'"); + for (String bom_id: ids) { + wo.delete("bom_id = '"+bom_id+"'"); + wo_dtl.delete("bom_id = '"+bom_id+"'"); } } @Override public JSONObject getProduceProcessRouteByMaterialId(JSONObject param) { WQLObject wo = WQLObject.getWQLObject("PDM_BI_ProductProcessRoute"); - final JSONObject jsonObject = wo.query("is_delete = '0' and productprocess_status = '20' and material_id = '" + param.getString("material_uuid") + "'").uniqueResult(0); + final JSONObject jsonObject = wo.query("is_delete = '0' and productprocess_status = '20' and material_id = '" + param.getString("material_id") + "'").uniqueResult(0); return jsonObject; } @Override public JSONObject getworkprocedureListByProduceProcessRouteId(JSONObject param) { JSONObject json = new JSONObject(); - final String material_uuid = param.getString("material_uuid"); + final String material_id = param.getString("material_id"); WQLObject wo_endrealsemimaterial = WQLObject.getWQLObject("md_me_endrealsemimaterial"); WQLObject wo_material = WQLObject.getWQLObject("md_me_materialbase"); - final JSONObject jsonEndrealsemimaterial = wo_endrealsemimaterial.query("end_material_id = '" + material_uuid + "'").uniqueResult(0); + final JSONObject jsonEndrealsemimaterial = wo_endrealsemimaterial.query("end_material_id = '" + material_id + "'").uniqueResult(0); final JSONObject semi_material = wo_material.query("is_delete = '0' and material_id = '" + jsonEndrealsemimaterial.getString("semi_material_id") + "'").uniqueResult(0); WQLObject wo = WQLObject.getWQLObject("PDM_BI_ProductProcessRouteDtl"); WQLObject wo_workprocedure = WQLObject.getWQLObject("pdm_bi_workprocedure"); - final JSONArray resultJSONArray = wo.query("productprocess_id = '" + param.getString("processroute_uuid") + "'","workprocedure_no").getResultJSONArray(0); + final JSONArray resultJSONArray = wo.query("productprocess_id = '" + param.getString("processroute_id") + "'","workprocedure_no").getResultJSONArray(0); JSONArray newJ = new JSONArray(); for (int i = 0; i < resultJSONArray.size(); i++) { JSONObject jsonObject = resultJSONArray.getJSONObject(i); @@ -190,10 +204,10 @@ public class BomServiceImpl implements BomService { @Override public JSONArray getDtl(JSONObject param) { - final String bom_uuid = param.getString("bom_uuid"); + final String bom_id = param.getString("bom_id"); JSONObject map = new JSONObject(); map.put("flag","2"); - map.put("bom_uuid",bom_uuid); + map.put("bom_id",bom_id); JSONArray json = WQL.getWO("PDM_BI_BOM01").addParamMap(map).process().getResultJSONArray(0); return json; } @@ -205,12 +219,12 @@ public class BomServiceImpl implements BomService { String currentUserId = SecurityUtils.getCurrentUserId(); String nickName = SecurityUtils.getCurrentNickName(); - final String bom_uuid = param.getString("bom_uuid"); + final String bom_id = param.getString("bom_id"); JSONObject map = new JSONObject(); - map.put("bom_uuid",bom_uuid); + map.put("bom_id",bom_id); map.put("bom_status","02"); - map.put("update_optid",currentUserId); - map.put("update_optname",nickName); + map.put("update_id",currentUserId); + map.put("update_name",nickName); map.put("update_time",DateUtil.now()); wo_bom.update(map); } @@ -222,14 +236,253 @@ public class BomServiceImpl implements BomService { String currentUserId = SecurityUtils.getCurrentUserId(); String nickName = SecurityUtils.getCurrentNickName(); - final String bom_uuid = param.getString("bom_uuid"); + final String bom_id = param.getString("bom_id"); JSONObject map = new JSONObject(); - map.put("bom_uuid",bom_uuid); + map.put("bom_id",bom_id); map.put("bom_status","01"); - map.put("update_optid",currentUserId); - map.put("update_optname",nickName); + map.put("update_id",currentUserId); + map.put("update_name",nickName); map.put("update_time",DateUtil.now()); wo_bom.update(map); } + @Override + @Transactional(rollbackFor = Exception.class) + public void excelImport(MultipartFile file, HttpServletRequest request) { + if(file.isEmpty()) { + throw new BadRequestException("文件为空,请添加数据后重新导入"); + } + try(InputStream inputStream = file.getInputStream()) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + //Bom主表 + WQLObject wo_pdm_bi_bom = WQLObject.getWQLObject("pdm_bi_bom"); + //Bom明细表 + WQLObject pdm_bi_bomdtl = WQLObject.getWQLObject("pdm_bi_bomdtl"); + //物料表 + WQLObject wo_material = WQLObject.getWQLObject("md_me_materialbase"); + //原材料对应半成品 + WQLObject wo_semirealrawmaterial = WQLObject.getWQLObject("md_me_semirealrawmaterial"); + //设备表 + WQLObject wo_device = WQLObject.getWQLObject("pdm_bi_device"); + //工序表 + WQLObject wo_workprocedure = WQLObject.getWQLObject("pdm_bi_workprocedure"); + //工艺路线 + WQLObject wo_processroute = WQLObject.getWQLObject("pdm_bi_processroute"); + ExcelReader excelReader = ExcelUtil.getReader(inputStream, 0); + List> read = excelReader.read(0, excelReader.getRowCount()); + Map errorMap = new HashMap(); + boolean isCreateBom = true; + // 循环获取的数据 + row: + for(int i = 1; i < read.size(); i++) { + List list = read.get(i); + if(ObjectUtil.isEmpty(list)) { + continue; + } + JSONObject param = new JSONObject(); + //循环每一行 + col: + for(int j = 0; j < list.size(); j++) { + String col = null == list.get(j) ? "" : String.valueOf(list.get(j)); + if(j == 0) { + if(StringUtils.isBlank(col)) { + throw new BadRequestException("物料编号不能为空!"); + } + JSONObject jsonMaterial = wo_material.query("is_delete = '0' and material_code = '" + col + "'").uniqueResult(0); + if(ObjectUtil.isEmpty(jsonMaterial)) { + errorMap.put("第" + i + "行" + col, "物料规格对应物料信息不存在"); + } + else{ + JSONObject jsonBom = wo_pdm_bi_bom.query("material_id = '" + jsonMaterial.getString("material_id") + "'").uniqueResult(0); + if(!ObjectUtil.isEmpty(jsonBom)) { + param.put("bom_id", jsonBom.getString("bom_id")); + isCreateBom = false; + } + else{ + param.put("bom_id", IdUtil.getSnowflake(1, 1).nextId()); + param.put("bom_code", "BOM" + jsonMaterial.getString("material_spec")); + isCreateBom = true; + } + param.put("material_code", col); + param.put("material_id", jsonMaterial.getString("material_id")); + param.put("material_spec", jsonMaterial.getString("material_spec")); + param.put("bom_name", jsonMaterial.getString("material_spec")); + } + } + if(j == 3) { + //数量计量单位名称 + param.put("qty_unit_name", col); + } + if(j == 4) { + //工艺路线代码 + if(StringUtils.isBlank(col)) { + throw new BadRequestException("工艺路线代码不能为空"); + } + JSONObject jsonProcessroute = wo_processroute.query("is_delete = '0' and processroute_code = '" + col + "'").uniqueResult(0); + if(ObjectUtil.isEmpty(jsonProcessroute)) { + errorMap.put("第" + i + "行" + col, "工艺路线信息不存在"); + } + else{ + param.put("processroute_id", jsonProcessroute.getString("processroute_id")); + param.put("processroute_name", jsonProcessroute.getString("processroute_name")); + } + param.put("processroute_code", col); + } + // if(j == 6) { + // //成材率 + // if(StringUtils.isBlank(col)) { + // throw new BadRequestException("成材率不能为空"); + // } + // param.put("yield_rate", col); + // } + // if(j == 7) { + // //合格率 + // if(StringUtils.isBlank(col)) { + // throw new BadRequestException("合格率不能为空"); + // } + // param.put("endproduct_rate", col); + // } + if(j == 8) { + //产能 + if(StringUtils.isBlank(col)) { + param.put("manufacture", "0"); + } + else{ + param.put("manufacture", col + "ph"); + } + } + if(j == 9) { + //产品单重 + param.put("piece_weight", col); + } + if(j == 10) { + //工序编号 + if(StringUtils.isBlank(col)) { + throw new BadRequestException("工序编号不能为空"); + } + //绕过仓储工序 + if(col.contains("A1_CC")) { + break; + } + //判断是否前段工序 + if(col.contains("A1_SKQX") || col.contains("A1_KZ") || col.contains("A1_BZ") || col.contains("A1_MP")) { + param.put("is_front", "0"); + } + else{ + param.put("is_front", "1"); + } + JSONObject jsonWorkprocedure = wo_workprocedure.query("is_used = '1' and workprocedure_code = '" + col + "'").uniqueResult(0); + if(ObjectUtil.isEmpty(jsonWorkprocedure)) { + errorMap.put("请检查第" + i + "行" + col , "所匹配的工序信息不存在!"); + } + else{ + param.put("workprocedure_id", jsonWorkprocedure.getString("workprocedure_id")); + param.put("workprocedure_name", jsonWorkprocedure.getString("workprocedure_name")); + } + } + if(j == 12) { + if(!StringUtils.isBlank(col)) { + //工序顺序号 + param.put("workprocedure_no", col); + JSONObject bomDtlParam = new JSONObject(); + param.put("yield_rate", "0"); + param.put("endproduct_rate", "1"); + bomDtlParam.put("bomdtl_id", IdUtil.getSnowflake(1, 1).nextId()); + bomDtlParam.put("bom_id", param.getString("bom_id")); + bomDtlParam.put("material_id", param.getString("material_id")); + bomDtlParam.put("material_code", param.getString("material_code")); + bomDtlParam.put("material_spec", param.getString("material_spec")); + bomDtlParam.put("piece_weight", param.getString("piece_weight")); + bomDtlParam.put("qty_unit_name", param.getString("qty_unit_name")); + bomDtlParam.put("processroute_id", param.getString("processroute_id")); + bomDtlParam.put("workprocedure_id", param.getString("workprocedure_id")); + bomDtlParam.put("workprocedure_no", param.getString("workprocedure_no")); + bomDtlParam.put("workprocedure_name", param.getString("workprocedure_name")); + bomDtlParam.put("connection_method", "ES"); + bomDtlParam.put("is_front", param.getString("is_front")); + bomDtlParam.put("bom_status", "01"); + bomDtlParam.put("create_id", currentUserId); + bomDtlParam.put("create_name", nickName); + bomDtlParam.put("create_time", DateUtil.now()); + bomDtlParam.put("manufacture", param.getString("manufacture")); + bomDtlParam.put("instruction_type", "I"); + bomDtlParam.put("instruction_code", "In0"); + bomDtlParam.put("yield_rate", param.getString("yield_rate")); + bomDtlParam.put("endproduct_rate", param.getString("endproduct_rate")); + if("10".equals(col)) { + bomDtlParam.put("instruction_code", "In"); + JSONObject rawmaterialJson = wo_semirealrawmaterial.query("semi_material_id = '" + param.getString("material_id") + "'").uniqueResult(0); + if(!ObjectUtil.isEmpty(rawmaterialJson)) { + bomDtlParam.put("resources", rawmaterialJson.getString("raw_material_code")); + bomDtlParam.put("manufacture", rawmaterialJson.getString("rate_qty")); + } + else{ + bomDtlParam.put("resources", "0"); + bomDtlParam.put("manufacture", "0"); + } + } + else{ + //后段暂无产能 + int no = Integer.parseInt(col) - 10; + bomDtlParam.put("resources", param.getString("material_code") + "-" + no); + bomDtlParam.put("manufacture", ""); + } + //插入原材料明细 + pdm_bi_bomdtl.insert(bomDtlParam); + } + } + if(j == 13) { + //插入设备明细 + JSONArray deviceList = wo_device.query("is_delete = '0' and product_area = 'A1' and workprocedure_id = '" + param.getString("workprocedure_id") + "'").getResultJSONArray(0); + JSONObject bomDtlParam = new JSONObject(); + for(int d = 0; d < deviceList.size(); d++) { + JSONObject device = deviceList.getJSONObject(d); + bomDtlParam.put("resources", device.getString("device_code")); + bomDtlParam.put("bomdtl_id", IdUtil.getSnowflake(1, 1).nextId()); + bomDtlParam.put("bom_id", param.getString("bom_id")); + bomDtlParam.put("material_id", param.getString("material_id")); + bomDtlParam.put("material_code", param.getString("material_code")); + bomDtlParam.put("material_spec", param.getString("material_spec")); + bomDtlParam.put("qty_unit_name", param.getString("qty_unit_name")); + bomDtlParam.put("processroute_id", param.getString("processroute_id")); + bomDtlParam.put("workprocedure_id", param.getString("workprocedure_id")); + bomDtlParam.put("workprocedure_no", param.getString("workprocedure_no")); + bomDtlParam.put("workprocedure_name", param.getString("workprocedure_name")); + bomDtlParam.put("is_front", param.getString("is_front")); + bomDtlParam.put("piece_weight", param.getString("piece_weight")); + bomDtlParam.put("connection_method", "ES"); + bomDtlParam.put("bom_status", "01"); + bomDtlParam.put("create_id", currentUserId); + bomDtlParam.put("create_name", nickName); + bomDtlParam.put("create_time", DateUtil.now()); + bomDtlParam.put("manufacture", param.getString("manufacture")); + bomDtlParam.put("instruction_type", "U"); + bomDtlParam.put("instruction_code", "M"); + //插入明细表 + pdm_bi_bomdtl.insert(bomDtlParam); + } + } + } + param.put("bom_status", "01"); + param.put("create_mode", "03"); + param.put("create_id", currentUserId); + param.put("create_name", nickName); + param.put("create_time", DateUtil.now()); + if(isCreateBom) { + //插入主表 + wo_pdm_bi_bom.insert(param); + } + if(!CollectionUtils.isEmpty(errorMap)) { + throw new BadRequestException(JSON.toJSONString(errorMap)); + } + } + } + catch(Exception e) { + e.printStackTrace(); + throw new BadRequestException(e.getMessage()); + } + } + + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/impl/FactoryCalendarServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/impl/FactoryCalendarServiceImpl.java index 7f0ae7ee..bf878e81 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/impl/FactoryCalendarServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/impl/FactoryCalendarServiceImpl.java @@ -224,8 +224,8 @@ public class FactoryCalendarServiceImpl implements FactoryCalendarService{ JSONObject param = new JSONObject(); param.put("factorycalendar_id", String.valueOf(factorycalendar_id)); param.put("is_delete", "1"); - param.put("update_optid", currentUserId); - param.put("update_optname", nickName); + param.put("update_id", currentUserId); + param.put("update_name", nickName); param.put("update_time", DateUtil.now()); wo.update(param); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/wql/PDM_BI_BOM01.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/wql/PDM_BI_BOM01.wql index 72b56cfb..a80256a1 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/wql/PDM_BI_BOM01.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/wql/PDM_BI_BOM01.wql @@ -16,7 +16,7 @@ 输入.flag TYPEAS s_string 输入.bom TYPEAS s_string 输入.material TYPEAS s_string - 输入.bom_uuid TYPEAS s_string + 输入.bom_id TYPEAS s_string [临时表] @@ -50,8 +50,8 @@ material.material_spec FROM PDM_BI_BOM bom - left join md_me_materialbase material on bom.material_uuid = material.material_id - left join PDM_BI_ProductProcessRoute productProcessRoute on bom.processroute_uuid = productProcessRoute.productprocess_id + left join md_me_materialbase material on bom.material_id = material.material_id + left join PDM_BI_ProductProcessRoute productProcessRoute on bom.processroute_id = productProcessRoute.productprocess_id WHERE 1 = 1 OPTION 输入.material <> "" @@ -77,10 +77,10 @@ material.material_name FROM PDM_BI_BOMDtl dtl - LEFT JOIN pdm_bi_workprocedure workprocedure ON dtl.workprocedure_uuid = workprocedure.workprocedure_id - LEFT JOIN md_me_materialbase material ON dtl.material_uuid = material.material_id + LEFT JOIN pdm_bi_workprocedure workprocedure ON dtl.workprocedure_id = workprocedure.workprocedure_id + LEFT JOIN md_me_materialbase material ON dtl.material_id = material.material_id where - dtl.bom_uuid = 输入.bom_uuid + dtl.bom_id = 输入.bom_id order by dtl.seq_no ENDSELECT diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/wql/pdm.xls b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/wql/pdm.xls index d00588e9..5f3eac40 100644 Binary files a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/wql/pdm.xls and b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/wql/pdm.xls differ diff --git a/mes/qd/src/api/wms/pdm/bom.js b/mes/qd/src/api/wms/pdm/bom.js index d1b6c425..bb8c6c0d 100644 --- a/mes/qd/src/api/wms/pdm/bom.js +++ b/mes/qd/src/api/wms/pdm/bom.js @@ -64,4 +64,12 @@ export function cancelSubmit(data) { }) } -export default { add, edit, del, cancelSubmit, submits, getDtl, getProduceProcessRouteByMaterialId, getworkprocedureListByProduceProcessRouteId } +export function excelImport(data) { + return request({ + url: 'api/bom/excelImport', + method: 'post', + data + }) +} + +export default { add, edit, del, cancelSubmit, submits, getDtl, getProduceProcessRouteByMaterialId, getworkprocedureListByProduceProcessRouteId, excelImport } diff --git a/mes/qd/src/views/wms/masterdata_manage/master/semirealrawmaterial/index.vue b/mes/qd/src/views/wms/masterdata_manage/master/semirealrawmaterial/index.vue index c3938cff..c1b19b1d 100644 --- a/mes/qd/src/views/wms/masterdata_manage/master/semirealrawmaterial/index.vue +++ b/mes/qd/src/views/wms/masterdata_manage/master/semirealrawmaterial/index.vue @@ -5,9 +5,16 @@
- - + +
- + @@ -80,16 +87,16 @@ :header-cell-style="{'text-align':'center'}" @selection-change="crud.selectionChangeHandler" > - - - - - - - - - - + + + + + + + + + + + diff --git a/mes/qd/src/views/wms/pdm/base/bom/index.vue b/mes/qd/src/views/wms/pdm/base/bom/index.vue index 9776b6d2..e28c3726 100644 --- a/mes/qd/src/views/wms/pdm/base/bom/index.vue +++ b/mes/qd/src/views/wms/pdm/base/bom/index.vue @@ -12,6 +12,16 @@ + + 导入 + {{ scope.row.bom_code }} - - - - - - - - + + + + + + + + - + - + @@ -87,12 +102,13 @@ import crudOperation from '@crud/CRUD.operation' import udOperation from '@crud/UD.operation' import pagination from '@crud/Pagination' import AddDialog from '@/views/wms/pdm/base/bom/AddDialog' +import UploadDialog from '@/views/wms/pdm/base/bom/UploadDialog' const defaultForm = { bom_uuid: null, bom_code: null, bom_name: null, material_uuid: null, processroute_uuid: null, yield_rate: null, endproduct_rate: null, bom_status: null, detail_count: null, remark: null, create_id: null, create_name: null, create_time: null, update_optid: null, update_optname: null, update_time: null } export default { name: 'Bom', dicts: ['BOM_STATUS'], - components: { pagination, crudOperation, rrOperation, udOperation, AddDialog }, + components: { pagination, crudOperation, rrOperation, udOperation, AddDialog, UploadDialog }, mixins: [presenter(), header(), form(defaultForm), crud()], cruds() { return CRUD({ title: 'BOM单管理', url: 'api/bom', idField: 'bom_uuid', sort: 'bom_uuid,desc', @@ -107,6 +123,7 @@ export default { }, data() { return { + uploadShow: false, permission: { }, rules: { @@ -149,6 +166,9 @@ export default { return true } }, + tableChanged3() { + this.crud.toQuery() + }, // 取消提交 cancelSubmit(row) { crudBom.cancelSubmit({ bom_uuid: row.bom_uuid }).then(res => { diff --git a/mes/qd/src/views/wms/pdm/base/productRoute/AddDialog.vue b/mes/qd/src/views/wms/pdm/base/productRoute/AddDialog.vue index a359b6ec..bbe0ac09 100644 --- a/mes/qd/src/views/wms/pdm/base/productRoute/AddDialog.vue +++ b/mes/qd/src/views/wms/pdm/base/productRoute/AddDialog.vue @@ -30,7 +30,7 @@ - + diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/AcsConfig.java b/wcs/nladmin-system/src/main/java/org/nl/acs/AcsConfig.java index a3497a34..7566ac12 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/AcsConfig.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/AcsConfig.java @@ -42,6 +42,7 @@ public interface AcsConfig { String ERPURL = "erpurl"; //是否存在wms系统 String HASWMS = "hasWms"; + String ISTEST = "isTest"; String ISFEEDDEVICESTATUS = "isFeedDeviceStatus"; //路由选择 String ROUTE = "route"; diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/acsEnum/StatusEnum.java b/wcs/nladmin-system/src/main/java/org/nl/acs/acsEnum/StatusEnum.java index 7967eb74..bd0b4afb 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/acsEnum/StatusEnum.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/acsEnum/StatusEnum.java @@ -50,7 +50,7 @@ public enum StatusEnum { KZ_EMPTY_REQ("4", "叫空框请求(刻字)", ""), BZ_FULL_REQ("5", "叫满框请求(包装)", ""), BZ_EMPTY_REQ("6", "送空框请求(包装)", ""), - QX_LACK_REQ("7", "清洗机缺料请求", ""), + QX_LACK_REQ("7", "清洗机上料请求", ""), QX_FULL_REQ("8", "清洗机满料请求", ""), QXXL_FULL_REQ("9", "取满框请求(清洗下料)", ""), QXXL_EMPTY_REQ("10", "叫空框请求(清洗下料)", ""), diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/agv/server/NDCAgvService.java b/wcs/nladmin-system/src/main/java/org/nl/acs/agv/server/NDCAgvService.java index 0a776412..e12db06c 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/agv/server/NDCAgvService.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/agv/server/NDCAgvService.java @@ -14,13 +14,21 @@ public interface NDCAgvService { Map findAllAgvFromCache(); /** - * 删除NDC任务 + * 删除NDC任务(诺宝) * * @param inst * @throws Exception */ public void deleteAgvInstToNDC(Instruction inst) throws Exception; + /** + * 删除NDC任务(叉车) + * + * @param inst + * @throws Exception + */ + public void deleteAgvOneInstToNDC(Instruction inst) throws Exception; + /** * 下发任务 * diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java b/wcs/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java index b7b9a15e..6ef48991 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java @@ -66,6 +66,38 @@ public class NDCAgvServiceImpl implements NDCAgvService { } + @LokiLog(type = LokiLogType.AGV) + @Override + public void deleteAgvOneInstToNDC(Instruction inst) throws Exception { + if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), "1")) { + int index = Integer.parseInt(inst.getAgv_jobno()); + + byte indexhigh = (byte) IntToHexHigh(index); + byte indexlow = (byte) IntToHexLow(index); + + String str = "十进制下发:"; + String str1 = "十六进制下发:"; + str += "index:" + index; + str1 += "ikey:" + hexToString(indexhigh & 0xFF) + hexToString(indexlow & 0xFF); + System.out.println(str); + System.out.println(str1); + + byte[] b = new byte[]{(byte) 0X87, (byte) 0XCD, + (byte) 0X00, (byte) 0X08, + (byte) 0X00, (byte) 0X06, + (byte) 0X00, (byte) 0X01, + (byte) 0X00, (byte) 0X6E, + (byte) 0X00, (byte) 0X02, + (byte) indexhigh, (byte) indexlow, + }; + log.info("下发删除AGV指令--{}", Bytes2HexString(b)); + if (ObjectUtil.isNotEmpty(b)) { + OneNDCSocketConnectionAutoRun.write(b); + System.out.println("下发删除agv指令数据:" + Bytes2HexString(b)); + } + } + + } @LokiLog(type = LokiLogType.AGV) @Override diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/auto/run/NDCSocketConnectionAutoRun.java b/wcs/nladmin-system/src/main/java/org/nl/acs/auto/run/NDCSocketConnectionAutoRun.java index 92d6a46a..ce64f573 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/auto/run/NDCSocketConnectionAutoRun.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/auto/run/NDCSocketConnectionAutoRun.java @@ -69,6 +69,8 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable { String ip = paramService.findByCode(AcsConfig.AGVURL).getValue(); int port = Integer.parseInt(paramService.findByCode(AcsConfig.AGVPORT).getValue()); socket = new Socket(ip, port); + //加上超时时间5秒 +// socket.setSoTimeout(5000); byte[] bytes = new byte[256]; dos = new DataOutputStream(socket.getOutputStream()); dis = new DataInputStream(socket.getInputStream()); diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device/service/impl/DeviceServiceImpl.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device/service/impl/DeviceServiceImpl.java index fb9a7342..8a8d5fd0 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device/service/impl/DeviceServiceImpl.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device/service/impl/DeviceServiceImpl.java @@ -631,7 +631,9 @@ public class DeviceServiceImpl implements DeviceService, ApplicationAutoInitial celldto.setX(formatNum(x)); celldto.setY(formatNum(i)); celldto.setZ(formatNum(j)); - //celldto.setAddress(Integer.parseInt(CodeUtil.getNewCode("NDCADDRESS_NO"))); +// celldto.setAddress(Integer.parseInt(CodeUtil.getNewCode("NDCADDRESS_NO"))); + //临时生成货位用 + celldto.setAddress(Integer.parseInt("3"+device_code.substring(device_code.length()-1)+formatNum(i)+formatNum(j).substring(formatNum(j).length()-1))); celldto.setCreate_by("init"); // celldto.setCreate_time(SecurityUtils.getCurrentUsername()); celldto.setCreate_time(DateUtil.now()); diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java index 3f821a7a..19ad1685 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java @@ -126,7 +126,7 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic StandardStorageDeviceDriver standardStorageDeviceDriver; //刻字上料线体 HailiangEngravingInDeviceDriver hailiangEngravingInDeviceDriver; - //清洗下料 + // HailiangCleaningPutLineDeviceDriver hailiangCleaningPutLineDeviceDriver; //开始任务/上报订单号 diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_cleaning_feeding_line/HailiangCleaningFeedingLineDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_cleaning_feeding_line/HailiangCleaningFeedingLineDriver.java index 03fe053a..2aa148de 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_cleaning_feeding_line/HailiangCleaningFeedingLineDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_cleaning_feeding_line/HailiangCleaningFeedingLineDriver.java @@ -73,6 +73,9 @@ public class HailiangCleaningFeedingLineDriver extends AbstractOpcDeviceDriver i int error = 0; //上料批次号 int in_pcsn = 0; + //上料命令确认完毕 + int to_in_confirm_finish = 0; + int last_mode = 0; int last_is_open = 0; @@ -82,6 +85,7 @@ public class HailiangCleaningFeedingLineDriver extends AbstractOpcDeviceDriver i int last_allowed_in = 0; int last_error = 0; int last_in_pcsn = 0; + int last_to_in_confirm_finish = 0; Boolean isonline = true; String message = null; @@ -118,6 +122,7 @@ public class HailiangCleaningFeedingLineDriver extends AbstractOpcDeviceDriver i allowed_in = this.itemProtocol.getItem_allowed_in(); error = this.itemProtocol.getItem_error(); in_pcsn = this.itemProtocol.getItem_in_pcsn(); + to_in_confirm_finish = this.itemProtocol.getItem_to_in_confirm_finish(); if (mode != last_mode) { logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode); } @@ -200,22 +205,36 @@ public class HailiangCleaningFeedingLineDriver extends AbstractOpcDeviceDriver i } //反馈mes清洗上料完成 - if (mode == 1 && task_finish == 1 && !requireSucess) { - boolean flag = feedMesTaskClear(in_pcsn); - this.noFeedMessage = null; +// if (mode == 1 && task_finish == 1 && !requireSucess) { +// boolean flag = feedMesTaskClear(in_pcsn); +// this.noFeedMessage = null; +// if (flag) { +// this.message = "反馈清洗上料完成成功"; +// } +// } else { +// if (task_finish == 1) { +// String notFeedMessage = "未反馈mes清洗上料完成原因:"; +// if (mode != 1) { +// notFeedMessage += ""; +// } +//// if (requireSucess) { +//// notFeedMessage += "请求标记未复位,"; +//// } +// this.noFeedMessage = this.replace(notFeedMessage); +// } +// } + + if (mode == 1 && task_finish == 1 ) { + boolean flag = washTask(in_pcsn); if (flag) { this.message = "反馈清洗上料完成成功"; } - } else { - if (task_finish == 1) { - String notFeedMessage = "未反馈mes清洗上料完成原因:"; - if (mode != 1) { - notFeedMessage += ""; - } - if (requireSucess) { - notFeedMessage += "请求标记未复位,"; - } - this.noFeedMessage = this.replace(notFeedMessage); + } + + if (mode == 1 && to_in_confirm_finish == 1 ) { + boolean flag = washTaskRun(in_pcsn); + if (flag) { + this.message = "反馈清洗上料执行中"; } } } @@ -253,7 +272,7 @@ public class HailiangCleaningFeedingLineDriver extends AbstractOpcDeviceDriver i //下发储料仓去皮 hailiangCleaningMachineStorageStationDeviceDriver.writing("to_peel","1"); //下发称重 - hailiangCleaningMachineStorageStationDeviceDriver.writing("to_open_weight","1"); +// hailiangCleaningMachineStorageStationDeviceDriver.writing("to_open_weight","1"); } }); //修改工单状态为执行中 @@ -344,6 +363,70 @@ public class HailiangCleaningFeedingLineDriver extends AbstractOpcDeviceDriver i // } } + /** + * 上料完成以后反馈mes 上料设备号 + */ + private boolean washTask(int in_pcsn) { + ProduceshiftorderDto dto = produceshiftorderService.findOrderByDeviceCode(this.getDevice_code()); + if (dto != null) { + if (!StrUtil.equals(dto.getOrder_code(),String.valueOf(in_pcsn))){ + return false; + } + this.writing("to_confirm_finished", "1"); + String[] in_devices = dto.getIn_devices().split(","); + //上料完成清除储料仓内存中的物料信息 + Arrays.stream(in_devices).forEach(device_code -> { + Device device = deviceAppService.findDeviceByCode(device_code); + if (device.getDeviceDriver() instanceof HailiangCleaningMachineStorageStationDeviceDriver) { + HailiangCleaningMachineStorageStationDeviceDriver hailiangCleaningMachineStorageStationDeviceDriver = (HailiangCleaningMachineStorageStationDeviceDriver) device.getDeviceDriver(); + hailiangCleaningMachineStorageStationDeviceDriver.setMaterial_code(null); + //下发储料仓去皮 + hailiangCleaningMachineStorageStationDeviceDriver.writing("to_peel","1"); + } + }); + //修改工单状态为执行中 + dto.setOrder_status("2"); + produceshiftorderService.update(dto); + // TODO 反馈mes + JSONObject reqParam = new JSONObject(); + reqParam.put("in_pcsn", in_pcsn); + reqParam.put("status", StatusEnum.TASK_FINISH.getCode()); + HttpResponse httpResponse = acsToWmsService.washTask(reqParam); + if (ObjectUtil.isNotEmpty(httpResponse) && httpResponse.getStatus() == 200) { + requireSucess = true; + return true; + } + } + return false; + + } + + /** + * 上料执行中反馈mes + */ + private boolean washTaskRun(int in_pcsn) { + ProduceshiftorderDto dto = produceshiftorderService.findOrderByDeviceCode(this.getDevice_code()); + if (dto != null) { + if (!StrUtil.equals(dto.getOrder_code(),String.valueOf(in_pcsn))){ + return false; + } + + //修改工单状态为执行中 + dto.setOrder_status("1"); + produceshiftorderService.update(dto); + // TODO 反馈mes + JSONObject reqParam = new JSONObject(); + reqParam.put("in_pcsn", in_pcsn); + reqParam.put("status", StatusEnum.TASK_RUNNING.getCode()); + HttpResponse httpResponse = acsToWmsService.washTask(reqParam); + if (ObjectUtil.isNotEmpty(httpResponse) && httpResponse.getStatus() == 200) { + requireSucess = true; + return true; + } + } + return false; + + } /** * 获取设备监控信息 @@ -393,7 +476,7 @@ public class HailiangCleaningFeedingLineDriver extends AbstractOpcDeviceDriver i */ @Override public void issuedOrderInfo(ProduceshiftorderDto dto) { - HailiangCleaningMachineStorageStationDeviceDriver hailiangCleaningMachineStorageStationDeviceDriver; + String[] in_devices = dto.getIn_devices().split(","); //上料储料仓总重量 int weightSum = 0; @@ -404,7 +487,7 @@ public class HailiangCleaningFeedingLineDriver extends AbstractOpcDeviceDriver i String in_device = in_devices[i]; Device device = deviceAppService.findDeviceByCode(in_device); if (device != null) { - hailiangCleaningMachineStorageStationDeviceDriver = (HailiangCleaningMachineStorageStationDeviceDriver) device.getDeviceDriver(); + HailiangCleaningMachineStorageStationDeviceDriver hailiangCleaningMachineStorageStationDeviceDriver = (HailiangCleaningMachineStorageStationDeviceDriver) device.getDeviceDriver(); weightSum += hailiangCleaningMachineStorageStationDeviceDriver.getSilo_weight(); qtySum += hailiangCleaningMachineStorageStationDeviceDriver.getFull_number(); hailiangCleaningMachineStorageStationDeviceDriver.writing("to_feeding", "1"); @@ -412,10 +495,11 @@ public class HailiangCleaningFeedingLineDriver extends AbstractOpcDeviceDriver i } //下发电气信号 Map map = new LinkedHashMap<>(); - map.put("to_pcsn",dto.getOrder_id());//下发批次号,暂时用工单号 + map.put("to_pcsn",dto.getOrder_code());//下发批次号,暂时用工单号 map.put("to_all_num", String.valueOf(qtySum)); map.put("to_all_weight", String.valueOf(weightSum)); map.put("to_in_confirm_finish", "1"); + map.put("allowed_in","1"); this.writing(map); } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_cleaning_feeding_line/ItemProtocol.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_cleaning_feeding_line/ItemProtocol.java index d991a5c9..d7b08d01 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_cleaning_feeding_line/ItemProtocol.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_cleaning_feeding_line/ItemProtocol.java @@ -69,7 +69,9 @@ public class ItemProtocol { public int getItem_task_finish() { return this.getOpcIntegerValue(item_task_finish); } - + public int getItem_to_in_confirm_finish() { + return this.getOpcIntegerValue(item_to_in_confirm_finish); + } public int getItem_allowed_in() { return this.getOpcIntegerValue(item_allowed_in); } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_cleaning_put_line/HailiangCleaningPutLineDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_cleaning_put_line/HailiangCleaningPutLineDeviceDriver.java index bf946b5a..883b2c49 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_cleaning_put_line/HailiangCleaningPutLineDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_cleaning_put_line/HailiangCleaningPutLineDeviceDriver.java @@ -87,7 +87,7 @@ public class HailiangCleaningPutLineDeviceDriver extends AbstractOpcDeviceDriver //上料批次号 int in_pcsn = 0; //收料位1条码 - int barcode = 0; + String barcode = ""; //收料位1批次入料总数量 int all_num = 0; //收料位1批次入料总重量 @@ -99,6 +99,11 @@ public class HailiangCleaningPutLineDeviceDriver extends AbstractOpcDeviceDriver //待机时间(S) int await_time = 0; + int barcode_1 = 0; + int barcode_2 = 0; + int barcode_3 = 0; + int barcode_4 = 0; + //工作模式 int last_mode = 0; @@ -189,11 +194,15 @@ public class HailiangCleaningPutLineDeviceDriver extends AbstractOpcDeviceDriver now_weight = this.itemProtocol.getItem_now_weight(); full_weight = this.itemProtocol.getItem_full_weight(); in_pcsn = this.itemProtocol.getItem_in_pcsn(); - barcode = this.itemProtocol.getItem_barcode(); + barcode_1 = this.itemProtocol.getItem_barcode_1(); + barcode_2 = this.itemProtocol.getItem_barcode_2(); + barcode_3 = this.itemProtocol.getItem_barcode_3(); + barcode_4 = this.itemProtocol.getItem_barcode_4(); all_num = this.itemProtocol.getItem_all_num(); all_weight = this.itemProtocol.getItem_all_weight(); device_running_time = this.itemProtocol.getItem_device_running_time(); await_time = this.itemProtocol.getItem_await_time(); + barcode = stringToascii(barcode_1) + stringToascii(barcode_2) + stringToascii(barcode_3) + stringToascii(barcode_4); if (mode != last_mode) { logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode); } @@ -285,7 +294,7 @@ public class HailiangCleaningPutLineDeviceDriver extends AbstractOpcDeviceDriver } } //工作模式联机、强制搬出请求 就申请agv任务 - if (mode == 1 && empty_req == 1 && put_line_ready ==0 && !requireSucess) { + if (mode == 1 && compel_full_req == 1 && put_line_ready ==0 && !requireSucess) { boolean flag = apply_task(StatusEnum.QXXL_COMPEL_REQ.getCode()); this.noApplyTaskMessage = null; if (flag) { @@ -430,6 +439,225 @@ public class HailiangCleaningPutLineDeviceDriver extends AbstractOpcDeviceDriver last_await_time = await_time; } + public String stringToascii(int num) { + String str = ""; + switch (num) { + case 48: + str = "0"; + break; + case 49: + str = "1"; + break; + case 50: + str = "2"; + break; + case 51: + str = "3"; + break; + case 52: + str = "4"; + break; + case 53: + str = "5"; + break; + case 54: + str = "6"; + break; + case 55: + str = "7"; + break; + case 56: + str = "8"; + break; + case 57: + str = "9"; + break; + case 65: + str = "A"; + break; + case 66: + str = "B"; + break; + case 67: + str = "C"; + break; + case 68: + str = "D"; + break; + case 69: + str = "E"; + break; + case 70: + str = "F"; + break; + case 71: + str = "G"; + break; + case 72: + str = "H"; + break; + case 73: + str = "I"; + break; + case 74: + str = "J"; + break; + case 75: + str = "K"; + break; + case 76: + str = "L"; + break; + case 77: + str = "M"; + break; + case 78: + str = "N"; + break; + case 79: + str = "O"; + break; + case 80: + str = "P"; + break; + case 81: + str = "Q"; + break; + case 82: + str = "R"; + break; + case 83: + str = "S"; + break; + case 84: + str = "T"; + break; + case 85: + str = "U"; + break; + case 86: + str = "V"; + break; + case 87: + str = "W"; + break; + case 88: + str = "X"; + break; + case 89: + str = "Y"; + break; + case 90: + str = "Z"; + break; + case 97: + str = "a"; + break; + case 98: + str = "b"; + break; + case 99: + str = "c"; + break; + case 100: + str = "d"; + break; + case 101: + str = "e"; + break; + case 102: + str = "f"; + break; + case 103: + str = "g"; + break; + case 104: + str = "h"; + break; + case 105: + str = "i"; + break; + case 106: + str = "j"; + break; + case 107: + str = "k"; + break; + case 108: + str = "l"; + break; + case 109: + str = "m"; + break; + case 110: + str = "n"; + break; + case 111: + str = "o"; + break; + case 112: + str = "p"; + break; + case 113: + str = "q"; + break; + case 114: + str = "r"; + break; + case 115: + str = "s"; + break; + case 116: + str = "t"; + break; + case 117: + str = "u"; + break; + case 118: + str = "v"; + break; + case 119: + str = "w"; + break; + case 120: + str = "x"; + break; + case 121: + str = "y"; + break; + case 122: + str = "z"; + break; + + case 40: + str = "("; + break; + case 41: + str = ")"; + break; + case 43: + str = "+"; + break; + case 45: + str = "-"; + break; + case 47: + str = "/"; + break; + case 91: + str = "["; + break; + case 93: + str = "]"; + break; + case 95: + str = "_"; + break; + default: + str = "*"; + } + return str; + } /** * 申请任务 * @@ -444,9 +672,10 @@ public class HailiangCleaningPutLineDeviceDriver extends AbstractOpcDeviceDriver reqParam.put("type", code); reqParam.put("device_code", this.getDevice_code()); reqParam.put("in_pcsn", this.getIn_pcsn()); - reqParam.put("barcode", this.getBarcode()); - reqParam.put("full_weight", this.getFull_weight()); - reqParam.put("all_num",this.getAll_num()); + reqParam.put("workorder_code", this.getIn_pcsn()); + reqParam.put("vehicle_code", this.getBarcode()); + reqParam.put("weight", this.getFull_weight()); + reqParam.put("qty",this.getAll_num()); HttpResponse httpResponse = acsToWmsService.applyTaskToWms(reqParam); if (ObjectUtil.isNotEmpty(httpResponse) && httpResponse.getStatus() == 200) { JSONObject resp = JSONObject.parseObject(httpResponse.body()); diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_cleaning_put_line/ItemProtocol.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_cleaning_put_line/ItemProtocol.java index ab908d57..c5daaad0 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_cleaning_put_line/ItemProtocol.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_cleaning_put_line/ItemProtocol.java @@ -3,8 +3,6 @@ package org.nl.acs.device_driver.basedriver.hailiang_one.hailiang_cleaning_put_l import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; -import org.nl.acs.device_driver.basedriver.hailiang_one.hailiang_cleaning_feeding_line.HailiangCleaningFeedingLineDriver; -import org.nl.acs.device_driver.basedriver.hailiang_one.hailiang_cleaning_machine.HailiangCleaningMachineDeviceDriver; import java.util.ArrayList; import java.util.List; @@ -28,7 +26,11 @@ public class ItemProtocol { public static String item_error = "error"; //报警信号 public static String item_now_weight = "now_weight";//收料位1实时重量 public static String item_full_weight = "full_weight";//收料位1满料框重量 - public static String item_barcode = "barcode";//收料位1条码 + + public static String item_barcode_1 = "barcode_1";//收料位1条码 + public static String item_barcode_2 = "barcode_2";//收料位1条码 + public static String item_barcode_3 = "barcode_3";//收料位1条码 + public static String item_barcode_4 = "barcode_4";//收料位1条码 public static String item_in_pcsn = "in_pcsn";//收料位1批次号(上料批次号) public static String item_all_num = "all_num";//收料位1批次入料总数量 public static String item_all_weight = "all_weight";//收料位1批次入料总重量 @@ -116,9 +118,7 @@ public class ItemProtocol { public int getItem_in_pcsn() { return this.getOpcIntegerValue(item_in_pcsn); } - public int getItem_barcode() { - return this.getOpcIntegerValue(item_barcode); - } + public int getItem_all_num() { return this.getOpcIntegerValue(item_all_num); } @@ -143,8 +143,35 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_mode); } + public int getItem_barcode_1() { + return this.getOpcIntegerValue(item_barcode_1); + } + + public int getItem_barcode_2() { + return this.getOpcIntegerValue(item_barcode_2); + } + + public int getItem_barcode_3() { + return this.getOpcIntegerValue(item_barcode_3); + } + + public int getItem_barcode_4() { + return this.getOpcIntegerValue(item_barcode_4); + } Boolean isonline; + public Byte getOpcByteValue(String protocol) { + Byte value = this.driver.getByteValue(protocol); + if (value == null) { + setIsonline(false); + } else { + setIsonline(true); + return value; + } + return 57; + + } + public int getOpcIntegerValue(String protocol) { Integer value = this.driver.getIntegeregerValue(protocol); if (value == null) { @@ -154,7 +181,6 @@ public class ItemProtocol { return value; } return 0; - } public static List getReadableItemDtos() { @@ -174,7 +200,10 @@ public class ItemProtocol { list.add(new ItemDto(item_error, "故障信息", "DB1.W4")); list.add(new ItemDto(item_now_weight, "收料位1实时重量", "DB1.D84")); list.add(new ItemDto(item_full_weight, "收料位1满料框重量", "DB1.D88")); - list.add(new ItemDto(item_barcode, "收料位1条码", "DB1.D100")); + list.add(new ItemDto(item_barcode_1, "收料位1条码", "DB1.B100")); + list.add(new ItemDto(item_barcode_2, "收料位1条码", "DB1.B101")); + list.add(new ItemDto(item_barcode_3, "收料位1条码", "DB1.B102")); + list.add(new ItemDto(item_barcode_4, "收料位1条码", "DB1.B103")); list.add(new ItemDto(item_in_pcsn, "收料位1批次号", "DB1.D116")); list.add(new ItemDto(item_all_num, "收料位1批次入料总数量", "DB1.D120")); list.add(new ItemDto(item_all_weight, "收料位1批次入料总重量", "DB1.D124")); diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_ealing_machine/EalingMachineDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_ealing_machine/EalingMachineDeviceDriver.java index b20edf32..a0d8f1e8 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_ealing_machine/EalingMachineDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_ealing_machine/EalingMachineDeviceDriver.java @@ -259,22 +259,25 @@ public class EalingMachineDeviceDriver extends AbstractOpcDeviceDriver implement public void issuedOrderInfo(ProduceshiftorderDto dto) { EalingOrderDto ealingOrderDto = dto.getEalingOrderDto(); if (ObjectUtil.isNotEmpty(ealingOrderDto)) { - String x = "0"; - String y = "0"; - String[] xys = ealingOrderDto.getX_y().split(","); - if (xys.length == 2) { - x = xys[0]; - y = xys[1]; - } Map map = new LinkedHashMap<>(); map.put("to_clear", "1"); map.put("to_order", ealingOrderDto.getOrder_code()); map.put("to_order_box_num", ealingOrderDto.getOrder_box_num()); map.put("to_order_bag_num", ealingOrderDto.getOrder_bag_num()); +// map.put("to_bag_num_of_box", ealingOrderDto.getBag_num_of_box()); +// map.put("to_one_box_weight", ealingOrderDto.getOne_box_weight()); +// map.put("to_one_bag_weight", ealingOrderDto.getOne_bag_weight()); map.put("to_template_no", ealingOrderDto.getTemplate_no()); //模板号大于100 再下发这些信息 if (StrUtil.isNotEmpty(ealingOrderDto.getTemplate_no()) && Integer.parseInt(ealingOrderDto.getTemplate_no()) > 100) { + String x = "0"; + String y = "0"; + String[] xys = ealingOrderDto.getX_y().split(","); + if (xys.length == 2) { + x = xys[0]; + y = xys[1]; + } map.put("to_x" + x, x); map.put("to_y" + y, y); map.put("to_bag_length", ealingOrderDto.getBag_length()); diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_engraving_in/HailiangEngravingInDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_engraving_in/HailiangEngravingInDeviceDriver.java index b1e42612..8b9221a9 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_engraving_in/HailiangEngravingInDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_engraving_in/HailiangEngravingInDeviceDriver.java @@ -8,6 +8,7 @@ import com.alibaba.fastjson.JSONObject; import lombok.Data; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.nl.acs.AcsConfig; import org.nl.acs.acsEnum.InstActionEnum; import org.nl.acs.acsEnum.StatusEnum; import org.nl.acs.acsEnum.WorkerOrderEnum; @@ -19,6 +20,7 @@ import org.nl.acs.device_driver.basedriver.hailiang_one.ApplyTaskTime; import org.nl.acs.device_driver.basedriver.hailiang_one.IssuedDeviceOrderInfo; import org.nl.acs.device_driver.basedriver.hailiang_one.MonitoringLargeScreenData; import org.nl.acs.device_driver.basedriver.hailiang_one.RemoveDevicePhase; +import org.nl.acs.device_driver.basedriver.hailiang_one.hailiang_cleaning_machine_storage_station.HailiangCleaningMachineStorageStationDeviceDriver; import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; import org.nl.acs.ext.wms.service.AcsToWmsService; @@ -38,12 +40,11 @@ import org.nl.acs.task.service.TaskService; import org.nl.acs.task.service.dto.TaskDto; import org.nl.acs.task.service.impl.TaskServiceImpl; import org.nl.modules.common.utils.RedisUtils; +import org.nl.modules.system.service.ParamService; import org.nl.modules.wql.util.SpringContextHolder; import org.springframework.beans.factory.annotation.Autowired; -import java.util.Date; -import java.util.LinkedHashMap; -import java.util.Map; +import java.util.*; import java.util.concurrent.TimeUnit; /** @@ -70,7 +71,10 @@ public class HailiangEngravingInDeviceDriver extends AbstractOpcDeviceDriver imp TaskService taskService = SpringContextHolder.getBean(TaskServiceImpl.class); @Autowired RedisUtils redisUtils = SpringContextHolder.getBean(RedisUtils.class); - + @Autowired + TaskService taskserver = SpringContextHolder.getBean(TaskService.class); + @Autowired + ParamService paramService = SpringContextHolder.getBean(ParamService.class); //线体状态 int status = 0; //线体开机状态 @@ -190,7 +194,7 @@ public class HailiangEngravingInDeviceDriver extends AbstractOpcDeviceDriver imp Boolean requireSucess = false; //反馈设备状态请求标记 Boolean feedDeviceStatusFlag = false; - + Boolean is_test = false; //agv请求动作信息 private int agvphase = 0; private int index = 0; @@ -420,20 +424,20 @@ public class HailiangEngravingInDeviceDriver extends AbstractOpcDeviceDriver imp logServer.deviceExecuteLog(this.device_code, "", "", "读取信号值时出现异常:" + var17 + ",inst == null :" + ObjectUtil.isEmpty(inst)); } - if (!this.itemProtocol.getIsonline()) { - //this.setIsonline(false); - //this.setIserror(true); - message = "信号量同步异常"; - //未联机 - } else if (mode == 0) { - //this.setIsonline(false); - //this.setIserror(true); - message = "未联机"; - //有报警 - } else { - //this.setIsonline(true); - this.setIserror(false); - message = ""; +// if (!this.itemProtocol.getIsonline()) { +// //this.setIsonline(false); +// //this.setIserror(true); +// message = "信号量同步异常"; +// //未联机 +// } else if (mode == 0) { +// //this.setIsonline(false); +// //this.setIserror(true); +// message = "未联机"; +// //有报警 +// } else { +// //this.setIsonline(true); +// this.setIserror(false); +// message = ""; //有货、联机、满料请求申请AGV搬运任务 // if (gd_move == 1 && mode == 1 && empty_req == 1 && !requireSucess) { // boolean flag = apply_task(); @@ -458,7 +462,11 @@ public class HailiangEngravingInDeviceDriver extends AbstractOpcDeviceDriver imp // } //无货、联机、空箱请求申请AGV搬运任务 - if (gd_move == 0 && mode == 1 && empty_req == 1 && !requireSucess) { + if (gd_move == 1 && mode == 1 && empty_req == 1 && !requireSucess) { +// boolean flag_wash = washTaskRun(task); +// if (flag_wash) { +// this.message = "反馈刻字上料执行中"; +// } boolean flag = apply_empty_task(); this.noApplyTaskMessage = null; if (flag) { @@ -482,7 +490,8 @@ public class HailiangEngravingInDeviceDriver extends AbstractOpcDeviceDriver imp //到达取货点 if (agvphase == 0x03) { - if (ObjectUtil.isNotEmpty(inst) && gd_move == 1) { +// if (gd_move == 1 && ObjectUtil.isNotEmpty(inst)) { + if (ObjectUtil.isNotEmpty(inst)) { inst.setExecute_status(InstActionEnum.EXECUTE_TO_GET.getCode()); instructionService.update(inst); byte[] data = agvService.sendAgvOneModeInst(agvphase, index, 0); @@ -505,7 +514,8 @@ public class HailiangEngravingInDeviceDriver extends AbstractOpcDeviceDriver imp //取货完成 if (agvphase == 0x05) { - if (ObjectUtil.isNotEmpty(inst) && gd_move == 0) { +// if (ObjectUtil.isNotEmpty(inst) && gd_move == 0) { + if (ObjectUtil.isNotEmpty(inst)) { inst.setExecute_status(InstActionEnum.EXECUTE_GET_FINISH.getCode()); instructionService.update(inst); byte[] data = agvService.sendAgvOneModeInst(agvphase, index, 0); @@ -526,8 +536,11 @@ public class HailiangEngravingInDeviceDriver extends AbstractOpcDeviceDriver imp } } + //到达放货点 if (agvphase == 0x07) { - if (ObjectUtil.isNotEmpty(inst) && gd_move == 0) { + logServer.deviceExecuteLog(this.device_code, "", inst.getInstruction_code(), "刻字上料PS20上报到达放货点:" + ",inst == null :" + ObjectUtil.isEmpty(inst)); +// if (ObjectUtil.isNotEmpty(inst) && gd_move == 0) { + if (ObjectUtil.isNotEmpty(inst)) { inst.setExecute_status(InstActionEnum.EXECUTE_TO_PUT_FALL_SEND_FULL.getCode()); instructionService.update(inst); byte[] data = agvService.sendAgvOneModeInst(agvphase, index, 0); @@ -548,27 +561,54 @@ public class HailiangEngravingInDeviceDriver extends AbstractOpcDeviceDriver imp } } + //放货完成 if (agvphase == 0x09) { - if (ObjectUtil.isNotEmpty(inst) && mode == 1 && allow_put == 1) { +// if (ObjectUtil.isNotEmpty(inst) && mode == 1 && allow_put == 1) { + +// if (ObjectUtil.isNotEmpty(inst) && mode == 1) {//正式方案需要联机 + //一体机临时方案不判断联机 + + if (StrUtil.equals(paramService.findByCode(AcsConfig.ISTEST).getValue(), "1")) { + is_test = ObjectUtil.isNotEmpty(inst); + }else { + is_test = ObjectUtil.isNotEmpty(inst) && mode == 1; + } + if (is_test) { //放框完成 writing("to_agv_put_finish", "1"); - if (empty_req == 1){ - //判断电气上报的【剩余实时重量】>10kg 将【上料总重量】写给电气 - if (engraving_storage_now_weight > 10){ - writing("to_all_weight", String.valueOf(engraving_all_weight)); - inst.setExecute_status(InstActionEnum.EXECUTE_PUT_FALL_SEND_FULL_FINISH.getCode()); - instructionService.update(inst); - byte[] data = agvService.sendAgvOneModeInst(agvphase, index, 0); - OneNDCSocketConnectionAutoRun.write(data); - this.set(0, 0, null); - noFeedAgvMessage = null; - message = this.messageInfo(agvphase); - logServer.deviceExecuteLog(device_code, "", "", this.messageInfo(agvphase)); - }else { - writing("to_agv_put_finish", "1"); + //判断电气上报的【剩余实时重量】>10kg ,保障电气拉开气闸门下料 + logServer.deviceExecuteLog(device_code, "", "任务号"+inst.getTask_code(), "下发开闸门开始----"); + try { + Thread.sleep(5000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + int i = 0; + while (this.engraving_storage_now_weight < 10000 && i<5){ + writing("to_agv_put_finish", "1"); + i++; + logServer.deviceExecuteLog(device_code, "", "任务号"+inst.getTask_code(), "重量小于10KG循环下发拉闸门"); + } + logServer.deviceExecuteLog(device_code, "", "任务号"+inst.getTask_code(), "关闭闸门----反馈称重"); + inst.setExecute_status(InstActionEnum.EXECUTE_PUT_FALL_SEND_FULL_FINISH.getCode()); + instructionService.update(inst); + byte[] data = agvService.sendAgvOneModeInst(agvphase, index, 0); + OneNDCSocketConnectionAutoRun.write(data); + //agv任务完成,反馈mes + if (inst != null) { + TaskDto taskDto = taskserver.findByCodeFromCache(inst.getTask_code()); + logServer.deviceExecuteLog(device_code, "", "任务号"+inst.getTask_code(), "任务="+taskDto.getTask_code()); + if (taskDto != null) { + taskDto.setExt_param(new HashMap<>()); + taskDto.getExt_param().put("take_finish", "1"); + taskDto.getExt_param().put("weight", String.valueOf(engraving_storage_now_weight)); + taskserver.update(taskDto); } } - + this.set(0, 0, null); + noFeedAgvMessage = null; + message = this.messageInfo(agvphase); + logServer.deviceExecuteLog(device_code, "", "", this.messageInfo(agvphase)); } else { String notFeedAgvMessage = ""; if (gd_move != 1) { @@ -580,10 +620,17 @@ public class HailiangEngravingInDeviceDriver extends AbstractOpcDeviceDriver imp this.noFeedAgvMessage = this.replace(notFeedAgvMessage); } } - - + if (mode == 1 && task_finish == 1 ) { + boolean flag = washTask(task); + if (flag) { + this.message = "反馈刻字上料完成成功"; + } } +// } + + + last_status = status; last_is_open = is_open; last_is_running = is_running; @@ -715,6 +762,38 @@ public class HailiangEngravingInDeviceDriver extends AbstractOpcDeviceDriver imp // } // } + /** + * 上料完成以后反馈mes 上料设备号 + */ + private boolean washTaskRun(int task_code) { + // TODO 反馈mes + JSONObject reqParam = new JSONObject(); + reqParam.put("task_code", task_code); + reqParam.put("status", StatusEnum.TASK_RUNNING.getCode()); + HttpResponse httpResponse = acsToWmsService.washTask(reqParam); + if (ObjectUtil.isNotEmpty(httpResponse) && httpResponse.getStatus() == 200) { + requireSucess = true; + return true; + } + return false; + } + /** + * 上料完成以后反馈mes 上料设备号 + */ + private boolean washTask(int task_code) { + + this.writing("to_confirm_finished", "1"); + // TODO 反馈mes + JSONObject reqParam = new JSONObject(); + reqParam.put("task_code", task_code); + reqParam.put("status", StatusEnum.TASK_FINISH.getCode()); + HttpResponse httpResponse = acsToWmsService.washTask(reqParam); + if (ObjectUtil.isNotEmpty(httpResponse) && httpResponse.getStatus() == 200) { + requireSucess = true; + return true; + } + return false; + } /** * 下发工单信息 diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_engraving_in/ItemProtocol.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_engraving_in/ItemProtocol.java index 99c1d31a..909180f1 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_engraving_in/ItemProtocol.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_engraving_in/ItemProtocol.java @@ -1,5 +1,6 @@ package org.nl.acs.device_driver.basedriver.hailiang_one.hailiang_engraving_in; +import cn.hutool.core.util.ObjectUtil; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; @@ -38,6 +39,10 @@ public class ItemProtocol { public static String item_fl_now_weight = "fl_now_weight"; //回流实时重量 public static String item_fl_full_weight = "fl_full_weight"; //回流满框重量 public static String item_barcode = "barcode"; //料框条码 + public static String item_current_sort = "current_sort"; //当前上料序号 + public static String item_current_device = "current_device"; //当前上料站点 + public static String item_current_weight = "current_weight"; //当前站需要重量实时 + //开机 public static String item_to_open = "to_open"; @@ -69,6 +74,70 @@ public class ItemProtocol { public static String item_to_all_weight = "to_all_weight"; //回流塑料框自重 public static String item_to_fl_self_weight = "to_fl_self_weight"; + //任务顺序数组 + public static String item_to_sort_array = "to_sort_array"; + //设备数组 + public static String item_to_devices_array = "to_devices_array"; + //重量数组 + public static String item_to_weight_array = "to_weight_array"; + + //任务顺序1 + public static String item_to_sort1 = "to_sort1"; + //任务顺序2 + public static String item_to_sort2 = "to_sort2"; + //任务顺序3 + public static String item_to_sort3 = "to_sort3"; + public static String item_to_sort4 = "to_sort4"; + public static String item_to_sort5 = "to_sort5"; + public static String item_to_sort6 = "to_sort6"; + public static String item_to_sort7 = "to_sort7"; + public static String item_to_sort8 = "to_sort8"; + public static String item_to_sort9 = "to_sort9"; + public static String item_to_sort10 = "to_sort10"; + public static String item_to_sort11 = "to_sort11"; + public static String item_to_sort12 = "to_sort12"; + public static String item_to_sort13 = "to_sort13"; + public static String item_to_sort14 = "to_sort14"; + public static String item_to_sort15 = "to_sort15"; + + //站点1 + public static String item_to_devices1 = "to_devices1"; + //站点2 + public static String item_to_devices2 = "to_devices2"; + //站点3 + public static String item_to_devices3 = "to_devices3"; + public static String item_to_devices4 = "to_devices4"; + public static String item_to_devices5 = "to_devices5"; + public static String item_to_devices6 = "to_devices6"; + public static String item_to_devices7 = "to_devices7"; + public static String item_to_devices8 = "to_devices8"; + public static String item_to_devices9 = "to_devices9"; + public static String item_to_devices10 = "to_devices10"; + public static String item_to_devices11 = "to_devices11"; + public static String item_to_devices12 = "to_devices12"; + public static String item_to_devices13 = "to_devices13"; + public static String item_to_devices14 = "to_devices14"; + public static String item_to_devices15 = "to_devices15"; + + + //站点上料重量1 + public static String item_to_weight1 = "to_weight1"; + //站点2 + public static String item_to_weight2 = "to_weight2"; + //站点3 + public static String item_to_weight3 = "to_weight3"; + public static String item_to_weight4 = "to_weight4"; + public static String item_to_weight5 = "to_weight5"; + public static String item_to_weight6 = "to_weight6"; + public static String item_to_weight7 = "to_weight7"; + public static String item_to_weight8 = "to_weight8"; + public static String item_to_weight9 = "to_weight9"; + public static String item_to_weight10 = "to_weight10"; + public static String item_to_weight11 = "to_weight11"; + public static String item_to_weight12 = "to_weight12"; + public static String item_to_weight13 = "to_weight13"; + public static String item_to_weight14 = "to_weight14"; + public static String item_to_weight15 = "to_weight15"; private HailiangEngravingInDeviceDriver driver; @@ -185,6 +254,16 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_barcode); } + public float getItem_current_sort() { + return this.getOpcFloatValue(item_current_sort); + } + public float getItem_current_device() { + return this.getOpcFloatValue(item_current_device); + } + public float getItem_current_weight() { + return this.getOpcFloatValue(item_current_weight); + } + //是否有货 public int hasGoods(int move) { return move; @@ -201,7 +280,16 @@ public class ItemProtocol { return value; } return 0; + } + public float getOpcFloatValue(String protocol) { + Float value = this.driver.getFloatValue(protocol); + if (ObjectUtil.isEmpty(value)) { + + } else { + return value; + } + return 0.0f; } public static List getReadableItemDtos() { @@ -233,6 +321,9 @@ public class ItemProtocol { list.add(new ItemDto(item_fl_now_weight, "回流实时重量", "DB1.D132")); list.add(new ItemDto(item_fl_full_weight, "回流满框重量", "DB1.D136")); list.add(new ItemDto(item_barcode, "料框条码", "DB1.D140")); + list.add(new ItemDto(item_current_sort, "当前上料序号", "DB1.W12")); + list.add(new ItemDto(item_current_device, "当前上料站号", "DB1.W14")); + list.add(new ItemDto(item_current_weight, "当前站需要重量实时", "DB1.REAL144")); return list; } @@ -242,7 +333,7 @@ public class ItemProtocol { list.add(new ItemDto(item_to_engraving_sn, "刻字机编号", "DB2.W6")); list.add(new ItemDto(item_to_clean_open, "清洗机开关", "DB2.W8")); list.add(new ItemDto(item_to_clear, "当前产量清零", "DB2.W12")); - list.add(new ItemDto(item_to_confirm_finished, "确认完成", "DB2.W14")); +// list.add(new ItemDto(item_to_confirm_finished, "确认完成", "DB2.W14")); list.add(new ItemDto(item_to_dis_weight, "称重校验是否禁用", "DB2.W16")); list.add(new ItemDto(item_to_confirm_finished, "任务确认完成", "DB2.W20")); list.add(new ItemDto(item_to_agv_put_finish, "AGV放货完成", "DB2.W24")); @@ -254,6 +345,54 @@ public class ItemProtocol { list.add(new ItemDto(item_to_fl_full_weight, "回流满框重量标准值", "DB2.D100")); list.add(new ItemDto(item_to_all_weight, "上料总重量", "DB2.D104")); list.add(new ItemDto(item_to_fl_self_weight, "回流塑料框自重", "DB2.D108")); + list.add(new ItemDto(item_to_sort_array, "排序数组", "DB200.W0[15]")); + list.add(new ItemDto(item_to_devices_array, "站点数组", "DB200.W30[15]")); + list.add(new ItemDto(item_to_weight_array, "重量数组", "DB200.REAL60[15]")); + list.add(new ItemDto(item_to_sort1, "排序1", "DB200.W0")); + list.add(new ItemDto(item_to_sort2, "排序2", "DB200.W2")); + list.add(new ItemDto(item_to_sort3, "排序3", "DB200.W4")); + list.add(new ItemDto(item_to_sort4, "排序4", "DB200.W6")); + list.add(new ItemDto(item_to_sort5, "排序5", "DB200.W8")); + list.add(new ItemDto(item_to_sort6, "排序6", "DB200.W10")); + list.add(new ItemDto(item_to_sort7, "排序7", "DB200.W12")); + list.add(new ItemDto(item_to_sort8, "排序8", "DB200.W14")); + list.add(new ItemDto(item_to_sort9, "排序9", "DB200.W16")); + list.add(new ItemDto(item_to_sort10, "排序10", "DB200.W18")); + list.add(new ItemDto(item_to_sort11, "排序11", "DB200.W20")); + list.add(new ItemDto(item_to_sort12, "排序12", "DB200.W22")); + list.add(new ItemDto(item_to_sort13, "排序13", "DB200.W24")); + list.add(new ItemDto(item_to_sort14, "排序14", "DB200.W26")); + list.add(new ItemDto(item_to_sort15, "排序15", "DB200.W28")); + list.add(new ItemDto(item_to_devices1, "站点1", "DB200.W30")); + list.add(new ItemDto(item_to_devices2, "站点2", "DB200.W32")); + list.add(new ItemDto(item_to_devices3, "站点3", "DB200.W34")); + list.add(new ItemDto(item_to_devices4, "站点4", "DB200.W36")); + list.add(new ItemDto(item_to_devices5, "站点5", "DB200.W38")); + list.add(new ItemDto(item_to_devices6, "站点6", "DB200.W40")); + list.add(new ItemDto(item_to_devices7, "站点7", "DB200.W42")); + list.add(new ItemDto(item_to_devices8, "站点8", "DB200.W44")); + list.add(new ItemDto(item_to_devices9, "站点9", "DB200.W46")); + list.add(new ItemDto(item_to_devices10, "站点10", "DB200.W48")); + list.add(new ItemDto(item_to_devices11, "站点11", "DB200.W50")); + list.add(new ItemDto(item_to_devices12, "站点12", "DB200.W52")); + list.add(new ItemDto(item_to_devices13, "站点13", "DB200.W54")); + list.add(new ItemDto(item_to_devices14, "站点14", "DB200.W56")); + list.add(new ItemDto(item_to_devices15, "站点15", "DB200.W58")); + list.add(new ItemDto(item_to_weight1, "站点1上料重量", "DB200.REAL60")); + list.add(new ItemDto(item_to_weight2, "站点2上料重量", "DB200.REAL64")); + list.add(new ItemDto(item_to_weight3, "站点3上料重量", "DB200.REAL68")); + list.add(new ItemDto(item_to_weight4, "站点4上料重量", "DB200.REAL72")); + list.add(new ItemDto(item_to_weight5, "站点5上料重量", "DB200.REAL76")); + list.add(new ItemDto(item_to_weight6, "站点6上料重量", "DB200.REAL80")); + list.add(new ItemDto(item_to_weight7, "站点7上料重量", "DB200.REAL84")); + list.add(new ItemDto(item_to_weight8, "站点8上料重量", "DB200.REAL88")); + list.add(new ItemDto(item_to_weight9, "站点9上料重量", "DB200.REAL92")); + list.add(new ItemDto(item_to_weight10, "站点10上料重量", "DB200.REAL96")); + list.add(new ItemDto(item_to_weight11, "站点11上料重量", "DB200.REAL100")); + list.add(new ItemDto(item_to_weight12, "站点12上料重量", "DB200.REAL104")); + list.add(new ItemDto(item_to_weight13, "站点13上料重量", "DB200.REAL108")); + list.add(new ItemDto(item_to_weight14, "站点14上料重量", "DB200.REAL112")); + list.add(new ItemDto(item_to_weight15, "站点15上料重量", "DB200.REAL116")); return list; } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_packer_station/HailiangPackerStationDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_packer_station/HailiangPackerStationDeviceDriver.java index 3714d17e..25f28997 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_packer_station/HailiangPackerStationDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_packer_station/HailiangPackerStationDeviceDriver.java @@ -34,6 +34,7 @@ import org.nl.acs.log.service.DeviceExecuteLogService; import org.nl.acs.monitor.DeviceStageMonitor; import org.nl.acs.opc.Device; import org.nl.acs.order.service.ProduceshiftorderService; +import org.nl.acs.order.service.dto.EalingOrderDto; import org.nl.acs.order.service.dto.ProduceshiftorderDto; import org.nl.acs.task.service.TaskService; import org.nl.acs.task.service.dto.TaskDto; @@ -586,11 +587,21 @@ public class HailiangPackerStationDeviceDriver extends AbstractOpcDeviceDriver i // if (!this.getItemProtocol().getIsonline()) { // throw new BadRequestException("设备未开机,工单下发失败"); // } - Map map = new LinkedHashMap<>(); - map.put("to_clear", "1"); - map.put("to_order", dto.getOrder_code()); - map.put("to_order_prod_num", String.valueOf(dto.getQty())); - this.writing(map); + EalingOrderDto ealingOrderDto = dto.getEalingOrderDto(); + if (ealingOrderDto != null) { + String box_total_num = ealingOrderDto.getOrder_box_num(); + String bag_total_num = ealingOrderDto.getOrder_bag_num(); + String time = ealingOrderDto.getTime(); + Map map = new LinkedHashMap<>(); + map.put("to_clear", "1"); + map.put("to_order", dto.getOrder_code()); + // map.put("to_order_prod_num", String.valueOf(dto.getQty())); + map.put("to_order_prod_num", bag_total_num);//包装机总包数 + map.put("to_box_total_num", box_total_num);//总箱数 + map.put("to_bag_total_num", bag_total_num);//总袋数 + + this.writing(map); + } } /** diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_packer_station/ItemProtocol.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_packer_station/ItemProtocol.java index afc44a43..61923387 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_packer_station/ItemProtocol.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_packer_station/ItemProtocol.java @@ -253,7 +253,7 @@ public class ItemProtocol { list.add(new ItemDto(item_device_running_time, "包装机设备运转时间(S)", "DB1.D112")); list.add(new ItemDto(item_await_time, "包装机待机时间(S)", "DB1.D116")); list.add(new ItemDto(item_now_up_box_num, "当前装箱数量", "DB1.D124")); - list.add(new ItemDto(item_now_bag_num_of_box, "当前装箱机箱实时袋数量", "DB1.D128")); + list.add(new ItemDto(item_now_bag_num_of_box, "当前箱实时袋数量", "DB1.D128")); list.add(new ItemDto(item_now_bag_num, "当前装箱机袋装的总数量", "DB1.D132")); list.add(new ItemDto(item_now_seal_box_num, "当前封箱数量", "DB1.D136")); list.add(new ItemDto(item_order, "工单号", "DB1.D160")); diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_special_device/HailiangSpecialDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_special_device/HailiangSpecialDeviceDriver.java index 9c2f2eb0..34d7294e 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_special_device/HailiangSpecialDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_special_device/HailiangSpecialDeviceDriver.java @@ -325,7 +325,7 @@ public class HailiangSpecialDeviceDriver extends AbstractOpcDeviceDriver impleme } /** - * 专家暂停 + * 专机暂停 */ @Override public void toStop() { diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_unboxing_machine/UnboxingMachineDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_unboxing_machine/UnboxingMachineDeviceDriver.java index 582b5673..df6d11e7 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_unboxing_machine/UnboxingMachineDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_unboxing_machine/UnboxingMachineDeviceDriver.java @@ -199,7 +199,7 @@ public class UnboxingMachineDeviceDriver extends AbstractOpcDeviceDriver impleme String is_foreward = ealingOrderDto.getIs_foreward(); Map map = new LinkedHashMap<>(); map.put("to_clear", "1"); - map.put("to_is_foreward", is_foreward); + map.put("to_foreward", is_foreward); map.put("to_order_box_num", ealingOrderDto.getOrder_box_num()); map.put("to_order", ealingOrderDto.getOrder_code()); this.writing(map); diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/driver/OpcDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/driver/OpcDeviceDriver.java index edf93e8b..3f4e07eb 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/driver/OpcDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/driver/OpcDeviceDriver.java @@ -4,6 +4,7 @@ package org.nl.acs.device_driver.driver; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.sun.jna.platform.win32.WinDef; import org.nl.acs.device_driver.DeviceDriver; import org.nl.acs.opc.Device; import org.nl.acs.opc.OpcItemDto; @@ -93,4 +94,15 @@ public interface OpcDeviceDriver extends DeviceDriver { } + default Float getFloatValue(String protocol) { +// RedisUtils redisUtils = SpringContextHolder.getBean(RedisUtils.class); +// return (Float)redisUtils.get(this.getItem(protocol)); + return (Float) this.getOpcValueAccessor().getValue(this.getItem(protocol)); + } + default Byte getByteValue(String protocol) { + return (Byte) this.getOpcValueAccessor().getValue(this.getItem(protocol)); + } + default char getCharValue(String protocol) { + return (char) this.getOpcValueAccessor().getValue(this.getItem(protocol)); + } } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java b/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java index 316533c2..b3fca404 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java @@ -128,4 +128,58 @@ public class WmsToAcsController { return new ResponseEntity<>(wmstoacsService.replaceDevice(whereJson), HttpStatus.OK); } + @PostMapping("/putOver") + @Log("余料上完") + @ApiOperation("余料上完") + @SaIgnore + public ResponseEntity putOver(@RequestBody JSONObject param) { + return new ResponseEntity<>(wmstoacsService.putOver(param), HttpStatus.OK); + } + + @PostMapping("/handPour") + @Log("手工倒料") + @ApiOperation("手工倒料") + @SaIgnore + public ResponseEntity handPour(@RequestBody JSONObject param) { + return new ResponseEntity<>(wmstoacsService.handPour(param), HttpStatus.OK); + } + + @PostMapping("/startDischarge") + @Log("开始卸料") + @ApiOperation("开始卸料") + @SaIgnore + public ResponseEntity startDischarge(@RequestBody JSONObject param) { + return new ResponseEntity<>(wmstoacsService.startDischarge(param), HttpStatus.OK); + } + + @PostMapping("/handWeigh") + @Log("手动称重") + @ApiOperation("手动称重") + @SaIgnore + public ResponseEntity handWeigh(@RequestBody JSONObject param) { + return new ResponseEntity<>(wmstoacsService.handWeigh(param), HttpStatus.OK); + } + + @PostMapping("/cleanPut") + @Log("清洗下料") + @ApiOperation("清洗下料") + @SaIgnore + public ResponseEntity cleanPut(@RequestBody JSONObject param) { + return new ResponseEntity<>(wmstoacsService.cleanPut(param), HttpStatus.OK); + } + + @PostMapping("/cleaningIn") + @Log("清洗上料") + @ApiOperation("清洗上料") + @SaIgnore + public ResponseEntity cleaningIn(@RequestBody JSONObject param) { + return new ResponseEntity<>(wmstoacsService.cleaningIn(param), HttpStatus.OK); + } + @PostMapping("/engravingIn") + @Log("刻字上料") + @ApiOperation("刻字上料") + @SaIgnore + public ResponseEntity engravingIn(@RequestBody JSONObject param) { + return new ResponseEntity<>(wmstoacsService.engravingIn(param), HttpStatus.OK); + } } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java b/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java index 14bde518..155d242e 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java @@ -162,5 +162,11 @@ public interface AcsToWmsService { HttpResponse shipDeviceUpdate(JSONObject param); ApplyLabelingAndBindingResponse applyLabelingAndBindingRequest(ApplyLabelingAndBindingRequest param); - + /** + * 反馈清洗上料状态 + * + * @param param + * @return + */ + HttpResponse washTask(JSONObject param); } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java b/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java index e0b59655..20813899 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java @@ -107,5 +107,59 @@ public interface WmsToAcsService { */ Map queryDeviceDBValue(String whereJson); + /** + * 余料上完 + * + * @param param 条件 + * @return Map + */ + Map putOver(JSONObject param); + /** + * 人工倒料 + * + * @param param 条件 + * @return Map + */ + Map handPour(JSONObject param); + + /** + * 开始卸料 + * + * @param param 条件 + * @return Map + */ + Map startDischarge(JSONObject param); + + /** + * 手动称重 + * + * @param param 条件 + * @return Map + */ + Map handWeigh(JSONObject param); + + /** + * 清洗下料 + * + * @param param 条件 + * @return Map + */ + Map cleanPut(JSONObject param); + + /** + * 刻字上料(mes直接下任务acs,此接口暂未用) + * + * @param param 条件 + * @return Map + */ + Map engravingIn(JSONObject param); + + /** + * 清洗上料 + * + * @param param 条件 + * @return Map + */ + Map cleaningIn(JSONObject param); } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java b/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java index cc8c5021..a54da89b 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java @@ -689,4 +689,31 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } return null; } + + @Override + public HttpResponse washTask(JSONObject param) { + try { + MDC.put(log_file_type, log_type); + if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), "1")) { + log.info("acs开始向mes反馈清洗上料状态,请求参数:{}", JSON.toJSONString(param)); + String wmsurl = paramService.findByCode(AcsConfig.WMSURL).getValue(); + AddressDto addressDto = addressService.findByCode("washTask"); + String methods_url = addressDto.getMethods_url(); + String url = wmsurl + methods_url; + HttpResponse result = null; + try { + result = HttpRequest.post(url) + .body(JSON.toJSONString(param)) + .execute(); + log.info("acs向mes反馈工单状态成功,请求路径:{},请求参数:{},响应参数:{}", url, JSON.toJSONString(param), result.body()); + } catch (Exception e) { + log.error("acs向mes反馈工单状态失败,请求路径:{},请求参数:{},失败原因:{}", url, JSON.toJSONString(param), e.getMessage()); + } + return result; + } + return null; + } finally { + MDC.remove(log_file_type); + } + } } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java b/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java index c495ca8c..b4e5be87 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java @@ -3,6 +3,7 @@ package org.nl.acs.ext.wms.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -12,9 +13,14 @@ import org.nl.acs.AcsConfig; import org.nl.acs.device.service.DeviceService; import org.nl.acs.device_driver.basedriver.hailiang_one.IssuedDeviceOrderInfo; import org.nl.acs.device_driver.basedriver.hailiang_one.hailiang_auto_cache_line.HailiangAutoCacheLineDeviceDriver; +import org.nl.acs.device_driver.basedriver.hailiang_one.hailiang_cleaning_feeding_line.HailiangCleaningFeedingLineDriver; +import org.nl.acs.device_driver.basedriver.hailiang_one.hailiang_cleaning_machine_storage_station.HailiangCleaningMachineStorageStationDeviceDriver; +import org.nl.acs.device_driver.basedriver.hailiang_one.hailiang_cleaning_put_line.HailiangCleaningPutLineDeviceDriver; +import org.nl.acs.device_driver.basedriver.hailiang_one.hailiang_engraving_in.HailiangEngravingInDeviceDriver; import org.nl.acs.device_driver.basedriver.hailiang_one.hailiang_engraving_machine.HailiangEngravingMachineDeviceDriver; import org.nl.acs.device_driver.basedriver.hailiang_one.hailiang_packer_station.HailiangPackerStationDeviceDriver; import org.nl.acs.device_driver.basedriver.hailiang_one.hailiang_special_device.HailiangSpecialDeviceDriver; +import org.nl.acs.device_driver.basedriver.hailiang_one.hailiang_special_pour_station.HailiangSpecialPourStationDeviceDriver; import org.nl.acs.device_driver.basedriver.standard_autodoor.StandardAutodoorDeviceDriver; import org.nl.acs.device_driver.basedriver.standard_conveyor_control.StandardCoveyorControlDeviceDriver; import org.nl.acs.device_driver.basedriver.standard_conveyor_control_with_plcscanner.StandardCoveyorControlWithPlcScannerDeviceDriver; @@ -22,6 +28,7 @@ import org.nl.acs.device_driver.basedriver.standard_conveyor_control_with_scanne import org.nl.acs.device_driver.basedriver.standard_inspect_site.StandardInspectSiteDeviceDriver; import org.nl.acs.device_driver.basedriver.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; import org.nl.acs.device_driver.basedriver.standard_scanner.StandardScannerDeviceDriver; +import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.ext.wms.service.WmsToAcsService; import org.nl.acs.acsEnum.StatusEnum; import org.nl.acs.acsEnum.WorkerOrderEnum; @@ -29,7 +36,6 @@ import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.service.dto.Instruction; import org.nl.acs.opc.Device; import org.nl.acs.opc.DeviceAppService; -import org.nl.acs.opc.DeviceExtraManageDto; import org.nl.acs.order.service.ProduceshiftorderService; import org.nl.acs.order.service.dto.EalingOrderDto; import org.nl.acs.order.service.dto.ProduceshiftorderDto; @@ -38,12 +44,13 @@ import org.nl.acs.task.service.dto.TaskDto; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.system.service.ParamService; import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.modules.wql.util.SpringContextHolder; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.ApplicationContext; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import java.math.BigDecimal; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -64,6 +71,8 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { private ParamService paramService; @Autowired private InstructionService instructionService; + @Autowired + AcsToWmsService acsToWmsService; @Override public Map createFromWms(List tasks) { @@ -156,6 +165,44 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { continue; } } + TaskDto start_device_task = taskService.findByStartCode(start_point_code); + if (start_device_task != null) { + JSONObject json = new JSONObject(); + json.put("task_id", task_id); +// json.put("message", "已存在该设备的任务,设备号:" + start_point_code + ",对应的任务号:" + task_code); + json.put("message", "已提交过任务!请勿重复点击!"); + errArr.add(json); + continue; + } + //刻字上料任务特殊处理 + if (StrUtil.equals(start_point_code,"A1_KZ_SL")) { + Device device = deviceAppService.findDeviceByCode(start_point_code); + HailiangEngravingInDeviceDriver hailiangEngravingInDeviceDriver; + if (device.getDeviceDriver() instanceof HailiangEngravingInDeviceDriver) { + hailiangEngravingInDeviceDriver = (HailiangEngravingInDeviceDriver) device.getDeviceDriver(); + if (hailiangEngravingInDeviceDriver.getGd_move() == 0) { + JSONObject json = new JSONObject(); + json.put("task_id", task_id); + json.put("message", "上面无料框!请核实后再点击按钮!"); + errArr.add(json); + continue; + } + } + } + if (StrUtil.equals(put_point_code,"A1_KZ_SL")) { + Device device = deviceAppService.findDeviceByCode(put_point_code); + HailiangEngravingInDeviceDriver hailiangEngravingInDeviceDriver; + if (device.getDeviceDriver() instanceof HailiangEngravingInDeviceDriver) { + hailiangEngravingInDeviceDriver = (HailiangEngravingInDeviceDriver) device.getDeviceDriver(); + if (hailiangEngravingInDeviceDriver.getGd_move() == 1) { + JSONObject json = new JSONObject(); + json.put("task_id", task_id); + json.put("message", "上面有料框!请核实后再点击按钮!"); + errArr.add(json); + continue; + } + } + } String start_device_code = ""; String next_device_code = ""; @@ -267,7 +314,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { if (ObjectUtil.isNotEmpty(package_ext)) { //是否启用封箱线 is_used_fxx = ObjectUtil.isEmpty(package_ext.get("is_used_fxx")) ? null : package_ext.get("is_used_fxx").toString(); - //拆箱数量 + //拆箱数量() // unboxingOrderDto.setOrder_box_num(ObjectUtil.isEmpty(package_ext.get("demol_num")) ? null : package_ext.get("demol_num").toString()); ealingOrderDto.setOrder_box_num(ObjectUtil.isEmpty(package_ext.get("demol_num")) ? null : package_ext.get("demol_num").toString()); //装箱模版 @@ -276,8 +323,22 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { lane_tray_template= ObjectUtil.isEmpty(package_ext.get("stack_model")) ? null : package_ext.get("stack_model").toString(); //是否正反转 ealingOrderDto.setIs_foreward(ObjectUtil.isEmpty(package_ext.get("is_foreward")) ? null : package_ext.get("is_foreward").toString()); - //袋数 + //总袋数 ealingOrderDto.setOrder_bag_num(ObjectUtil.isEmpty(package_ext.get("order_bag_num")) ? null : package_ext.get("order_bag_num").toString()); + //装箱机设备 + ealing_device_code = ObjectUtil.isEmpty(package_ext.get("ealing_device_code")) ? null : package_ext.get("ealing_device_code").toString(); + //开箱机设备 + unboxing_device_code = ObjectUtil.isEmpty(package_ext.get("unboxing_device_code")) ? null : package_ext.get("unboxing_device_code").toString(); + //封箱机是否自动确认(1:自动确认 2:定时确认 3:人工确认) + ealingOrderDto.setIs_auto_confirm(ObjectUtil.isEmpty(package_ext.get("auto_confirm")) ? null : package_ext.get("auto_confirm").toString()); + //确认时间 + ealingOrderDto.setTime(ObjectUtil.isEmpty(package_ext.get("time")) ? null : package_ext.get("time").toString()); + //每箱袋数 + ealingOrderDto.setBag_num_of_box(ObjectUtil.isEmpty(package_ext.get("one_bag_num")) ? null : package_ext.get("one_bag_num").toString()); + //每箱重量 + ealingOrderDto.setOne_box_weight(ObjectUtil.isEmpty(package_ext.get("demol_weight")) ? null : package_ext.get("demol_weight").toString()); + //每袋重量 + ealingOrderDto.setOne_bag_weight(ObjectUtil.isEmpty(package_ext.get("one_bag_weight")) ? null : package_ext.get("one_bag_weight").toString()); } ealingOrderDto.setOrder_code(workorder_code); @@ -1078,5 +1139,346 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { // return resultJson; return null; } + @Override + public Map putOver(JSONObject param) { + log.info("接收WMS余料上完,下发参数:{}", JSON.toJSONString(param)); + String start_point_code = param.getString("start_point_code"); + String next_point_code = param.getString("next_point_code"); + String weight = param.getString("weight"); + if (StrUtil.isEmpty(start_point_code)) { + throw new BadRequestException("起点号不能为空!"); + } + if (StrUtil.isEmpty(next_point_code)) { + throw new BadRequestException("终点号不能为空!"); + } + if (StrUtil.isEmpty(weight)) { + throw new BadRequestException("下发重量不能为空!"); + } + Device device = deviceAppService.findDeviceByCode(start_point_code); + if (ObjectUtil.isEmpty(device)) { + throw new BadRequestException("未找到对应设备:" + start_point_code); + } + //刻字上料 + HailiangEngravingInDeviceDriver hailiangEngravingInDeviceDriver; + if (device.getDeviceDriver() instanceof HailiangEngravingInDeviceDriver) { + hailiangEngravingInDeviceDriver = (HailiangEngravingInDeviceDriver) device.getDeviceDriver(); + hailiangEngravingInDeviceDriver.writing("to_engraving_sn",next_point_code); + hailiangEngravingInDeviceDriver.writing("to_in_weight",weight); + } + JSONObject resultJson = new JSONObject(); + resultJson.put("status", 200); + resultJson.put("message", "操作成功"); + log.info("接收WMS余料上完成功,响应参数:{}", JSON.toJSONString(resultJson)); + return resultJson; + } + @Override + public Map handPour(JSONObject param) { + log.info("接收WMS人工倒料,下发参数:{}", JSON.toJSONString(param)); + String device_code = param.getString("device_code"); + int qtySum = param.getIntValue("qty"); + if (StrUtil.isEmpty(device_code)) { + throw new BadRequestException("设备号不能为空!"); + } + if (StrUtil.isEmpty(qtySum+"")) { + throw new BadRequestException("下发数量不能为空!"); + } + Device device = deviceAppService.findDeviceByCode(device_code); + if (ObjectUtil.isEmpty(device)) { + throw new BadRequestException("未找到对应设备:" + device_code); + } + //专机倒料 + HailiangSpecialPourStationDeviceDriver hailiangSpecialPourStationDeviceDriver; + if (device.getDeviceDriver() instanceof HailiangSpecialPourStationDeviceDriver) { + hailiangSpecialPourStationDeviceDriver = (HailiangSpecialPourStationDeviceDriver) device.getDeviceDriver(); + qtySum += hailiangSpecialPourStationDeviceDriver.getStorage_stock_num(); + hailiangSpecialPourStationDeviceDriver.writing("to_pour_num",String.valueOf(qtySum)); + } + //清洗机储料仓 + HailiangCleaningMachineStorageStationDeviceDriver hailiangCleaningMachineStorageStationDeviceDriver; + if (device.getDeviceDriver() instanceof HailiangCleaningMachineStorageStationDeviceDriver) { + hailiangCleaningMachineStorageStationDeviceDriver = (HailiangCleaningMachineStorageStationDeviceDriver) device.getDeviceDriver(); + qtySum += hailiangCleaningMachineStorageStationDeviceDriver.getFull_number(); + hailiangCleaningMachineStorageStationDeviceDriver.writing("to_dumping_num",String.valueOf(qtySum)); + //下发储料仓开始称重 + hailiangCleaningMachineStorageStationDeviceDriver.writing("to_open_weight","1"); + //要睡一秒吗 + } + //刻字机上料位(电气是重量) + HailiangEngravingInDeviceDriver hailiangEngravingInDeviceDriver; + if (device.getDeviceDriver() instanceof HailiangEngravingInDeviceDriver) { + hailiangEngravingInDeviceDriver = (HailiangEngravingInDeviceDriver) device.getDeviceDriver(); + qtySum += hailiangEngravingInDeviceDriver.getEngraving_storage_now_weight(); + hailiangEngravingInDeviceDriver.writing("to_in_weight",String.valueOf(qtySum)); + } + + //刻字机倒料位 + HailiangEngravingMachineDeviceDriver hailiangEngravingMachineDeviceDriver; + if (device.getDeviceDriver() instanceof HailiangEngravingMachineDeviceDriver) { + hailiangEngravingMachineDeviceDriver = (HailiangEngravingMachineDeviceDriver) device.getDeviceDriver(); + qtySum += hailiangEngravingMachineDeviceDriver.getLettering_silo_number(); + hailiangEngravingMachineDeviceDriver.writing("to_to_dumping_num",String.valueOf(qtySum)); + } + + JSONObject resultJson = new JSONObject(); + resultJson.put("status", 200); + resultJson.put("message", "操作成功"); + log.info("接收WMS人工倒料成功,响应参数:{}", JSON.toJSONString(resultJson)); + return resultJson; + } + + @Override + public Map startDischarge(JSONObject param) { + log.info("接收WMS开始卸料,下发参数:{}", JSON.toJSONString(param)); + String device_code = param.getString("device_code"); + if (StrUtil.isEmpty(device_code)) { + throw new BadRequestException("设备号不能为空!"); + } + Device device = deviceAppService.findDeviceByCode(device_code); + if (ObjectUtil.isEmpty(device)) { + throw new BadRequestException("未找到对应设备:" + device_code); + } + //刻字上料 + HailiangEngravingInDeviceDriver hailiangEngravingInDeviceDriver; + if (device.getDeviceDriver() instanceof HailiangEngravingInDeviceDriver) { + hailiangEngravingInDeviceDriver = (HailiangEngravingInDeviceDriver) device.getDeviceDriver(); + hailiangEngravingInDeviceDriver.writing("to_agv_put_finish", "1"); + } + JSONObject resultJson = new JSONObject(); + resultJson.put("status", 200); + resultJson.put("message", "操作成功"); + log.info("接收WMS开始卸料成功,响应参数:{}", JSON.toJSONString(resultJson)); + return resultJson; + } + + @Override + public Map handWeigh(JSONObject param) { + log.info("接收WMS人工称重,下发参数:{}", JSON.toJSONString(param)); + String device_code = param.getString("device_code"); + int qtySum = param.getIntValue("qty"); + if (StrUtil.isEmpty(device_code)) { + throw new BadRequestException("设备号不能为空!"); + } + if (StrUtil.isEmpty(qtySum+"")) { + throw new BadRequestException("下发数量不能为空!"); + } + Device device = deviceAppService.findDeviceByCode(device_code); + if (ObjectUtil.isEmpty(device)) { + throw new BadRequestException("未找到对应设备:" + device_code); + } + int weight = 0; + //清洗机储料仓 + HailiangCleaningMachineStorageStationDeviceDriver hailiangCleaningMachineStorageStationDeviceDriver; + if (device.getDeviceDriver() instanceof HailiangCleaningMachineStorageStationDeviceDriver) { + hailiangCleaningMachineStorageStationDeviceDriver = (HailiangCleaningMachineStorageStationDeviceDriver) device.getDeviceDriver(); + qtySum += hailiangCleaningMachineStorageStationDeviceDriver.getFull_number(); + hailiangCleaningMachineStorageStationDeviceDriver.writing("to_dumping_num",String.valueOf(qtySum)); + //下发储料仓开始称重 + hailiangCleaningMachineStorageStationDeviceDriver.writing("to_open_weight","1"); + //下发称重后,读取重量要睡一秒吗 + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + weight = hailiangCleaningMachineStorageStationDeviceDriver.getSilo_weight(); + } + + JSONObject resultJson = new JSONObject(); + resultJson.put("status", 200); + resultJson.put("message", "操作成功"); + resultJson.put("weight",weight); + log.info("接收WMS人工倒料成功,响应参数:{}", JSON.toJSONString(resultJson)); + return resultJson; + } + + @Override + public Map cleanPut(JSONObject param) { + log.info("接收WMS清洗下料,下发参数:{}", JSON.toJSONString(param)); + String device_code = param.getString("device_code"); + if (StrUtil.isEmpty(device_code)) { + throw new BadRequestException("设备号不能为空!"); + } + Device device = deviceAppService.findDeviceByCode(device_code); + if (ObjectUtil.isEmpty(device)) { + throw new BadRequestException("未找到对应设备:" + device_code); + } + JSONObject resultJson = new JSONObject(); + + //清洗下料 + HailiangCleaningPutLineDeviceDriver hailiangCleaningPutLineDeviceDriver; + if (device.getDeviceDriver() instanceof HailiangCleaningPutLineDeviceDriver) { + hailiangCleaningPutLineDeviceDriver = (HailiangCleaningPutLineDeviceDriver) device.getDeviceDriver(); + resultJson.put("in_pcsn", hailiangCleaningPutLineDeviceDriver.getIn_pcsn()); + resultJson.put("vechile_code", hailiangCleaningPutLineDeviceDriver.getBarcode()); + resultJson.put("weight", hailiangCleaningPutLineDeviceDriver.getFull_weight()); + } + resultJson.put("status", 200); + resultJson.put("message", "操作成功"); + log.info("接收WMS清洗下料成功,响应参数:{}", JSON.toJSONString(resultJson)); + return resultJson; + } + + @Override + public Map engravingIn(JSONObject param) { + log.info("接收WMS刻字上料,下发参数:{}", JSON.toJSONString(param)); + String start_device_code = param.getString("start_point_code"); + String to_sort_array = param.getString("to_sort_array"); + String to_devices_array = param.getString("to_devices_array"); + String to_weight_array = param.getString("to_weight_array"); + //上料总重量 + String all_weight = param.getString("all_weight"); + String to_task = param.getString("task_code"); + if (StrUtil.isEmpty(start_device_code)) { + throw new BadRequestException("设备号不能为空!"); + } + Device device = deviceAppService.findDeviceByCode(start_device_code); + if (ObjectUtil.isEmpty(device)) { + throw new BadRequestException("未找到对应设备:" + start_device_code); + } + JSONObject resultJson = new JSONObject(); + //刻字上料 + HailiangEngravingInDeviceDriver hailiangEngravingInDeviceDriver; + if (device.getDeviceDriver() instanceof HailiangEngravingInDeviceDriver) { + hailiangEngravingInDeviceDriver = (HailiangEngravingInDeviceDriver) device.getDeviceDriver(); + String[] sort = to_sort_array.split(","); + for (int i=0;i< sort.length;i++){ + hailiangEngravingInDeviceDriver.writing("to_sort"+(i+1),sort[i]); + } + String[] devices = to_devices_array.split(","); + for (int i=0;i< devices.length;i++){ + String[] device_i = devices[i].split("_"); + hailiangEngravingInDeviceDriver.writing("to_devices"+(i+1),device_i[device_i.length-1]); + } + String[] weight = to_weight_array.split(","); + for (int i=0;i< weight.length;i++){ + hailiangEngravingInDeviceDriver.writing("to_weight"+(i+1),weight[i]); + } + hailiangEngravingInDeviceDriver.writing("to_all_weight", all_weight); +// hailiangEngravingInDeviceDriver.writing("to_all_weight",String.valueOf(hailiangEngravingInDeviceDriver.getEngraving_storage_now_weight())); + hailiangEngravingInDeviceDriver.writing("to_task",to_task); + } + // TODO 反馈mes + JSONObject reqParam = new JSONObject(); + reqParam.put("task_code", to_task); + reqParam.put("status", StatusEnum.TASK_RUNNING.getCode()); + HttpResponse httpResponse = acsToWmsService.washTask(reqParam); + + resultJson.put("status", 200); + resultJson.put("message", "操作成功"); + log.info("接收WMS刻字上料成功,响应参数:{}", JSON.toJSONString(resultJson)); + return resultJson; + } + +// @Override +// public Map cleaningIn(JSONObject param) { +// log.info("接收WMS清洗上料,下发参数:{}", JSON.toJSONString(param)); +// String device_code = param.getString("device_code"); +// String in_pcsn = param.getString("in_pcsn"); +// String[] in_devices = param.getString("in_devices").split(","); +// if (StrUtil.isEmpty(device_code)) { +// throw new BadRequestException("设备号不能为空!"); +// } +// Device device = deviceAppService.findDeviceByCode(device_code); +// if (ObjectUtil.isEmpty(device)) { +// throw new BadRequestException("未找到对应清洗上料设备:" + device_code); +// } +// JSONObject resultJson = new JSONObject(); +// //清洗上料 +// HailiangCleaningMachineStorageStationDeviceDriver hailiangCleaningMachineStorageStationDeviceDriver; +// HailiangCleaningFeedingLineDriver hailiangCleaningFeedingLineDriver; +// //上料储料仓总重量 +// int weightSum = 0; +// //上料储料仓总数量 +// int qtySum = 0; +// +// if (device.getDeviceDriver() instanceof HailiangCleaningFeedingLineDriver) { +// hailiangCleaningFeedingLineDriver = (HailiangCleaningFeedingLineDriver) device.getDeviceDriver(); +// if (hailiangCleaningFeedingLineDriver.getMode() == 1 && hailiangCleaningFeedingLineDriver.getIn_ready() == 1 && hailiangCleaningFeedingLineDriver.getAllowed_in() == 1 ) { +// //遍历上料储料仓设备 求重量和数量和下发给清洗上料位 +// for (int i = 0; i < in_devices.length; i++) { +// String in_device = in_devices[i]; +// Device m_device = deviceAppService.findDeviceByCode(in_device); +// if (m_device != null) { +// hailiangCleaningMachineStorageStationDeviceDriver = (HailiangCleaningMachineStorageStationDeviceDriver) m_device.getDeviceDriver(); +// weightSum += hailiangCleaningMachineStorageStationDeviceDriver.getSilo_weight(); +// qtySum += hailiangCleaningMachineStorageStationDeviceDriver.getFull_number(); +// hailiangCleaningMachineStorageStationDeviceDriver.writing("to_feeding", "1"); +// } +// } +// //下发上料位电气信号 +// if (device.getDeviceDriver() instanceof HailiangCleaningFeedingLineDriver) { +// hailiangCleaningFeedingLineDriver = (HailiangCleaningFeedingLineDriver) device.getDeviceDriver(); +// Map map = new LinkedHashMap<>(); +// map.put("to_pcsn",in_pcsn);//下发批次号 +// map.put("to_all_num", String.valueOf(qtySum)); +// map.put("to_all_weight", String.valueOf(weightSum)); +// map.put("to_in_confirm_finish", "1"); +// hailiangCleaningFeedingLineDriver.writing(map); +// //反馈给mes执行中状态 +// JSONObject reqParam = new JSONObject(); +// reqParam.put("in_pcsn", hailiangCleaningFeedingLineDriver.getIn_pcsn()); +// reqParam.put("status", StatusEnum.TASK_RUNNING.getCode()); +//// HttpResponse httpResponse = acsToWmsService.washTask(reqParam); +//// if (ObjectUtil.isNotEmpty(httpResponse) && httpResponse.getStatus() == 200) { +//// this.writing("to_in_confirm_req", "1"); +//// requireSucess = true; +//// return true; +//// } +// } +// }else { +// //光电信号不允许上料 +// +// } +// } +// resultJson.put("status", 200); +// resultJson.put("message", "操作成功"); +// log.info("接收WMS清洗上料成功,响应参数:{}", JSON.toJSONString(resultJson)); +// return resultJson; +// } + @Override + public Map cleaningIn(JSONObject param) { + log.info("接收WMS清洗上料,下发参数:{}", JSON.toJSONString(param)); + String device_code = param.getString("device_code"); + String in_pcsn = param.getString("in_pcsn"); + String in_devices = param.getString("in_devices"); +// String[] in_devices = param.getString("in_devices").split(","); + JSONArray errArr = new JSONArray(); + if (StrUtil.isEmpty(device_code)) { + throw new BadRequestException("设备号不能为空!"); + } + Device device = deviceAppService.findDeviceByCode(device_code); + if (ObjectUtil.isEmpty(device)) { + throw new BadRequestException("未找到对应清洗上料设备:" + device_code); + } + JSONObject resultJson = new JSONObject(); + ProduceshiftorderDto dto = new ProduceshiftorderDto(); + dto.setExt_order_id(in_pcsn); + dto.setOrder_code(in_pcsn); + dto.setQty(BigDecimal.valueOf(999999)); + dto.setMaterial_code("QXSL"); + dto.setDevice_code(device_code); + dto.setIs_needmove("0"); + dto.setIn_devices(in_devices); + dto.setCreate_by("mes"); + try { + produceshiftorderService.create(dto); + } catch (Exception e) { + e.printStackTrace(); + JSONObject json = new JSONObject(); + json.put("in_pcsn", in_pcsn); + json.put("message", e.getMessage()); + errArr.add(json); + } + if (ObjectUtil.isEmpty(errArr)) { + resultJson.put("status", 200); + } else { + resultJson.put("status", 400); + } + resultJson.put("errArr", errArr); + resultJson.put("message", errArr.size() > 0 ? "存在下发未成功的清洗任务!" : "操作成功!"); + resultJson.put("data", new JSONObject()); + log.info("接收wms下发清洗下料,响应参数:{}", JSON.toJSONString(resultJson)); + return resultJson; + } } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java b/wcs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java index 348b4d67..3f7df84e 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java @@ -1034,7 +1034,12 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu } else if (StrUtil.equals(paramService.findByCode(AcsConfig.AGVTYPE).getValue(), "2")) { // NDC agv指令不当场取消指令,需要等agv上报 if (!StrUtil.isEmpty(entity.getAgv_jobno())) { - ndcAgvService.deleteAgvInstToNDC(entity); + if (StrUtil.equals(entity.getInstruction_type(),AgvTypeEnum.PS_TYPE_1.getTaskType()) || StrUtil.equals(entity.getInstruction_type(),AgvTypeEnum.PS_TYPE_2.getTaskType()) || StrUtil.equals(entity.getInstruction_type(),AgvTypeEnum.RT_TYPE_1.getTaskType())){ + ndcAgvService.deleteAgvOneInstToNDC(entity); + }else { + ndcAgvService.deleteAgvInstToNDC(entity); + } + } else { flag = true; } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/order/service/impl/ProduceshiftorderServiceImpl.java b/wcs/nladmin-system/src/main/java/org/nl/acs/order/service/impl/ProduceshiftorderServiceImpl.java index 23dcce1f..e69d5d60 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/order/service/impl/ProduceshiftorderServiceImpl.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/order/service/impl/ProduceshiftorderServiceImpl.java @@ -245,6 +245,15 @@ public class ProduceshiftorderServiceImpl implements ProduceshiftorderService, A } } } + + //码垛机械手(巷道),包装线体 +// if (StrUtil.isNotEmpty(dto.机械手设备号(待mes传))) { + Device md_device = deviceAppService.findDeviceByCode("A1_MDJXS_1"); + if (md_device != null && md_device.getDeviceDriver() instanceof IssuedDeviceOrderInfo) { + issuedDeviceOrderInfo = (IssuedDeviceOrderInfo) md_device.getDeviceDriver(); + issuedDeviceOrderInfo.issuedOrderInfo(dto); + } +// } } JSONObject json = (JSONObject) JSONObject.toJSON(dto); wo.insert(json); diff --git a/wcs/nladmin-ui/src/views/acs/order/index.vue b/wcs/nladmin-ui/src/views/acs/order/index.vue index 504b9dca..cfd770fe 100644 --- a/wcs/nladmin-ui/src/views/acs/order/index.vue +++ b/wcs/nladmin-ui/src/views/acs/order/index.vue @@ -308,7 +308,7 @@ export default { methods: { // 在 Input 值改变时触发 handleEdit(e) { - let value = e.replace(/^(0+)|[^d]+/g, '') // 以0开头或者输入非数字,会被替换成空 + let value = e.replace(/^(0+)|[^\d]+/g, '') // 以0开头或者输入非数字,会被替换成空 value = value.replace(/(d{15})d*/, '$1') // 最多保留15位整数 this.form.lane_tray_template = value },