From a6c0d345220832dfdbd075e0de2a2e58e4b18688 Mon Sep 17 00:00:00 2001 From: x_z Date: Wed, 15 Feb 2023 15:28:07 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=B7=BB=E5=8A=A0=E5=BA=93=E5=AD=98=E5=85=BB?= =?UTF-8?q?=E6=8A=A4=E5=8A=9F=E8=83=BD=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/inv/InvMAOrderController.java | 130 +++++++++++++++ .../inv/InvMAOrderDetailController.java | 116 +++++++++++++ .../glxp/api/dao/inv/InvMAExplanationDao.java | 8 + .../com/glxp/api/dao/inv/InvMAOrderDao.java | 12 ++ .../glxp/api/dao/inv/InvMAOrderDetailDao.java | 11 ++ .../entity/inv/InvMAOrderDetailEntity.java | 12 +- .../glxp/api/entity/inv/InvMAOrderEntity.java | 10 +- .../req/inv/AddInvMAOrderDetailRequest.java | 4 +- .../inv/FilterInvProductDetailRequest.java | 10 ++ .../api/res/inv/InvMAOrderDetailResponse.java | 12 +- .../glxp/api/res/inv/InvMAOrderResponse.java | 24 ++- .../inv/impl/InvMAOrderDetailServiceImpl.java | 152 +++++++++++++++++- .../inv/impl/InvMAOrderServiceImpl.java | 96 ++++++++++- .../mapper/inv/InvMAExplanationDao.xml | 6 +- .../mybatis/mapper/inv/InvMAOrderDao.xml | 40 ++++- .../mapper/inv/InvMAOrderDetailDao.xml | 38 +++++ .../mapper/inv/invProductDetailDao.xml | 6 + 17 files changed, 650 insertions(+), 37 deletions(-) create mode 100644 src/main/java/com/glxp/api/controller/inv/InvMAOrderController.java create mode 100644 src/main/java/com/glxp/api/controller/inv/InvMAOrderDetailController.java diff --git a/src/main/java/com/glxp/api/controller/inv/InvMAOrderController.java b/src/main/java/com/glxp/api/controller/inv/InvMAOrderController.java new file mode 100644 index 000000000..18e4dd9cd --- /dev/null +++ b/src/main/java/com/glxp/api/controller/inv/InvMAOrderController.java @@ -0,0 +1,130 @@ +package com.glxp.api.controller.inv; + +import cn.hutool.core.util.StrUtil; +import com.github.pagehelper.PageInfo; +import com.glxp.api.common.enums.ResultEnum; +import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.entity.inv.InvMAOrderEntity; +import com.glxp.api.req.inv.FilterInvMAOrderRequest; +import com.glxp.api.res.inv.InvMAOrderResponse; +import com.glxp.api.service.inv.InvMAOrderService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 库存养护记录接口 + */ +@Slf4j +@RestController +public class InvMAOrderController { + + @Resource + private InvMAOrderService invMAOrderService; + + /** + * 查询养护记录列表 + * + * @param filterInvMAOrderRequest + * @return + */ + @GetMapping("/inv/MA/order/filterList") + public BaseResponse filterList(FilterInvMAOrderRequest filterInvMAOrderRequest) { + List list = invMAOrderService.filterList(filterInvMAOrderRequest); + PageInfo pageInfo = new PageInfo<>(list); + return ResultVOUtils.page(pageInfo); + } + + /** + * 添加养护记录 + * + * @param invMAOrderEntity + * @param bindingResult + * @return + */ + @PostMapping("/inv/MA/order/addOrder") + public BaseResponse addOrder(@RequestBody InvMAOrderEntity invMAOrderEntity, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); + } + return invMAOrderService.addOrder(invMAOrderEntity); + } + + /** + * 更新养护记录 + * + * @param invMaintenanceOrder + * @param bindingResult + * @return + */ + @PostMapping("/inv/MA/order/update") + public BaseResponse update(@RequestBody InvMAOrderEntity invMAOrderEntity, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); + } + if (null == invMAOrderEntity || StrUtil.isBlank(invMAOrderEntity.getOrderId())) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "参数不能为空!"); + } + return invMAOrderService.update(invMAOrderEntity); + } + + /** + * 提交审核 + * + * @return + */ + @PostMapping("/inv/MA/order/submitAudit") + public BaseResponse submitAudit(@RequestBody FilterInvMAOrderRequest filterInvMAOrderRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); + } + if (null == filterInvMAOrderRequest || null == filterInvMAOrderRequest.getId()) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "参数不能为空"); + } + return invMAOrderService.submitAudit(filterInvMAOrderRequest.getId()); + } + + /** + * 更新养护记录状态 + * + * @param filterInvMAOrderRequest + * @param bindingResult + * @return + */ + @PostMapping("/inv/MA/order/updateStatus") + public BaseResponse updateStatus(@RequestBody FilterInvMAOrderRequest filterInvMAOrderRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); + } + if (null == filterInvMAOrderRequest || null == filterInvMAOrderRequest.getId() || null == filterInvMAOrderRequest.getStatus()) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "参数不能为空!"); + } + return invMAOrderService.updateStatus(filterInvMAOrderRequest.getId(), filterInvMAOrderRequest.getStatus()); + } + + /** + * 删除养护记录 + * + * @param filterInvMAOrderRequest + * @param bindingResult + * @return + */ + @PostMapping("/inv/MA/order/delete") + public BaseResponse delete(@RequestBody FilterInvMAOrderRequest filterInvMAOrderRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); + } + if (null == filterInvMAOrderRequest || null == filterInvMAOrderRequest.getId()) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "参数不能为空!"); + } + return invMAOrderService.delete(filterInvMAOrderRequest.getId()); + } + +} diff --git a/src/main/java/com/glxp/api/controller/inv/InvMAOrderDetailController.java b/src/main/java/com/glxp/api/controller/inv/InvMAOrderDetailController.java new file mode 100644 index 000000000..fecbc3fe9 --- /dev/null +++ b/src/main/java/com/glxp/api/controller/inv/InvMAOrderDetailController.java @@ -0,0 +1,116 @@ +package com.glxp.api.controller.inv; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.github.pagehelper.PageInfo; +import com.glxp.api.common.enums.ResultEnum; +import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.entity.inv.InvMAOrderDetailEntity; +import com.glxp.api.req.inv.AddInvMAOrderDetailRequest; +import com.glxp.api.req.inv.FilterInvMAOrderDetailRequest; +import com.glxp.api.res.inv.InvMAOrderDetailResponse; +import com.glxp.api.service.inv.InvMAOrderDetailService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 库存养护记录详情接口 + */ +@Slf4j +@RestController +public class InvMAOrderDetailController { + + @Resource + private InvMAOrderDetailService invMAOrderDetailService; + + /** + * 查询养护记录详情 + * + * @param filterInvMAOrderDetailRequest + * @return + */ + @GetMapping("/inv/MA/order/detail/filterList") + public BaseResponse filterList(FilterInvMAOrderDetailRequest filterInvMAOrderDetailRequest) { + List list = invMAOrderDetailService.filterList(filterInvMAOrderDetailRequest); + PageInfo pageInfo = new PageInfo<>(list); + return ResultVOUtils.page(pageInfo); + } + + /** + * 扫码添加养护记录详情 + * + * @param invMAOrderDetailEntity + * @param bindingResult + * @return + */ + @PostMapping("/inv/MA/order/detail/addOrderDetail") + public BaseResponse addOrderDetail(@RequestBody InvMAOrderDetailEntity invMAOrderDetailEntity, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); + } + if (null == invMAOrderDetailEntity || StrUtil.isBlank(invMAOrderDetailEntity.getCode()) || StrUtil.isBlank(invMAOrderDetailEntity.getOrderIdFk())) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "参数不能为空"); + } + return invMAOrderDetailService.addOrderDetail(invMAOrderDetailEntity); + } + + /** + * 选中库存详情批量添加养护记录详情 + * + * @param invProductIds + * @return + */ + @PostMapping("/inv/MA/order/detail/batchAddDetail") + public BaseResponse batchAddDetail(@RequestBody AddInvMAOrderDetailRequest addMAOrderDetailRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); + } + if (null == addMAOrderDetailRequest || CollUtil.isEmpty(addMAOrderDetailRequest.getInvProductIds()) || StrUtil.isBlank(addMAOrderDetailRequest.getOrderIdFk())) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "参数不能为空!"); + } + return invMAOrderDetailService.batchAddDetail(addMAOrderDetailRequest); + } + + /** + * 减一 + * + * @param filterInvMAOrderDetailRequest + * @return + */ + @PostMapping("/inv/MA/order/detail/delete") + public BaseResponse delete(@RequestBody FilterInvMAOrderDetailRequest filterInvMAOrderDetailRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); + } + if (null == filterInvMAOrderDetailRequest || null == filterInvMAOrderDetailRequest.getId()) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "参数不能为空"); + } + return invMAOrderDetailService.delete(filterInvMAOrderDetailRequest.getId()); + } + + /** + * 更新库存养护记录详情 + * + * @param invMAOrderDetailEntity + * @return + */ + @PostMapping("/inv/MA/order/detail/update") + public BaseResponse update(@RequestBody InvMAOrderDetailEntity invMAOrderDetailEntity, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); + } + if (null == invMAOrderDetailEntity || null == invMAOrderDetailEntity.getId()) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "参数不能为空!"); + } + return invMAOrderDetailService.update(invMAOrderDetailEntity); + } + +} diff --git a/src/main/java/com/glxp/api/dao/inv/InvMAExplanationDao.java b/src/main/java/com/glxp/api/dao/inv/InvMAExplanationDao.java index e8aad81e3..620467633 100644 --- a/src/main/java/com/glxp/api/dao/inv/InvMAExplanationDao.java +++ b/src/main/java/com/glxp/api/dao/inv/InvMAExplanationDao.java @@ -4,4 +4,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.glxp.api.entity.inv.InvMAExplanationEntity; public interface InvMAExplanationDao extends BaseMapper { + + /** + * 根据状态值查询库存养护描述 + * + * @param status + * @return + */ + InvMAExplanationEntity selectByStatus(int status); } \ No newline at end of file diff --git a/src/main/java/com/glxp/api/dao/inv/InvMAOrderDao.java b/src/main/java/com/glxp/api/dao/inv/InvMAOrderDao.java index a84582f3e..9260b3165 100644 --- a/src/main/java/com/glxp/api/dao/inv/InvMAOrderDao.java +++ b/src/main/java/com/glxp/api/dao/inv/InvMAOrderDao.java @@ -2,6 +2,18 @@ package com.glxp.api.dao.inv; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.glxp.api.entity.inv.InvMAOrderEntity; +import com.glxp.api.req.inv.FilterInvMAOrderRequest; +import com.glxp.api.res.inv.InvMAOrderResponse; + +import java.util.List; public interface InvMAOrderDao extends BaseMapper { + + /** + * 查询养护记录VO列表 + * + * @param filterInvMAOrderRequest + * @return + */ + List filterList(FilterInvMAOrderRequest filterInvMAOrderRequest); } \ No newline at end of file diff --git a/src/main/java/com/glxp/api/dao/inv/InvMAOrderDetailDao.java b/src/main/java/com/glxp/api/dao/inv/InvMAOrderDetailDao.java index b4a842bbd..9805fcd6b 100644 --- a/src/main/java/com/glxp/api/dao/inv/InvMAOrderDetailDao.java +++ b/src/main/java/com/glxp/api/dao/inv/InvMAOrderDetailDao.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.glxp.api.entity.inv.InvMAOrderDetailEntity; import com.glxp.api.req.inv.FilterInvMAOrderDetailRequest; import com.glxp.api.res.inv.InvMAOrderDetailResponse; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -16,4 +17,14 @@ public interface InvMAOrderDetailDao extends BaseMapper * @return */ List filterList(FilterInvMAOrderDetailRequest filterInvMAOrderDetailRequest); + + /** + * 根据养护记录号和条码查询养护记录详情 + * + * @param orderIdFk + * @param code + * @return + */ + InvMAOrderDetailEntity selectByOrderIdAndCode(@Param("orderIdFk") String orderIdFk, @Param("code") String code); + } \ No newline at end of file diff --git a/src/main/java/com/glxp/api/entity/inv/InvMAOrderDetailEntity.java b/src/main/java/com/glxp/api/entity/inv/InvMAOrderDetailEntity.java index 6a7509cd1..29515aef5 100644 --- a/src/main/java/com/glxp/api/entity/inv/InvMAOrderDetailEntity.java +++ b/src/main/java/com/glxp/api/entity/inv/InvMAOrderDetailEntity.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; +import java.util.Date; + /** * 库存养护记录详情表 */ @@ -35,7 +37,7 @@ public class InvMAOrderDetailEntity { * 耗材字典ID */ @TableField(value = "relId") - private String relId; + private Long relId; /** * DI标识 @@ -71,25 +73,25 @@ public class InvMAOrderDetailEntity { * 养护状态 0:未养护 1:已养护 */ @TableField(value = "maStatus") - private Boolean maStatus; + private Integer maStatus; /** * 设备状态 0:异常 1:正常 */ @TableField(value = "deviceStatus") - private Boolean deviceStatus; + private Integer deviceStatus; /** * 养护时间 */ @TableField(value = "createTime") - private String createTime; + private Date createTime; /** * 更新时间 */ @TableField(value = "updateTime") - private String updateTime; + private Date updateTime; /** * 备注 diff --git a/src/main/java/com/glxp/api/entity/inv/InvMAOrderEntity.java b/src/main/java/com/glxp/api/entity/inv/InvMAOrderEntity.java index 00ee6af90..943c6cdb8 100644 --- a/src/main/java/com/glxp/api/entity/inv/InvMAOrderEntity.java +++ b/src/main/java/com/glxp/api/entity/inv/InvMAOrderEntity.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; +import java.util.Date; + /** * 库存养护记录表 */ @@ -37,25 +39,25 @@ public class InvMAOrderEntity { * 状态 0:草稿 1:未审核 2:已完成 */ @TableField(value = "`status`") - private Boolean status; + private Integer status; /** * 养护日期 */ @TableField(value = "createTime") - private String createTime; + private Date createTime; /** * 更新时间 */ @TableField(value = "updateTime") - private String updateTime; + private Date updateTime; /** * 审核时间 */ @TableField(value = "auditTime") - private String auditTime; + private Date auditTime; /** * 养护人 diff --git a/src/main/java/com/glxp/api/req/inv/AddInvMAOrderDetailRequest.java b/src/main/java/com/glxp/api/req/inv/AddInvMAOrderDetailRequest.java index 24ee518b0..d45812534 100644 --- a/src/main/java/com/glxp/api/req/inv/AddInvMAOrderDetailRequest.java +++ b/src/main/java/com/glxp/api/req/inv/AddInvMAOrderDetailRequest.java @@ -1,10 +1,13 @@ package com.glxp.api.req.inv; +import lombok.Data; + import java.util.List; /** * 添加库粗养护记录详情接口参数 */ +@Data public class AddInvMAOrderDetailRequest { /** @@ -17,5 +20,4 @@ public class AddInvMAOrderDetailRequest { */ List invProductIds; - } diff --git a/src/main/java/com/glxp/api/req/inv/FilterInvProductDetailRequest.java b/src/main/java/com/glxp/api/req/inv/FilterInvProductDetailRequest.java index fba6804c7..c9cda9afd 100644 --- a/src/main/java/com/glxp/api/req/inv/FilterInvProductDetailRequest.java +++ b/src/main/java/com/glxp/api/req/inv/FilterInvProductDetailRequest.java @@ -75,4 +75,14 @@ public class FilterInvProductDetailRequest extends ListPageRequest { * 更新时间 */ private String updateTime; + + /** + * 生产日期 + */ + private String productionDate; + + /** + * 失效日期 + */ + private String expireDate; } diff --git a/src/main/java/com/glxp/api/res/inv/InvMAOrderDetailResponse.java b/src/main/java/com/glxp/api/res/inv/InvMAOrderDetailResponse.java index 2d38f830e..516448b38 100644 --- a/src/main/java/com/glxp/api/res/inv/InvMAOrderDetailResponse.java +++ b/src/main/java/com/glxp/api/res/inv/InvMAOrderDetailResponse.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import lombok.Data; +import java.util.Date; + /** * 养护记录详情接口结果封装类 */ @@ -26,7 +28,7 @@ public class InvMAOrderDetailResponse { /** * 耗材字典ID */ - private String relId; + private Long relId; /** * DI标识 @@ -56,22 +58,22 @@ public class InvMAOrderDetailResponse { /** * 养护状态 0:未养护 1:已养护 */ - private Boolean maStatus; + private Integer maStatus; /** * 设备状态 0:异常 1:正常 */ - private Boolean deviceStatus; + private Integer deviceStatus; /** * 养护时间 */ - private String createTime; + private Date createTime; /** * 更新时间 */ - private String updateTime; + private Date updateTime; /** * 备注 diff --git a/src/main/java/com/glxp/api/res/inv/InvMAOrderResponse.java b/src/main/java/com/glxp/api/res/inv/InvMAOrderResponse.java index 1d9ee9185..d39b244c2 100644 --- a/src/main/java/com/glxp/api/res/inv/InvMAOrderResponse.java +++ b/src/main/java/com/glxp/api/res/inv/InvMAOrderResponse.java @@ -2,6 +2,8 @@ package com.glxp.api.res.inv; import lombok.Data; +import java.util.Date; + /** * 养护记录接口返回结果 */ @@ -28,22 +30,22 @@ public class InvMAOrderResponse { /** * 状态 0:草稿 1:未审核 2:已完成 */ - private Boolean status; + private Integer status; /** * 养护日期 */ - private String createTime; + private Date createTime; /** * 更新时间 */ - private String updateTime; + private Date updateTime; /** * 审核时间 */ - private String auditTime; + private Date auditTime; /** * 养护人 @@ -61,13 +63,23 @@ public class InvMAOrderResponse { private String remark; /** - * 分库名称 + * 仓库名称 */ - private String invWarehouseName; + private String invName; /** * 货位名称 */ private String invSpaceName; + /** + * 创建人名称 + */ + private String createUserName; + + /** + * 审核人名称 + */ + private String auditUserName; + } diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvMAOrderDetailServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvMAOrderDetailServiceImpl.java index 88366176a..183553ba3 100644 --- a/src/main/java/com/glxp/api/service/inv/impl/InvMAOrderDetailServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inv/impl/InvMAOrderDetailServiceImpl.java @@ -1,20 +1,29 @@ package com.glxp.api.service.inv.impl; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; +import com.glxp.api.common.enums.ResultEnum; import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.constant.ConstantType; import com.glxp.api.dao.inv.*; -import com.glxp.api.entity.inv.InvMAOrderDetailEntity; +import com.glxp.api.entity.basic.UdiEntity; +import com.glxp.api.entity.inv.*; import com.glxp.api.req.inv.AddInvMAOrderDetailRequest; import com.glxp.api.req.inv.FilterInvMAOrderDetailRequest; +import com.glxp.api.req.inv.FilterInvProductDetailRequest; import com.glxp.api.res.inv.InvMAOrderDetailResponse; import com.glxp.api.service.inv.InvMAOrderDetailService; +import com.glxp.api.util.udi.FilterUdiUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.util.Collections; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; @Slf4j @Service @@ -45,21 +54,150 @@ public class InvMAOrderDetailServiceImpl implements InvMAOrderDetailService { @Override public BaseResponse addOrderDetail(InvMAOrderDetailEntity invMAOrderDetailEntity) { - return null; + //解析条码 + UdiEntity udi = FilterUdiUtils.getUdi(invMAOrderDetailEntity.getCode()); + //查询此条码是否重复 + InvMAOrderDetailEntity maintenanceOrderDetailEntity = invMAOrderDetailDao.selectByOrderIdAndCode(invMAOrderDetailEntity.getOrderIdFk(), invMAOrderDetailEntity.getCode()); + + //查询养护说明 + InvMAExplanationEntity invMAExplanationEntity = invMAExplanationDao.selectByStatus(1); + if (null != maintenanceOrderDetailEntity) { + if (StrUtil.isBlank(udi.getSerialNo()) || (StrUtil.isBlank(udi.getBatchNo()) && StrUtil.isBlank(udi.getSerialNo()))) { + maintenanceOrderDetailEntity.setCount(maintenanceOrderDetailEntity.getCount() + 1); + maintenanceOrderDetailEntity.setUpdateTime(new Date()); + invMAOrderDetailDao.updateById(maintenanceOrderDetailEntity); + } else { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "条码重复!"); + } + } else { + //查询养护记录信息 + InvMAOrderEntity maOrder = invMAOrderDao.selectOne(new QueryWrapper().eq("orderId", invMAOrderDetailEntity.getOrderIdFk())); + //查询此产品库存详情是否存在 + FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest(); + filterInvProductDetailRequest.setCode(invMAOrderDetailEntity.getCode()); + filterInvProductDetailRequest.setBatchNo(udi.getBatchNo()); + filterInvProductDetailRequest.setInvCode(maOrder.getInvCode()); + filterInvProductDetailRequest.setInvSpaceCode(maOrder.getInvSpaceCode()); + filterInvProductDetailRequest.setProductionDate(udi.getProduceDate()); + filterInvProductDetailRequest.setExpireDate(udi.getExpireDate()); + List invProductDetailEntities = invProductDetailDao.filterInvProductDetailList(filterInvProductDetailRequest); + if (CollUtil.isNotEmpty(invProductDetailEntities)) { + log.info("库存中存在,添加到库存养护记录详情中"); + //设置养护状态为未养护 + invMAOrderDetailEntity.setMaStatus(0); + //设置设备养护状态为正常 + invMAOrderDetailEntity.setDeviceStatus(1); + invMAOrderDetailEntity.setCount(1); + invMAOrderDetailEntity.setBatchNo(udi.getBatchNo()); + invMAOrderDetailEntity.setProductionDate(udi.getProduceDate()); + invMAOrderDetailEntity.setExpireDate(udi.getExpireDate()); + invMAOrderDetailEntity.setNameCode(udi.getUdi()); + invMAOrderDetailEntity.setRelId(invProductDetailEntities.get(0).getRelId()); + if (null != invMAExplanationEntity) { + invMAOrderDetailEntity.setRemark(invMAExplanationEntity.getText()); + } + invMAOrderDetailEntity.setCreateTime(new Date()); + invMAOrderDetailDao.insert(invMAOrderDetailEntity); + } else { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "当前仓库中不存在此产品,无法进行养护!"); + } + } + return ResultVOUtils.success("添加库存养护详情成功!"); } @Override public BaseResponse delete(Integer id) { - return null; + InvMAOrderDetailEntity invMAOrderDetailEntity = invMAOrderDetailDao.selectById(id); + if (invMAOrderDetailEntity.getCount() > 1) { + invMAOrderDetailEntity.setCount(invMAOrderDetailEntity.getCount() - 1); + invMAOrderDetailDao.updateById(invMAOrderDetailEntity); + } else { + //养护数量为0,直接删除养护记录详情 + invMAOrderDetailDao.deleteById(id); + } + return ResultVOUtils.success(); } @Override public BaseResponse batchAddDetail(AddInvMAOrderDetailRequest addMAOrderDetailRequest) { - return null; + //查询库存养护记录说明 + InvMAExplanationEntity invMAExplanationEntity = invMAExplanationDao.selectByStatus(1); + //遍历库存ID,查找库存详情的条码信息,生成库存养护记录详情 + addMAOrderDetailRequest.getInvProductIds().forEach(invProductId -> { + //查询库存信息 + InvProductEntity invProductEntity = invProductDao.selectById(invProductId); + //查询库存详情码信息 + FilterInvProductDetailRequest detailRequest = new FilterInvProductDetailRequest(); + detailRequest.setRelId(String.valueOf(invProductEntity.getRelIdFk())); + detailRequest.setBatchNo(invProductEntity.getBatchNo()); + detailRequest.setDeptCode(invProductEntity.getDeptCode()); + detailRequest.setInvCode(invProductEntity.getInvCode()); + List invProductDetailEntities = invProductDetailDao.filterInvProductDetailList(detailRequest); + //提取去重后的码集合 + List codeList = invProductDetailEntities.stream().map(InvProductDetailEntity::getCode).distinct().collect(Collectors.toList()); + //初始化码数量计算集合数据 + Map codeMap = new HashMap<>(codeList.size()); + codeList.forEach(code -> codeMap.put(code, 0)); + //计算当前在库存中的码明细 + for (InvProductDetailEntity invProductDetailEntity : invProductDetailEntities) { + UdiEntity udi = FilterUdiUtils.getUdi(invProductDetailEntity.getCode()); + if (StrUtil.isNotBlank(udi.getSerialNo())) { + //有序列号产品,根据产品数量计算即可 + Integer count = codeMap.get(invProductDetailEntity.getCode()); + if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_OUT)) { + //出库 + count = count - 1; + } else { + //入库 + count = count + 1; + } + codeMap.put(invProductDetailEntity.getCode(), count); + } else { + //无序列号产品条码,直接查询库存,使用此库存信息计算出养护数量 + int count = invProductEntity.getInCount() - invProductEntity.getOutCount(); + codeMap.put(invProductDetailEntity.getCode(), count); + } + } + + //根据库存中的码明细,生成库存养护记录详情 + for (String code : codeMap.keySet()) { + if (codeMap.get(code) > 0) { + //获取库存详情 + InvProductDetailEntity invProductDetailEntity = null; + for (InvProductDetailEntity detailEntity : invProductDetailEntities) { + if (detailEntity.getCode().equals(code)) { + invProductDetailEntity = detailEntity; + break; + } + } + //生成库存养护记录详情 + InvMAOrderDetailEntity maOrderDetail = new InvMAOrderDetailEntity(); + maOrderDetail.setOrderIdFk(addMAOrderDetailRequest.getOrderIdFk()); + maOrderDetail.setCode(invProductDetailEntity.getCode()); + maOrderDetail.setRelId(invProductDetailEntity.getRelId()); + UdiEntity udi = FilterUdiUtils.getUdi(invProductDetailEntity.getCode()); + maOrderDetail.setNameCode(udi.getUdi()); + maOrderDetail.setProductionDate(udi.getProduceDate()); + maOrderDetail.setExpireDate(udi.getExpireDate()); + maOrderDetail.setBatchNo(udi.getBatchNo()); + maOrderDetail.setCount(codeMap.get(code)); + maOrderDetail.setMaStatus(0); + maOrderDetail.setDeviceStatus(1); + maOrderDetail.setCreateTime(new Date()); + if (null != invMAExplanationEntity) { + maOrderDetail.setRemark(invMAExplanationEntity.getText()); + } + invMAOrderDetailDao.insert(maOrderDetail); + } + } + }); + return ResultVOUtils.success("添加成功"); } @Override public BaseResponse update(InvMAOrderDetailEntity invMAOrderDetailEntity) { - return null; + invMAOrderDetailEntity.setUpdateTime(new Date()); + invMAOrderDetailDao.updateById(invMAOrderDetailEntity); + return ResultVOUtils.success("更新成功!"); } } diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvMAOrderServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvMAOrderServiceImpl.java index 19367f447..80d904aa5 100644 --- a/src/main/java/com/glxp/api/service/inv/impl/InvMAOrderServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inv/impl/InvMAOrderServiceImpl.java @@ -1,14 +1,30 @@ package com.glxp.api.service.inv.impl; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.github.pagehelper.PageHelper; +import com.glxp.api.common.enums.ResultEnum; import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.constant.Constant; +import com.glxp.api.dao.inv.InvMAOrderDao; +import com.glxp.api.dao.inv.InvMAOrderDetailDao; +import com.glxp.api.entity.inv.InvMAOrderDetailEntity; import com.glxp.api.entity.inv.InvMAOrderEntity; import com.glxp.api.req.inv.FilterInvMAOrderRequest; import com.glxp.api.res.inv.InvMAOrderResponse; +import com.glxp.api.service.auth.CustomerService; import com.glxp.api.service.inv.InvMAOrderService; +import com.glxp.api.util.GennerOrderUtils; +import com.glxp.api.util.OrderNoTypeBean; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.util.Collections; +import java.util.Date; import java.util.List; @Slf4j @@ -16,35 +32,101 @@ import java.util.List; @Transactional(rollbackFor = Exception.class) public class InvMAOrderServiceImpl implements InvMAOrderService { - + @Resource + private GennerOrderUtils gennerOrderUtils; + @Resource + private CustomerService customerService; + @Resource + private InvMAOrderDao invMAOrderDao; + @Resource + private InvMAOrderDetailDao invMAOrderDetailDao; @Override public List filterList(FilterInvMAOrderRequest filterInvMAOrderRequest) { - return null; + if (null == filterInvMAOrderRequest) { + return Collections.emptyList(); + } + if (null != filterInvMAOrderRequest.getPage() && null != filterInvMAOrderRequest.getLimit()) { + PageHelper.offsetPage((filterInvMAOrderRequest.getPage() - 1) * filterInvMAOrderRequest.getLimit(), filterInvMAOrderRequest.getLimit()); + } + return invMAOrderDao.filterList(filterInvMAOrderRequest); } @Override public BaseResponse addOrder(InvMAOrderEntity invMAOrderEntity) { - return null; + if (null == invMAOrderEntity || StrUtil.isBlank(invMAOrderEntity.getInvCode())) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "参数不能为空!"); + } + //生成养护记录 + //生成单据号 + invMAOrderEntity.setOrderId(gennerOrderUtils.createStOrderNo(new OrderNoTypeBean(Constant.MA_ORDER, "yyyyMMdd"))); + //创建时间 + invMAOrderEntity.setCreateTime(new Date()); + //创建人 + String createUser = customerService.getUserBean().getUserName(); + invMAOrderEntity.setCreateUser(createUser); + //设置状态为草稿 + invMAOrderEntity.setStatus(0); + invMAOrderDao.insert(invMAOrderEntity); + return ResultVOUtils.success(invMAOrderEntity); } @Override public BaseResponse update(InvMAOrderEntity invMAOrderEntity) { - return null; + //查找此单据是否存在 + InvMAOrderEntity maintenanceOrder = invMAOrderDao.selectOne(new QueryWrapper().eq("orderId", invMAOrderEntity.getOrderId())); + if (null == maintenanceOrder) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "此单据不存在!"); + } + //复制新数据 + BeanUtil.copyProperties(invMAOrderEntity, maintenanceOrder, "id", "createTime", "createUser"); + maintenanceOrder.setUpdateTime(new Date()); + invMAOrderDao.updateById(maintenanceOrder); + return ResultVOUtils.success("更新成功"); } @Override public BaseResponse submitAudit(Integer id) { - return null; + InvMAOrderEntity maOrder = invMAOrderDao.selectById(id); + if (null == maOrder) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "此记录不存在!"); + } + if (maOrder.getStatus() != 0) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "此记录已提交审核,请勿重复提交!"); + } + //查询此养护记录是否添加详情 + Long count = invMAOrderDetailDao.selectCount(new QueryWrapper().eq("orderIdFk", maOrder.getOrderId())); + if (count == 0) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "请添加养护产品!"); + } + maOrder.setStatus(1); + maOrder.setUpdateTime(new Date()); + invMAOrderDao.updateById(maOrder); + return ResultVOUtils.success("提交成功"); } @Override public BaseResponse updateStatus(Integer id, Integer status) { - return null; + InvMAOrderEntity maOrder = invMAOrderDao.selectById(id); + if (null == maOrder || maOrder.getStatus() != 1) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); + } + maOrder.setStatus(status); + maOrder.setAuditTime(new Date()); + maOrder.setUpdateTime(new Date()); + invMAOrderDao.updateById(maOrder); + return ResultVOUtils.success("更新成功"); } @Override public BaseResponse delete(Integer id) { - return null; + InvMAOrderEntity maOrder = invMAOrderDao.selectById(id); + if (null == maOrder) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "此记录不存在!"); + } + //删除养护记录和详情 + invMAOrderDao.deleteById(id); + invMAOrderDetailDao.delete(new QueryWrapper().eq("orderIdFk", maOrder.getOrderId())); + return ResultVOUtils.success("删除成功"); } } diff --git a/src/main/resources/mybatis/mapper/inv/InvMAExplanationDao.xml b/src/main/resources/mybatis/mapper/inv/InvMAExplanationDao.xml index 12a50b5f6..43dcfb8d6 100644 --- a/src/main/resources/mybatis/mapper/inv/InvMAExplanationDao.xml +++ b/src/main/resources/mybatis/mapper/inv/InvMAExplanationDao.xml @@ -1,5 +1,9 @@ - + \ No newline at end of file diff --git a/src/main/resources/mybatis/mapper/inv/InvMAOrderDao.xml b/src/main/resources/mybatis/mapper/inv/InvMAOrderDao.xml index 99c99cb44..fd3c74c9a 100644 --- a/src/main/resources/mybatis/mapper/inv/InvMAOrderDao.xml +++ b/src/main/resources/mybatis/mapper/inv/InvMAOrderDao.xml @@ -1,5 +1,43 @@ - + \ No newline at end of file diff --git a/src/main/resources/mybatis/mapper/inv/InvMAOrderDetailDao.xml b/src/main/resources/mybatis/mapper/inv/InvMAOrderDetailDao.xml index fc71e2e2a..45e89d80d 100644 --- a/src/main/resources/mybatis/mapper/inv/InvMAOrderDetailDao.xml +++ b/src/main/resources/mybatis/mapper/inv/InvMAOrderDetailDao.xml @@ -2,6 +2,44 @@ + \ No newline at end of file diff --git a/src/main/resources/mybatis/mapper/inv/invProductDetailDao.xml b/src/main/resources/mybatis/mapper/inv/invProductDetailDao.xml index a7756f6c1..42e9873b2 100644 --- a/src/main/resources/mybatis/mapper/inv/invProductDetailDao.xml +++ b/src/main/resources/mybatis/mapper/inv/invProductDetailDao.xml @@ -44,6 +44,12 @@ AND batchNo is null + + AND produceDate = #{productionDate} + + + AND expireDate = #{expireDate} + AND relId in