From c8e3d6b5f43d736fb1af65469a870920ae8f55de Mon Sep 17 00:00:00 2001 From: 18188916393 <2562295436@qq.com> Date: Mon, 26 Sep 2022 19:43:14 +0800 Subject: [PATCH] no message --- .../Cribbing/rest/CribbinginfoController.java | 71 ++++ .../Cribbing/service/CribbinginfoService.java | 66 ++++ .../Cribbing/service/dto/CribbinginfoDto.java | 227 ++++++++++++ .../service/impl/CribbinginfoServiceImpl.java | 131 +++++++ .../acs/service/impl/AcsToWmsServiceImpl.java | 8 +- .../org/nl/wms/pdm/wql/PDM_ProduceTask_01.wql | 16 +- .../src/main/java/org/nl/wms/wms.xls | Bin 401408 -> 401920 bytes wms/hd/qinx/cribbinginfo.js | 27 ++ wms/hd/qinx/index.vue | 336 ++++++++++++++++++ wms/qd/src/api/wms/Cribbing/cribbinginfo.js | 27 ++ wms/qd/src/views/wms/Cribbing/index.vue | 326 +++++++++++++++++ .../src/views/wms/pdm/produceTask/index.vue | 25 +- 12 files changed, 1253 insertions(+), 7 deletions(-) create mode 100644 wms/hd/nladmin-system/src/main/java/org/nl/wms/Cribbing/rest/CribbinginfoController.java create mode 100644 wms/hd/nladmin-system/src/main/java/org/nl/wms/Cribbing/service/CribbinginfoService.java create mode 100644 wms/hd/nladmin-system/src/main/java/org/nl/wms/Cribbing/service/dto/CribbinginfoDto.java create mode 100644 wms/hd/nladmin-system/src/main/java/org/nl/wms/Cribbing/service/impl/CribbinginfoServiceImpl.java create mode 100644 wms/hd/qinx/cribbinginfo.js create mode 100644 wms/hd/qinx/index.vue create mode 100644 wms/qd/src/api/wms/Cribbing/cribbinginfo.js create mode 100644 wms/qd/src/views/wms/Cribbing/index.vue diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/Cribbing/rest/CribbinginfoController.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/Cribbing/rest/CribbinginfoController.java new file mode 100644 index 0000000..b1cd45f --- /dev/null +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/Cribbing/rest/CribbinginfoController.java @@ -0,0 +1,71 @@ + +package org.nl.wms.Cribbing.rest; + + +import org.nl.wms.Cribbing.service.CribbinginfoService; +import org.nl.wms.Cribbing.service.dto.CribbinginfoDto; +import org.springframework.data.domain.Pageable; +import lombok.RequiredArgsConstructor; +import org.nl.annotation.Log; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import io.swagger.annotations.*; + +import java.io.IOException; +import javax.servlet.http.HttpServletResponse; +import java.util.Map; + +import lombok.extern.slf4j.Slf4j; + +/** + * @author qinx + * @date 2022-09-26 + **/ +@RestController +@RequiredArgsConstructor +@Api(tags = "基础垛形参数管理") +@RequestMapping("/api/cribbinginfo") +@Slf4j +public class CribbinginfoController { + + private final CribbinginfoService cribbinginfoService; + + @GetMapping + @Log("查询基础垛形参数") + @ApiOperation("查询基础垛形参数") + //@PreAuthorize("@el.check('cribbinginfo:list')") + public ResponseEntity query(@RequestParam Map whereJson, Pageable page) { + return new ResponseEntity<>(cribbinginfoService.queryAll(whereJson, page), HttpStatus.OK); + } + + @PostMapping + @Log("新增基础垛形参数") + @ApiOperation("新增基础垛形参数") + //@PreAuthorize("@el.check('cribbinginfo:add')") + public ResponseEntity create(@Validated @RequestBody CribbinginfoDto dto) { + cribbinginfoService.create(dto); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改基础垛形参数") + @ApiOperation("修改基础垛形参数") + //@PreAuthorize("@el.check('cribbinginfo:edit')") + public ResponseEntity update(@Validated @RequestBody CribbinginfoDto dto) { + cribbinginfoService.update(dto); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除基础垛形参数") + @ApiOperation("删除基础垛形参数") + //@PreAuthorize("@el.check('cribbinginfo:del')") + @DeleteMapping + public ResponseEntity delete(@RequestBody Long[] ids) { + cribbinginfoService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + +} diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/Cribbing/service/CribbinginfoService.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/Cribbing/service/CribbinginfoService.java new file mode 100644 index 0000000..bde0dbb --- /dev/null +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/Cribbing/service/CribbinginfoService.java @@ -0,0 +1,66 @@ + +package org.nl.wms.Cribbing.service; + +import org.nl.wms.Cribbing.service.dto.CribbinginfoDto; +import org.springframework.data.domain.Pageable; +import java.util.Map; +import java.util.List; +import java.io.IOException; +import javax.servlet.http.HttpServletResponse; + +/** +* @description 服务接口 +* @author qinx +* @date 2022-09-26 +**/ +public interface CribbinginfoService { + + /** + * 查询数据分页 + * @param whereJson 条件 + * @param page 分页参数 + * @return Map + */ + Map queryAll(Map whereJson, Pageable page); + + /** + * 查询所有数据不分页 + * @param whereJson 条件参数 + * @return List + */ + List queryAll(Map whereJson); + + /** + * 根据ID查询 + * @param info_id ID + * @return Cribbinginfo + */ + CribbinginfoDto findById(Long info_id); + + /** + * 根据编码查询 + * @param code code + * @return Cribbinginfo + */ + CribbinginfoDto findByCode(String code); + + + /** + * 创建 + * @param dto / + */ + void create(CribbinginfoDto dto); + + /** + * 编辑 + * @param dto / + */ + void update(CribbinginfoDto dto); + + /** + * 多选删除 + * @param ids / + */ + void deleteAll(Long[] ids); + +} diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/Cribbing/service/dto/CribbinginfoDto.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/Cribbing/service/dto/CribbinginfoDto.java new file mode 100644 index 0000000..edd109a --- /dev/null +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/Cribbing/service/dto/CribbinginfoDto.java @@ -0,0 +1,227 @@ +package org.nl.wms.Cribbing.service.dto; + +import lombok.Data; +import java.io.Serializable; + import com.fasterxml.jackson.databind.annotation.JsonSerialize; + import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; + +/** +* @description / +* @author qinx +* @date 2022-09-26 +**/ +@Data +public class CribbinginfoDto implements Serializable { + + /** 对应标识 */ + /** 防止精度丢失 */ + @JsonSerialize(using= ToStringSerializer.class) + private Long info_id; + + /** 物料标志 */ + private Long material_id; + + /** 物料编码 */ + private String material_code; + + /** 物料名称 */ + private String material_name; + + /** 规格 */ + private String material_spec; + + /** 产品编号 */ + private String product_code; + + /** A长边 */ + private String AlongSide; + + /** B短边 */ + private String BshortSide; + + /** H梯形高 */ + private String Htrapezoidal; + + /** W厚度 */ + private String Wthickness; + + /** 当前垛盘数 */ + private String tray_qty; + + /** 垛盘高度 */ + private String tray_high; + + /** 垛型类别 */ + private String crib_category; + + /** 码垛X1行 */ + private String palletX1_line; + + /** 码垛Y1列 */ + private String palletY1_row; + + /** 码垛A1角度 */ + private String palletA1_angle; + + /** 码垛X2行 */ + private String palletX2_line; + + /** 码垛Y2列 */ + private String palletY2_row; + + /** 码垛A2角度 */ + private String palletA2_angle; + + /** 码垛X3行 */ + private String palletX3_line; + + /** 码垛Y3列 */ + private String palletY3_row; + + /** 码垛A3角度 */ + private String palletA3_angle; + + /** 压垛X1行 */ + private String pressCribX1_line; + + /** 压垛Y1列 */ + private String pressCribY1_row; + + /** 压垛A1角度 */ + private String pressCribA1_angle; + + /** 压垛X2行 */ + private String pressCribX2_line; + + /** 压垛Y2列 */ + private String pressCribY2_row; + + /** 压垛A2角度 */ + private String pressCribA2_angle; + + /** 压垛X3行 */ + private String pressCribX3_line; + + /** 压垛Y3列 */ + private String pressCribY3_row; + + /** 压垛A3角度 */ + private String pressCribA3_angle; + + /** Z轴偏移 */ + private String Zoffset; + + /** 码垛层数 */ + private String pallet_layerQty; + + /** 压垛层数 */ + private String pressCrib_layerQty; + + /** 码层X1间隔 */ + private String codeLayerX1_interval; + + /** 码层Y1间隔 */ + private String codeLayerY1_interval; + + /** 码层X2间隔 */ + private String codeLayerX2_interval; + + /** 码层Y2间隔 */ + private String codeLayerY2_interval; + + /** 码层X3间隔 */ + private String codeLayerX3_interval; + + /** 码层Y3间隔 */ + private String codeLayerY3_interval; + + /** 码层X1偏移 */ + private String codeLayerX1_offset; + + /** 码层Y1偏移 */ + private String codeLayerY1_offset; + + /** 码层X2偏移 */ + private String codeLayerX2_offset; + + /** 码层Y2偏移 */ + private String codeLayerY2_offset; + + /** 码层X3偏移 */ + private String codeLayerX3_offset; + + /** 码层Y3偏移 */ + private String codeLayerY3_offset; + + /** 压层X1间隔 */ + private String pressLayerX1_interval; + + /** 压层Y1间隔 */ + private String pressLayerY1_interval; + + /** 压层X2间隔 */ + private String pressLayerX2_interval; + + /** 压层Y2间隔 */ + private String pressLayerY2_interval; + + /** 压层X3间隔 */ + private String pressLayerX3_interval; + + /** 压层Y3间隔 */ + private String pressLayerY3_interval; + + /** 压层X1偏移 */ + private String pressLayerX1_offset; + + /** 压层Y1偏移 */ + private String pressLayerY1_offset; + + /** 压层X2偏移 */ + private String pressLayerX2_offset; + + /** 压层Y2偏移 */ + private String pressLayerY2_offset; + + /** 压层X3偏移 */ + private String pressLayerX3_offset; + + /** 压层Y3偏移 */ + private String pressLayerY3_offset; + + /** 1#垛总数 */ + private String one_cribTotal; + + /** 2#垛总数 */ + private String two_cribTotal; + + /** 1#垛当前数 */ + private String one_qty; + + /** 2#垛当前数 */ + private String two_qty; + + /** 工具坐标 */ + private String tool_coordinate; + + /** 组盘人 */ + private Long create_id; + + /** 组盘人姓名 */ + private String create_name; + + /** 组盘时间 */ + private String create_time; + + /** 修改人 */ + private Long update_optid; + + /** 修改人姓名 */ + private String update_optname; + + /** 修改时间 */ + private String update_time; + + /** 是否删除 */ + private String is_delete; +} diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/Cribbing/service/impl/CribbinginfoServiceImpl.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/Cribbing/service/impl/CribbinginfoServiceImpl.java new file mode 100644 index 0000000..1c052c9 --- /dev/null +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/Cribbing/service/impl/CribbinginfoServiceImpl.java @@ -0,0 +1,131 @@ + +package org.nl.wms.Cribbing.service.impl; + + +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import org.nl.exception.BadRequestException; +import org.nl.wms.Cribbing.service.CribbinginfoService; +import org.nl.wms.Cribbing.service.dto.CribbinginfoDto; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import org.springframework.data.domain.Pageable; +import java.util.List; +import java.util.Map; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import com.alibaba.fastjson.JSONArray; +import org.nl.utils.SecurityUtils; +import org.nl.wql.core.bean.ResultBean; +import org.nl.wql.core.bean.WQLObject; +import org.nl.wql.util.WqlUtil; +import lombok.extern.slf4j.Slf4j; +import cn.hutool.core.util.ObjectUtil; + +/** +* @description 服务实现 +* @author qinx +* @date 2022-09-26 +**/ +@Service +@RequiredArgsConstructor +@Slf4j +public class CribbinginfoServiceImpl implements CribbinginfoService { + + @Override + public Map queryAll(Map whereJson, Pageable page){ + WQLObject wo = WQLObject.getWQLObject("md_me_cribbinginfo"); + ResultBean rb = wo.pagequery(WqlUtil.getHttpContext(page), "1=1", "update_time desc"); + final JSONObject json = rb.pageResult(); + return json; + } + + @Override + public List queryAll(Map whereJson){ + WQLObject wo = WQLObject.getWQLObject("md_me_cribbinginfo"); + JSONArray arr = wo.query().getResultJSONArray(0); + if (ObjectUtil.isNotEmpty(arr)) return arr.toJavaList(CribbinginfoDto.class); + return null; + } + + @Override + public CribbinginfoDto findById(Long info_id) { + WQLObject wo = WQLObject.getWQLObject("md_me_cribbinginfo"); + JSONObject json = wo.query("info_id = '" + info_id + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(json)){ + return json.toJavaObject( CribbinginfoDto.class); + } + return null; + } + + @Override + public CribbinginfoDto findByCode(String code) { + WQLObject wo = WQLObject.getWQLObject("md_me_cribbinginfo"); + JSONObject json = wo.query("code ='" + code + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(json)){ + return json.toJavaObject( CribbinginfoDto.class); + } + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void create(CribbinginfoDto dto) { + Long currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getNickName(); + String now = DateUtil.now(); + + dto.setInfo_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setCreate_id(currentUserId); + dto.setCreate_name(nickName); + dto.setUpdate_optid(currentUserId); + dto.setUpdate_optname(nickName); + dto.setUpdate_time(now); + dto.setCreate_time(now); + + WQLObject wo = WQLObject.getWQLObject("md_me_cribbinginfo"); + JSONObject json = JSONObject.parseObject(JSONObject.toJSONString(dto)); + wo.insert(json); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(CribbinginfoDto dto) { + CribbinginfoDto entity = this.findById(dto.getInfo_id()); + if (entity == null) throw new BadRequestException("被删除或无权限,操作失败!"); + + Long currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getNickName(); + + String now = DateUtil.now(); + dto.setUpdate_time(now); + dto.setUpdate_optid(currentUserId); + dto.setUpdate_optname(nickName); + + WQLObject wo = WQLObject.getWQLObject("md_me_cribbinginfo"); + JSONObject json = JSONObject.parseObject(JSONObject.toJSONString(dto)); + wo.update(json); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteAll(Long[] ids) { + Long currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getNickName(); + String now = DateUtil.now(); + + WQLObject wo = WQLObject.getWQLObject("md_me_cribbinginfo"); + for (Long info_id: ids) { + JSONObject param = new JSONObject(); + param.put("info_id", String.valueOf(info_id)); + param.put("is_delete", "1"); + param.put("update_optid", currentUserId); + param.put("update_optname", nickName); + param.put("update_time", now); + wo.update(param); + } + } + +} diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 80e5c52..3ed9454 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -291,7 +291,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { vehicle_code = jsonObject.get("vehicle_code").toString(); } String qty = String.valueOf(jsonObject.get("qty")); + //产品编码 + String product_code = String.valueOf(jsonObject.get("product_code")); //String material_code = (String) jsonObject.get("material_code"); + if (StrUtil.isEmpty(product_code)){ + throw new BadRequestException("产品编号不能为空!"); + } produceInfoByCode = this.getProduceInfoByCode(device_code); String material_id = (String) produceInfoByCode.get("material_id"); String cust_id = (String) produceInfoByCode.get("cust_id"); @@ -305,6 +310,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { groubObj.put("material_id", material_id); groubObj.put("material_code", materialObj.getString("material_code")); groubObj.put("material_name", materialObj.getString("material_name")); + groubObj.put("product_code", product_code); groubObj.put("cust_id", cust_id); groubObj.put("qty", qty); groubObj.put("producetask_id", producetask_id); @@ -508,7 +514,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { code = "2"; } //更新窑的信息 -// KilnUtil.outKiln(vehicle_code); + KilnUtil.outKiln(vehicle_code); JSONObject result = new JSONObject(); result.put("status", HttpStatus.OK.value()); result.put("message", "任务状态反馈成功!"); diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/wql/PDM_ProduceTask_01.wql b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/wql/PDM_ProduceTask_01.wql index 5bbaadc..f4bf013 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/wql/PDM_ProduceTask_01.wql +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/wql/PDM_ProduceTask_01.wql @@ -112,13 +112,19 @@ material.material_code, material.material_name, material.material_spec, - material.material_model + material.material_model, + info.product_code, + info.AlongSide, + info.BshortSide, + info.Htrapezoidal, + info.Wthickness FROM pdm_mg_producetask task LEFT JOIN sch_base_point point ON point.device_id = task.device_id AND point.point_code <> 'MDJXS101' LEFT JOIN md_me_material material ON material.material_id = task.material_id LEFT JOIN pdm_base_device device ON device.device_id = task.device_id + left join MD_ME_CribbingInfo info on info.material_id = material.material_id WHERE 1 =1 OPTION 输入.producetask_id <> "" @@ -136,12 +142,18 @@ material.material_code, material.material_name, material.material_spec, - material.material_model + material.material_model, + info.product_code, + info.AlongSide, + info.BshortSide, + info.Htrapezoidal, + info.Wthickness FROM pdm_mg_producetask task LEFT JOIN sch_base_point point ON point.device_id = task.device_id AND point.point_code <> 'MDJXS101' LEFT JOIN md_me_material material ON material.material_id = task.material_id + left join MD_ME_CribbingInfo info on info.material_id = material.material_id WHERE 1 =1 OPTION 输入.producetask_id <> "" diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/wms.xls b/wms/hd/nladmin-system/src/main/java/org/nl/wms/wms.xls index 55f42006413ca4fe9d03e64b4762fe3a4bd5d12c..36e7085b26aa9d15ef39db2d7b2281efddad988b 100644 GIT binary patch delta 23823 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 CpXna} diff --git a/wms/hd/qinx/cribbinginfo.js b/wms/hd/qinx/cribbinginfo.js new file mode 100644 index 0000000..3548f79 --- /dev/null +++ b/wms/hd/qinx/cribbinginfo.js @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/cribbinginfo', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/cribbinginfo/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/cribbinginfo', + method: 'put', + data + }) +} + +export default { add, edit, del } diff --git a/wms/hd/qinx/index.vue b/wms/hd/qinx/index.vue new file mode 100644 index 0000000..b4b617c --- /dev/null +++ b/wms/hd/qinx/index.vue @@ -0,0 +1,336 @@ + + + + + diff --git a/wms/qd/src/api/wms/Cribbing/cribbinginfo.js b/wms/qd/src/api/wms/Cribbing/cribbinginfo.js new file mode 100644 index 0000000..3548f79 --- /dev/null +++ b/wms/qd/src/api/wms/Cribbing/cribbinginfo.js @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/cribbinginfo', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/cribbinginfo/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/cribbinginfo', + method: 'put', + data + }) +} + +export default { add, edit, del } diff --git a/wms/qd/src/views/wms/Cribbing/index.vue b/wms/qd/src/views/wms/Cribbing/index.vue new file mode 100644 index 0000000..e95ecc9 --- /dev/null +++ b/wms/qd/src/views/wms/Cribbing/index.vue @@ -0,0 +1,326 @@ + + + + + diff --git a/wms/qd/src/views/wms/pdm/produceTask/index.vue b/wms/qd/src/views/wms/pdm/produceTask/index.vue index 87ba700..d5f98ca 100644 --- a/wms/qd/src/views/wms/pdm/produceTask/index.vue +++ b/wms/qd/src/views/wms/pdm/produceTask/index.vue @@ -138,16 +138,20 @@ - - + + + + + + 确认 + 1) { this.$refs.table.clearSelection()