From b4d9d48170faa90f65c1ca179e6a4546ff8c2dcc Mon Sep 17 00:00:00 2001 From: liyongde <1419499670@qq.com> Date: Mon, 17 Apr 2023 10:55:07 +0800 Subject: [PATCH] =?UTF-8?q?add:=20=E6=96=B0=E5=A2=9Epc=E7=AB=AF=E7=BB=84?= =?UTF-8?q?=E7=9B=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rest/MaterialDetailController.java | 63 ++++ .../rest/VehicleDetailController.java | 67 +++++ .../service/MaterialDetailService.java | 71 +++++ .../service/VehicleDetailService.java | 71 +++++ .../service/dto/MaterialDetailDto.java | 88 ++++++ .../service/dto/VehicleDetailDto.java | 154 ++++++++++ .../impl/MaterialDetailServiceImpl.java | 133 +++++++++ .../impl/VehicleDetailServiceImpl.java | 135 +++++++++ .../wms/basedata/wql/QMD_PB_VEHICLE_GROUP.wql | 58 ++++ .../src/api/wms/basedata/materialDetail.js | 27 ++ .../src/api/wms/basedata/vehicleDetail.js | 27 ++ .../wms/basedata/material/detail/index.vue | 175 +++++++++++ .../wms/basedata/vehicle/group/index.vue | 277 ++++++++++++++++++ 13 files changed, 1346 insertions(+) create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/rest/MaterialDetailController.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/rest/VehicleDetailController.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/MaterialDetailService.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/VehicleDetailService.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/dto/MaterialDetailDto.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/dto/VehicleDetailDto.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/impl/MaterialDetailServiceImpl.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/impl/VehicleDetailServiceImpl.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/wql/QMD_PB_VEHICLE_GROUP.wql create mode 100644 lms/nladmin-ui/src/api/wms/basedata/materialDetail.js create mode 100644 lms/nladmin-ui/src/api/wms/basedata/vehicleDetail.js create mode 100644 lms/nladmin-ui/src/views/wms/basedata/material/detail/index.vue create mode 100644 lms/nladmin-ui/src/views/wms/basedata/vehicle/group/index.vue diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/rest/MaterialDetailController.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/rest/MaterialDetailController.java new file mode 100644 index 0000000..873a768 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/rest/MaterialDetailController.java @@ -0,0 +1,63 @@ +package org.nl.wms.basedata.rest; + +import org.nl.wms.basedata.service.MaterialDetailService; +import org.nl.wms.basedata.service.dto.MaterialDetailDto; +import org.springframework.data.domain.Pageable; +import lombok.RequiredArgsConstructor; +import org.nl.modules.logging.annotation.Log; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import io.swagger.annotations.*; +import java.util.Map; +import lombok.extern.slf4j.Slf4j; + +/** +* @author lyd +* @date 2023-04-17 +**/ +@RestController +@RequiredArgsConstructor +@Api(tags = "物料详情管理") +@RequestMapping("/api/materialDetail") +@Slf4j +public class MaterialDetailController { + + private final MaterialDetailService materialDetailService; + + @GetMapping + @Log("查询物料详情") + @ApiOperation("查询物料详情") + //@SaCheckPermission("@el.check('materialDetail:list')") + public ResponseEntity<Object> query(@RequestParam Map whereJson, Pageable page){ + return new ResponseEntity<>(materialDetailService.queryAll(whereJson,page),HttpStatus.OK); + } + + @PostMapping + @Log("新增物料详情") + @ApiOperation("新增物料详情") + //@SaCheckPermission("@el.check('materialDetail:add')") + public ResponseEntity<Object> create(@Validated @RequestBody MaterialDetailDto dto){ + materialDetailService.create(dto); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改物料详情") + @ApiOperation("修改物料详情") + //@SaCheckPermission("@el.check('materialDetail:edit')") + public ResponseEntity<Object> update(@Validated @RequestBody MaterialDetailDto dto){ + materialDetailService.update(dto); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除物料详情") + @ApiOperation("删除物料详情") + //@SaCheckPermission("@el.check('materialDetail:del')") + @DeleteMapping + public ResponseEntity<Object> delete(@RequestBody Long[] ids) { + materialDetailService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/rest/VehicleDetailController.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/rest/VehicleDetailController.java new file mode 100644 index 0000000..6383597 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/rest/VehicleDetailController.java @@ -0,0 +1,67 @@ + +package org.nl.wms.basedata.rest; + + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.modules.logging.annotation.Log; +import org.nl.wms.basedata.service.VehicleDetailService; +import org.nl.wms.basedata.service.dto.VehicleDetailDto; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +/** +* @author lyd +* @date 2023-04-17 +**/ +@RestController +@RequiredArgsConstructor +@Api(tags = "组盘信息管理") +@RequestMapping("/api/vehicleDetail") +@Slf4j +public class VehicleDetailController { + + private final VehicleDetailService vehicleDetailService; + + @GetMapping + @Log("查询组盘信息") + @ApiOperation("查询组盘信息") + //@SaCheckPermission("@el.check('vehicleDetail:list')") + public ResponseEntity<Object> query(@RequestParam Map whereJson, Pageable page){ + return new ResponseEntity<>(vehicleDetailService.queryAll(whereJson,page),HttpStatus.OK); + } + + @PostMapping + @Log("新增组盘信息") + @ApiOperation("新增组盘信息") + //@SaCheckPermission("@el.check('vehicleDetail:add')") + public ResponseEntity<Object> create(@Validated @RequestBody VehicleDetailDto dto){ + vehicleDetailService.create(dto); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改组盘信息") + @ApiOperation("修改组盘信息") + //@SaCheckPermission("@el.check('vehicleDetail:edit')") + public ResponseEntity<Object> update(@Validated @RequestBody VehicleDetailDto dto){ + vehicleDetailService.update(dto); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除组盘信息") + @ApiOperation("删除组盘信息") + //@SaCheckPermission("@el.check('vehicleDetail:del')") + @DeleteMapping + public ResponseEntity<Object> delete(@RequestBody Long[] ids) { + vehicleDetailService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/MaterialDetailService.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/MaterialDetailService.java new file mode 100644 index 0000000..d94f5be --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/MaterialDetailService.java @@ -0,0 +1,71 @@ + +package org.nl.wms.basedata.service; + +import org.nl.wms.basedata.service.dto.MaterialDetailDto; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Map; + +/** + * @author lyd + * @description 服务接口 + * @date 2023-04-17 + **/ +public interface MaterialDetailService { + + /** + * 查询数据分页 + * + * @param whereJson 条件 + * @param page 分页参数 + * @return Map<String, Object> + */ + Map<String, Object> queryAll(Map whereJson, Pageable page); + + /** + * 查询所有数据不分页 + * + * @param whereJson 条件参数 + * @return List<MaterialDetailDto> + */ + List<MaterialDetailDto> queryAll(Map whereJson); + + /** + * 根据ID查询 + * + * @param material_id ID + * @return MaterialDetail + */ + MaterialDetailDto findById(Long material_id); + + /** + * 根据编码查询 + * + * @param code code + * @return MaterialDetail + */ + MaterialDetailDto findByCode(String code); + + + /** + * 创建 + * + * @param dto / + */ + void create(MaterialDetailDto dto); + + /** + * 编辑 + * + * @param dto / + */ + void update(MaterialDetailDto dto); + + /** + * 多选删除 + * + * @param ids / + */ + void deleteAll(Long[] ids); +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/VehicleDetailService.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/VehicleDetailService.java new file mode 100644 index 0000000..cc4428b --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/VehicleDetailService.java @@ -0,0 +1,71 @@ + +package org.nl.wms.basedata.service; + +import org.nl.wms.basedata.service.dto.VehicleDetailDto; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Map; + +/** + * @author lyd + * @description 服务接口 + * @date 2023-04-17 + **/ +public interface VehicleDetailService { + + /** + * 查询数据分页 + * + * @param whereJson 条件 + * @param page 分页参数 + * @return Map<String, Object> + */ + Map<String, Object> queryAll(Map whereJson, Pageable page); + + /** + * 查询所有数据不分页 + * + * @param whereJson 条件参数 + * @return List<VehicleDetailDto> + */ + List<VehicleDetailDto> queryAll(Map whereJson); + + /** + * 根据ID查询 + * + * @param vd_id ID + * @return VehicleDetail + */ + VehicleDetailDto findById(Long vd_id); + + /** + * 根据编码查询 + * + * @param code code + * @return VehicleDetail + */ + VehicleDetailDto findByCode(String code); + + + /** + * 创建 + * + * @param dto / + */ + void create(VehicleDetailDto dto); + + /** + * 编辑 + * + * @param dto / + */ + void update(VehicleDetailDto dto); + + /** + * 多选删除 + * + * @param ids / + */ + void deleteAll(Long[] ids); +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/dto/MaterialDetailDto.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/dto/MaterialDetailDto.java new file mode 100644 index 0000000..0e784e9 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/dto/MaterialDetailDto.java @@ -0,0 +1,88 @@ +package org.nl.wms.basedata.service.dto; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author lyd + * @description / + * @date 2023-04-17 + **/ +@Data +public class MaterialDetailDto implements Serializable { + + /** 物料标识 */ + /** + * 防止精度丢失 + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long material_id; + + /** + * 物料编码 + */ + private String material_code; + + /** + * 物料名称 + */ + private String material_name; + + /** + * 订单编号 + */ + private String order_number; + + /** + * 客户名称 + */ + private String customer_name; + + /** + * 产品名称 + */ + private String product_name; + + /** + * 产品牌号 + */ + private String product_grade; + + /** + * 砖型 + */ + private String brick_type; + + /** + * 创建人 + */ + private Long create_id; + + /** + * 创建人姓名 + */ + private String create_name; + + /** + * 创建时间 + */ + private String create_time; + + /** + * 修改人 + */ + private Long update_optid; + + /** + * 修改人 + */ + private String update_optname; + + /** + * 修改时间 + */ + private String update_time; +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/dto/VehicleDetailDto.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/dto/VehicleDetailDto.java new file mode 100644 index 0000000..66b2ecf --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/dto/VehicleDetailDto.java @@ -0,0 +1,154 @@ +package org.nl.wms.basedata.service.dto; + +import lombok.Data; + +import java.math.BigDecimal; +import java.io.Serializable; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; + +/** + * @author lyd + * @description / + * @date 2023-04-17 + **/ +@Data +public class VehicleDetailDto implements Serializable { + + /** + * 防止精度丢失 + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long vd_id; + + private String vehicle_type; + + private String vehicle_code; + + private Long material_id; + + private BigDecimal qty; + + private BigDecimal weight; + + private String is_full; + + private Long workorder_id; + + private String point_code; + + private String tray_high; + + private String crib_category; + + private String palletX1_line; + + private String palletY1_row; + + private String palletA1_angle; + + private String palletX2_line; + + private String palletY2_row; + + private String palletA2_angle; + + private String palletX3_line; + + private String palletY3_row; + + private String palletA3_angle; + + private String pressCribX1_line; + + private String pressCribY1_row; + + private String pressCribA1_angle; + + private String pressCribX2_line; + + private String pressCribY2_row; + + private String pressCribA2_angle; + + private String pressCribX3_line; + + private String pressCribY3_row; + + private String pressCribA3_angle; + + private String Zoffset; + + private String pallet_layerQty; + + private String pressCrib_layerQty; + + private String codeLayerX1_interval; + + private String codeLayerY1_interval; + + private String codeLayerX2_interval; + + private String codeLayerY2_interval; + + private String codeLayerX3_interval; + + private String codeLayerY3_interval; + + private String codeLayerX1_offset; + + private String codeLayerY1_offset; + + private String codeLayerX2_offset; + + private String codeLayerY2_offset; + + private String codeLayerX3_offset; + + private String codeLayerY3_offset; + + private String pressLayerX1_interval; + + private String pressLayerY1_interval; + + private String pressLayerX2_interval; + + private String pressLayerY2_interval; + + private String pressLayerX3_interval; + + private String pressLayerY3_interval; + + private String pressLayerX1_offset; + + private String pressLayerY1_offset; + + private String pressLayerX2_offset; + + private String pressLayerY2_offset; + + private String pressLayerX3_offset; + + private String pressLayerY3_offset; + + 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; + + private String is_fire; + + private String is_in_kiln; +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/impl/MaterialDetailServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/impl/MaterialDetailServiceImpl.java new file mode 100644 index 0000000..0146079 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/impl/MaterialDetailServiceImpl.java @@ -0,0 +1,133 @@ + +package org.nl.wms.basedata.service.impl; + + +import com.alibaba.fastjson.JSON; +import lombok.RequiredArgsConstructor; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.wms.basedata.service.MaterialDetailService; +import org.nl.wms.basedata.service.dto.MaterialDetailDto; +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 com.alibaba.fastjson.JSONObject; +import org.nl.modules.common.utils.SecurityUtils; +import org.nl.modules.wql.core.bean.ResultBean; +import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.modules.wql.util.WqlUtil; +import lombok.extern.slf4j.Slf4j; +import cn.hutool.core.util.ObjectUtil; + +/** + * @author lyd + * @description 服务实现 + * @date 2023-04-17 + **/ +@Service +@RequiredArgsConstructor +@Slf4j +public class MaterialDetailServiceImpl implements MaterialDetailService { + + @Override + public Map<String, Object> queryAll(Map whereJson, Pageable page) { + WQLObject wo = WQLObject.getWQLObject("md_me_material_detail"); + ResultBean rb = wo.pagequery(WqlUtil.getHttpContext(page), "1=1", "update_time desc"); + final JSONObject json = rb.pageResult(); + return json; + } + + @Override + public List<MaterialDetailDto> queryAll(Map whereJson) { + WQLObject wo = WQLObject.getWQLObject("md_me_material_detail"); + JSONArray arr = wo.query().getResultJSONArray(0); + if (ObjectUtil.isNotEmpty(arr)) return arr.toJavaList(MaterialDetailDto.class); + return null; + } + + @Override + public MaterialDetailDto findById(Long material_id) { + WQLObject wo = WQLObject.getWQLObject("md_me_material_detail"); + JSONObject json = wo.query("material_id = '" + material_id + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(json)) { + return json.toJavaObject(MaterialDetailDto.class); + } + return null; + } + + @Override + public MaterialDetailDto findByCode(String code) { + WQLObject wo = WQLObject.getWQLObject("md_me_material_detail"); + JSONObject json = wo.query("code ='" + code + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(json)) { + return json.toJavaObject(MaterialDetailDto.class); + } + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void create(MaterialDetailDto dto) { + Long currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + + dto.setMaterial_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_material_detail"); + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + wo.insert(json); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(MaterialDetailDto dto) { + MaterialDetailDto entity = this.findById(dto.getMaterial_id()); + if (entity == null) throw new BadRequestException("被删除或无权限,操作失败!"); + + Long currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + + String now = DateUtil.now(); + dto.setUpdate_time(now); + dto.setUpdate_optid(currentUserId); + dto.setUpdate_optname(nickName); + + WQLObject wo = WQLObject.getWQLObject("md_me_material_detail"); + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + wo.update(json); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteAll(Long[] ids) { + Long currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + + WQLObject wo = WQLObject.getWQLObject("md_me_material_detail"); + for (Long material_id : ids) { + JSONObject param = new JSONObject(); + param.put("material_id", String.valueOf(material_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/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/impl/VehicleDetailServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/impl/VehicleDetailServiceImpl.java new file mode 100644 index 0000000..79f84f8 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/impl/VehicleDetailServiceImpl.java @@ -0,0 +1,135 @@ + +package org.nl.wms.basedata.service.impl; + + +import com.alibaba.fastjson.JSON; +import lombok.RequiredArgsConstructor; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.wql.WQL; +import org.nl.wms.basedata.service.VehicleDetailService; +import org.nl.wms.basedata.service.dto.VehicleDetailDto; +import org.nl.wms.util.MapOf; +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 com.alibaba.fastjson.JSONObject; +import org.nl.modules.common.utils.SecurityUtils; +import org.nl.modules.wql.core.bean.ResultBean; +import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.modules.wql.util.WqlUtil; +import lombok.extern.slf4j.Slf4j; +import cn.hutool.core.util.ObjectUtil; + +/** + * @author lyd + * @description 服务实现 + * @date 2023-04-17 + **/ +@Service +@RequiredArgsConstructor +@Slf4j +public class VehicleDetailServiceImpl implements VehicleDetailService { + + @Override + public Map<String, Object> queryAll(Map whereJson, Pageable page) { + JSONObject pageQuery = WQL.getWO("QMD_PB_VEHICLE_GROUP").addParamMap(MapOf.of("flag", "1" + , "vehicle_code", whereJson.get("vehicle_code"))) + .pageQuery(WqlUtil.getHttpContext(page), "vehicle_code asc"); + return pageQuery; + } + + @Override + public List<VehicleDetailDto> queryAll(Map whereJson) { + WQLObject wo = WQLObject.getWQLObject("st_ivt_vehicle_detail"); + JSONArray arr = wo.query().getResultJSONArray(0); + if (ObjectUtil.isNotEmpty(arr)) return arr.toJavaList(VehicleDetailDto.class); + return null; + } + + @Override + public VehicleDetailDto findById(Long vd_id) { + WQLObject wo = WQLObject.getWQLObject("st_ivt_vehicle_detail"); + JSONObject json = wo.query("vd_id = '" + vd_id + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(json)) { + return json.toJavaObject(VehicleDetailDto.class); + } + return null; + } + + @Override + public VehicleDetailDto findByCode(String code) { + WQLObject wo = WQLObject.getWQLObject("st_ivt_vehicle_detail"); + JSONObject json = wo.query("code ='" + code + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(json)) { + return json.toJavaObject(VehicleDetailDto.class); + } + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void create(VehicleDetailDto dto) { + Long currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + + dto.setVd_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("st_ivt_vehicle_detail"); + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + wo.insert(json); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(VehicleDetailDto dto) { + VehicleDetailDto entity = this.findById(dto.getVd_id()); + if (entity == null) throw new BadRequestException("被删除或无权限,操作失败!"); + + Long currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + + String now = DateUtil.now(); + dto.setUpdate_time(now); + dto.setUpdate_optid(currentUserId); + dto.setUpdate_optname(nickName); + + WQLObject wo = WQLObject.getWQLObject("st_ivt_vehicle_detail"); + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + wo.update(json); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteAll(Long[] ids) { + Long currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + + WQLObject wo = WQLObject.getWQLObject("st_ivt_vehicle_detail"); + for (Long vd_id : ids) { + JSONObject param = new JSONObject(); + param.put("vd_id", String.valueOf(vd_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/lms/nladmin-system/src/main/java/org/nl/wms/basedata/wql/QMD_PB_VEHICLE_GROUP.wql b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/wql/QMD_PB_VEHICLE_GROUP.wql new file mode 100644 index 0000000..829cbba --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/wql/QMD_PB_VEHICLE_GROUP.wql @@ -0,0 +1,58 @@ +[交易说明] + 交易名: 载具组盘 + 所属模块: + 功能简述: + 版权所有: + 表引用: + 版本经历: + +[数据库] + --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 + +[IO定义] + ################################################# + ## 表字段对应输入参数 + ################################################# + 输入.flag TYPEAS s_string + 输入.vehicle_code TYPEAS s_string + 输入.vehicle_type TYPEAS s_string + 输入.vehicle_status TYPEAS s_string + +[临时表] + --这边列出来的临时表就会在运行期动态创建 + +[临时变量] + --所有中间过程变量均可在此处定义 + +[业务过程] + + ########################################## + # 1、输入输出检查 # + ########################################## + + + ########################################## + # 2、主过程前处理 # + ########################################## + + + ########################################## + # 3、业务主过程 # + ########################################## + + IF 输入.flag = "1" + PAGEQUERY + SELECT + vd.*, + p.point_name + FROM + st_ivt_vehicle_detail vd + LEFT JOIN sch_base_point p ON p.point_code = vd.point_code + WHERE + 1 = 1 + OPTION 输入.vehicle_code <> "" + vd.vehicle_code LIKE '%' 输入.vehicle_code '%' + ENDOPTION + ENDSELECT + ENDPAGEQUERY + ENDIF diff --git a/lms/nladmin-ui/src/api/wms/basedata/materialDetail.js b/lms/nladmin-ui/src/api/wms/basedata/materialDetail.js new file mode 100644 index 0000000..973a1eb --- /dev/null +++ b/lms/nladmin-ui/src/api/wms/basedata/materialDetail.js @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/materialDetail', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/materialDetail/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/materialDetail', + method: 'put', + data + }) +} + +export default { add, edit, del } diff --git a/lms/nladmin-ui/src/api/wms/basedata/vehicleDetail.js b/lms/nladmin-ui/src/api/wms/basedata/vehicleDetail.js new file mode 100644 index 0000000..a83ae8a --- /dev/null +++ b/lms/nladmin-ui/src/api/wms/basedata/vehicleDetail.js @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/vehicleDetail', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/vehicleDetail/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/vehicleDetail', + method: 'put', + data + }) +} + +export default { add, edit, del } diff --git a/lms/nladmin-ui/src/views/wms/basedata/material/detail/index.vue b/lms/nladmin-ui/src/views/wms/basedata/material/detail/index.vue new file mode 100644 index 0000000..7012689 --- /dev/null +++ b/lms/nladmin-ui/src/views/wms/basedata/material/detail/index.vue @@ -0,0 +1,175 @@ +<template> + <div class="app-container"> + <!--工具栏--> + <div class="head-container"> + <!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'--> + <crudOperation :permission="permission" /> + <!--表单组件--> + <el-dialog + :close-on-click-modal="false" + :before-close="crud.cancelCU" + :visible.sync="crud.status.cu > 0" + :title="crud.status.title" + width="500px" + > + <el-form ref="form" :model="form" :rules="rules" size="mini" label-width="80px"> + <el-form-item label="物料编码" prop="material_code"> + <el-input v-model="form.material_code" style="width: 370px;" /> + </el-form-item> + <el-form-item label="物料名称"> + <el-input v-model="form.material_name" style="width: 370px;" /> + </el-form-item> + <el-form-item label="订单编号" prop="order_number"> + <el-input v-model="form.order_number" style="width: 370px;" /> + </el-form-item> + <el-form-item label="客户名称" prop="customer_name"> + <el-input v-model="form.customer_name" style="width: 370px;" /> + </el-form-item> + <el-form-item label="产品名称" prop="product_name"> + <el-input v-model="form.product_name" style="width: 370px;" /> + </el-form-item> + <el-form-item label="产品牌号" prop="product_grade"> + <el-input v-model="form.product_grade" style="width: 370px;" /> + </el-form-item> + <el-form-item label="砖型" prop="brick_type"> + <el-input v-model="form.brick_type" style="width: 370px;" /> + </el-form-item> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="text" @click="crud.cancelCU">取消</el-button> + <el-button :loading="crud.cu === 2" type="primary" @click="crud.submitCU">确认</el-button> + </div> + </el-dialog> + <!--表格渲染--> + <el-table + ref="table" + v-loading="crud.loading" + :data="crud.data" + size="mini" + style="width: 100%;" + @selection-change="crud.selectionChangeHandler" + > + <el-table-column type="selection" width="55" /> + <el-table-column + prop="material_code" + label="物料编码" + :min-width="flexWidth('material_code',crud.data,'物料编码')" + /> + <el-table-column + prop="material_name" + label="物料名称" + :min-width="flexWidth('material_name',crud.data,'物料名称')" + /> + <el-table-column + prop="order_number" + label="订单编号" + :min-width="flexWidth('order_number',crud.data,'订单编号')" + /> + <el-table-column + prop="customer_name" + label="客户名称" + :min-width="flexWidth('customer_name',crud.data,'客户名称')" + /> + <el-table-column + prop="product_name" + label="产品名称" + :min-width="flexWidth('product_name',crud.data,'产品名称')" + /> + <el-table-column + prop="product_grade" + label="产品牌号" + :min-width="flexWidth('product_grade',crud.data,'产品牌号')" + /> + <el-table-column prop="brick_type" label="砖型" :min-width="flexWidth('brick_type',crud.data,'砖型')" /> + <el-table-column prop="create_name" label="创建人" :min-width="flexWidth('create_name',crud.data,'创建人')" /> + <el-table-column prop="update_optname" label="修改人" :min-width="flexWidth('update_optname',crud.data,'创建人')" /> + <el-table-column prop="update_time" label="最后修改时间" :min-width="flexWidth('update_time',crud.data,'创建人')" /> + <el-table-column v-permission="[]" label="操作" width="120px" align="center" fixed="right"> + <template slot-scope="scope"> + <udOperation + :data="scope.row" + :permission="permission" + /> + </template> + </el-table-column> + </el-table> + <!--分页组件--> + <pagination /> + </div> + </div> +</template> + +<script> +import crudMaterialDetail from '@/api/wms/basedata/materialDetail' +import CRUD, { crud, form, header, presenter } from '@crud/crud' +import rrOperation from '@crud/RR.operation' +import crudOperation from '@crud/CRUD.operation' +import udOperation from '@crud/UD.operation' +import pagination from '@crud/Pagination' + +const defaultForm = { + material_id: null, + material_code: null, + material_name: null, + order_number: null, + customer_name: null, + product_name: null, + product_grade: null, + brick_type: null, + create_id: null, + create_name: null, + create_time: null, + update_optid: null, + update_optname: null, + update_time: null +} +export default { + name: 'MaterialDetail', + components: { pagination, crudOperation, rrOperation, udOperation }, + mixins: [presenter(), header(), form(defaultForm), crud()], + cruds() { + return CRUD({ + title: '物料详情', + url: 'api/materialDetail', + idField: 'material_id', + sort: 'material_id,desc', + crudMethod: { ...crudMaterialDetail } + }) + }, + data() { + return { + permission: {}, + rules: { + material_code: [ + { required: true, message: '物料编码不能为空', trigger: 'blur' } + ], + order_number: [ + { required: true, message: '订单编号不能为空', trigger: 'blur' } + ], + customer_name: [ + { required: true, message: '客户名称不能为空', trigger: 'blur' } + ], + product_name: [ + { required: true, message: '产品名称不能为空', trigger: 'blur' } + ], + product_grade: [ + { required: true, message: '产品牌号不能为空', trigger: 'blur' } + ], + brick_type: [ + { required: true, message: '砖型不能为空', trigger: 'blur' } + ] + } + } + }, + methods: { + // 钩子:在获取表格数据之前执行,false 则代表不获取数据 + [CRUD.HOOK.beforeRefresh]() { + return true + } + } +} +</script> + +<style scoped> + +</style> diff --git a/lms/nladmin-ui/src/views/wms/basedata/vehicle/group/index.vue b/lms/nladmin-ui/src/views/wms/basedata/vehicle/group/index.vue new file mode 100644 index 0000000..147493a --- /dev/null +++ b/lms/nladmin-ui/src/views/wms/basedata/vehicle/group/index.vue @@ -0,0 +1,277 @@ +<template> + <div class="app-container"> + <!--工具栏--> + <div class="head-container"> + <div v-if="crud.props.searchToggle"> + <el-form + :inline="true" + class="demo-form-inline" + label-position="right" + label-width="90px" + label-suffix=":" + > + <el-form-item label="载具编码"> + <el-input + v-model="query.vehicle_code" + clearable + size="mini" + placeholder="请输入载具编码" + @keyup.enter.native="crud.toQuery" + /> + </el-form-item> + <rrOperation /> + </el-form> + </div> + <!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'--> + <crudOperation :permission="permission" /> + <!--表单组件--> + <el-dialog + :close-on-click-modal="false" + :before-close="crud.cancelCU" + :visible.sync="crud.status.cu > 0" + :title="crud.status.title" + width="500px" + > + <el-form ref="form" :model="form" :rules="rules" size="mini" label-width="80px"> + <el-form-item label="载具类型" prop="vehicle_type"> + <el-select + v-model="form.vehicle_type" + size="mini" + placeholder="载具类型" + class="filter-item" + style="width: 370px" + clearable + > + <el-option + v-for="item in dict.vehicle_type" + :key="item.id" + :label="item.label" + :value="item.value" + /> + </el-select> + </el-form-item> + <el-form-item label="载具编码" prop="vehicle_code"> + <el-input v-model="form.vehicle_code" style="width: 370px;" /> + </el-form-item> + <el-form-item label="数量" prop="qty"> + <el-input v-model="form.qty" style="width: 370px;" /> + </el-form-item> + <el-form-item label="重量" prop="weight"> + <el-input v-model="form.weight" style="width: 370px;" /> + </el-form-item> + <el-form-item label="点位编码"> + <el-input v-model="form.point_code" style="width: 370px;" /> + </el-form-item> + <el-form-item label="是否满垛" prop="is_full"> + <el-radio v-model="form.is_full" label="0">否</el-radio> + <el-radio v-model="form.is_full" label="1">是</el-radio> + </el-form-item> + <el-form-item label="是否烧制"> + <el-radio v-model="form.is_fire" label="0">否</el-radio> + <el-radio v-model="form.is_fire" label="1">是</el-radio> + </el-form-item> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="text" @click="crud.cancelCU">取消</el-button> + <el-button :loading="crud.cu === 2" type="primary" @click="crud.submitCU">确认</el-button> + </div> + </el-dialog> + <!--表格渲染--> + <el-table + ref="table" + v-loading="crud.loading" + :data="crud.data" + size="mini" + style="width: 100%;" + @selection-change="crud.selectionChangeHandler" + > + <el-table-column type="selection" width="55" /> + <el-table-column + prop="vehicle_type" + label="载具类型" + :min-width="flexWidth('vehicle_type',crud.data,'载具类型')"> + <template slot-scope="scope"> + {{ dict.label.vehicle_type[scope.row.vehicle_type] }} + </template> + </el-table-column> + <el-table-column + prop="vehicle_code" + label="载具编码" + :min-width="flexWidth('vehicle_code',crud.data,'载具编码')" + /> + <el-table-column prop="qty" label="数量" :min-width="flexWidth('qty',crud.data,'数量')"> + <template slot-scope="scope"> + {{scope.row.qty}}/块 + </template> + </el-table-column> + <el-table-column prop="weight" label="重量" :min-width="flexWidth('weight',crud.data,'重量')" /> + <el-table-column prop="point_name" label="点位名称" :min-width="flexWidth('point_name',crud.data,'点位名称')" /> + <el-table-column prop="is_full" label="是否满垛" :min-width="flexWidth('is_full',crud.data,'是否满垛')" > + <template slot-scope="scope"> + {{scope.row.is_full=='1'?'是':'否'}} + </template> + </el-table-column> + <el-table-column prop="is_fire" label="是否烧制" :min-width="flexWidth('is_fire',crud.data,'是否烧制')"> + <template slot-scope="scope"> + {{scope.row.is_fire=='1'?'是':'否'}} + </template> + </el-table-column> + <el-table-column + prop="create_name" + label="创建人" + :min-width="flexWidth('create_name',crud.data,'创建人')" + /> + <el-table-column + prop="create_time" + label="创建时间" + :min-width="flexWidth('create_time',crud.data,'创建时间')" + /> + <el-table-column + prop="update_optname" + label="更新人" + :min-width="flexWidth('update_optname',crud.data,'更新人')" + /> + <el-table-column + prop="update_time" + label="更新时间" + :min-width="flexWidth('update_time',crud.data,'更新时间')" + /> + <el-table-column v-permission="[]" label="操作" width="120px" align="center" fixed="right"> + <template slot-scope="scope"> + <udOperation + :data="scope.row" + :permission="permission" + /> + </template> + </el-table-column> + </el-table> + <!--分页组件--> + <pagination /> + </div> + </div> +</template> + +<script> +import crudVehicleDetail from '@/api/wms/basedata/vehicleDetail' +import CRUD, { crud, form, header, presenter } from '@crud/crud' +import rrOperation from '@crud/RR.operation' +import crudOperation from '@crud/CRUD.operation' +import udOperation from '@crud/UD.operation' +import pagination from '@crud/Pagination' + +const defaultForm = { + vd_id: null, + vehicle_type: null, + vehicle_code: null, + material_id: null, + qty: null, + weight: null, + is_full: '0', + workorder_id: null, + point_code: null, + tray_high: null, + crib_category: null, + palletX1_line: null, + palletY1_row: null, + palletA1_angle: null, + palletX2_line: null, + palletY2_row: null, + palletA2_angle: null, + palletX3_line: null, + palletY3_row: null, + palletA3_angle: null, + pressCribX1_line: null, + pressCribY1_row: null, + pressCribA1_angle: null, + pressCribX2_line: null, + pressCribY2_row: null, + pressCribA2_angle: null, + pressCribX3_line: null, + pressCribY3_row: null, + pressCribA3_angle: null, + Zoffset: null, + pallet_layerQty: null, + pressCrib_layerQty: null, + codeLayerX1_interval: null, + codeLayerY1_interval: null, + codeLayerX2_interval: null, + codeLayerY2_interval: null, + codeLayerX3_interval: null, + codeLayerY3_interval: null, + codeLayerX1_offset: null, + codeLayerY1_offset: null, + codeLayerX2_offset: null, + codeLayerY2_offset: null, + codeLayerX3_offset: null, + codeLayerY3_offset: null, + pressLayerX1_interval: null, + pressLayerY1_interval: null, + pressLayerX2_interval: null, + pressLayerY2_interval: null, + pressLayerX3_interval: null, + pressLayerY3_interval: null, + pressLayerX1_offset: null, + pressLayerY1_offset: null, + pressLayerX2_offset: null, + pressLayerY2_offset: null, + pressLayerX3_offset: null, + pressLayerY3_offset: null, + tool_coordinate: null, + create_id: null, + create_name: null, + create_time: null, + update_optid: null, + update_optname: null, + update_time: null, + is_delete: null, + is_fire: '0', + is_in_kiln: null +} +export default { + name: 'VehicleDetail', + dicts: ['vehicle_type'], + components: { pagination, crudOperation, rrOperation, udOperation }, + mixins: [presenter(), header(), form(defaultForm), crud()], + cruds() { + return CRUD({ + title: '组盘信息', + url: 'api/vehicleDetail', + idField: 'vd_id', + sort: 'vd_id,desc', + crudMethod: { ...crudVehicleDetail } + }) + }, + data() { + return { + permission: {}, + rules: { + vehicle_type: [ + { required: true, message: '不能为空', trigger: 'blur' } + ], + vehicle_code: [ + { required: true, message: '不能为空', trigger: 'blur' } + ], + qty: [ + { required: true, message: '不能为空', trigger: 'blur' } + ], + weight: [ + { required: true, message: '不能为空', trigger: 'blur' } + ], + is_full: [ + { required: true, message: '不能为空', trigger: 'blur' } + ] + } + } + }, + methods: { + // 钩子:在获取表格数据之前执行,false 则代表不获取数据 + [CRUD.HOOK.beforeRefresh]() { + return true + } + } +} +</script> + +<style scoped> + +</style>