diff --git a/src/main/java/com/glxp/api/controller/inout/IoOrderMutiController.java b/src/main/java/com/glxp/api/controller/inout/IoOrderMutiController.java new file mode 100644 index 000000000..d45923d23 --- /dev/null +++ b/src/main/java/com/glxp/api/controller/inout/IoOrderMutiController.java @@ -0,0 +1,255 @@ +package com.glxp.api.controller.inout; + +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.github.pagehelper.PageInfo; +import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.constant.Constant; +import com.glxp.api.entity.basic.UdiEntity; +import com.glxp.api.entity.basic.UdiProductEntity; +import com.glxp.api.entity.inout.IoOrderMutiEntity; +import com.glxp.api.entity.inout.IoOrderMutiSetEntity; +import com.glxp.api.entity.inout.IoOrderMutiUseEntity; +import com.glxp.api.req.inout.IoOrderMutiRequest; +import com.glxp.api.res.inout.IoOrderMutiResponse; +import com.glxp.api.res.inout.IoOrderMutiSetResponse; +import com.glxp.api.service.auth.CustomerService; +import com.glxp.api.service.basic.UdiProductService; +import com.glxp.api.service.inout.IoOrderMutiService; +import com.glxp.api.service.inout.IoOrderMutiUseService; +import com.glxp.api.util.GennerOrderUtils; +import com.glxp.api.util.OrderNoTypeBean; +import com.glxp.api.util.RedisUtil; +import com.glxp.api.util.udi.FilterUdiUtils; +import org.springframework.beans.BeanUtils; +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.lang.reflect.InvocationTargetException; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@RestController +public class IoOrderMutiController { + + @Resource + private IoOrderMutiService ioOrderMutiService; + @Resource + private UdiProductService udiProductService; + @Resource + private IoOrderMutiUseService ioOrderMutiUseService; + @Resource + RedisUtil redisUtil; + @Resource + CustomerService customerService; + @Resource + GennerOrderUtils gennerOrderUtils; + + + @PostMapping("/udiwms/inout/order/muti/checkUdi") + public BaseResponse checkUdi(@RequestBody IoOrderMutiEntity ioOrderMutiEntity) { + + if (StrUtil.isNotBlank(ioOrderMutiEntity.getUdiCode())) { + //查询码是否包含序列号 + UdiEntity udiEntity = FilterUdiUtils.getUdi(ioOrderMutiEntity.getUdiCode()); + if (StrUtil.isNotBlank(udiEntity.getSerialNo())) { + //包含 + QueryWrapper ew = new QueryWrapper<>(); + ew.eq("udiCode", ioOrderMutiEntity.getUdiCode()); + IoOrderMutiEntity ioOrderMutiEntityOne = ioOrderMutiService.getOne(ew); + //查询是否被使用过 + if (ioOrderMutiEntityOne != null) { + if (ioOrderMutiEntityOne.getReCount() == 0) { + return ResultVOUtils.error(999, "该产品库存不足!"); + } + return ResultVOUtils.success(ioOrderMutiEntityOne.getId()); + } else { + //查询物资信息 + UdiProductEntity udiProductEntity = udiProductService.findByNameCode(udiEntity.getUdi()); + ioOrderMutiEntityOne = new IoOrderMutiEntity(); + ioOrderMutiEntityOne.setId(IdUtil.getSnowflakeNextId()); + ioOrderMutiEntityOne.setUdiCode(ioOrderMutiEntity.getUdiCode()); + ioOrderMutiEntityOne.setBatchNo(udiProductEntity.getBatchNo()); + ioOrderMutiEntityOne.setExpireDate(udiProductEntity.getExpireDate()); + ioOrderMutiEntityOne.setProduceDate(udiProductEntity.getProduceDate()); + ioOrderMutiEntityOne.setTotalCount(20); + ioOrderMutiEntityOne.setStatus(0); + ioOrderMutiEntityOne.setCreateUser(customerService.getUserId() + ""); + ioOrderMutiEntityOne.setUseCount(0); + ioOrderMutiEntityOne.setReCount(20); + ioOrderMutiEntityOne.setCreateTime(new Date()); + ioOrderMutiEntityOne.setUpdateTime(new Date()); + ioOrderMutiEntityOne.setNameCode(udiProductEntity.getNameCode()); + ioOrderMutiEntityOne.setSerialNo(udiProductEntity.getSerialNo()); + ioOrderMutiEntityOne.setSupId(udiProductEntity.getSupId()); + ioOrderMutiService.save(ioOrderMutiEntityOne); + return ResultVOUtils.success(ioOrderMutiEntityOne.getId()); + } + } else { + //不包含 + return ResultVOUtils.error(888, ""); + } + } else { + return ResultVOUtils.error(999, "请选填写UDI码!"); + } + } + + + @GetMapping("/udiwms/inout/order/muti/filterMutiList") + public BaseResponse filterMutiList(IoOrderMutiEntity ioOrderMutiEntity) { + + ioOrderMutiEntity = ioOrderMutiService.getById(ioOrderMutiEntity.getId()); + UdiProductEntity udiProductEntity = udiProductService.findByNameCode(ioOrderMutiEntity.getNameCode()); + IoOrderMutiResponse ioOrderMutiResponse = new IoOrderMutiResponse(); + BeanUtils.copyProperties(ioOrderMutiEntity, ioOrderMutiResponse); + ioOrderMutiResponse.setCpmctymc(udiProductEntity.getCpmctymc()); + ioOrderMutiResponse.setGgxh(udiProductEntity.getGgxh()); + QueryWrapper ew = new QueryWrapper<>(); + ew.eq("mutiIdFk", ioOrderMutiEntity.getId()); + ew.select("io_order_muti_use.*,(SELECT userName FROM auth_user WHERE auth_user.id=io_order_muti_use.useUser) as createUserName"); + List ioOrderMutiUseEntityList = ioOrderMutiUseService.list(ew); + Map map = new HashMap<>(); + map.put("data", ioOrderMutiResponse); + map.put("detailList", ioOrderMutiUseEntityList); + return ResultVOUtils.success(map); + + } + + + @PostMapping("/udiwms/inout/order/muti/addOrderMuti") + public BaseResponse addOrderMuti(@RequestBody IoOrderMutiEntity ioOrderMutiEntity) { + + if (StrUtil.isNotBlank(ioOrderMutiEntity.getUdiCode())) { + UdiEntity udiEntity = FilterUdiUtils.getUdi(ioOrderMutiEntity.getUdiCode()); + //查询物资信息 + UdiProductEntity udiProductEntity = udiProductService.findByNameCode(udiEntity.getUdi()); + + IoOrderMutiEntity ioOrderMutiEntity1 = new IoOrderMutiEntity(); + ioOrderMutiEntity1.setId(IdUtil.getSnowflakeNextId()); + ioOrderMutiEntity1.setUdiCode(ioOrderMutiEntity.getUdiCode()); + ioOrderMutiEntity1.setBatchNo(udiProductEntity.getBatchNo()); + ioOrderMutiEntity1.setExpireDate(udiProductEntity.getExpireDate()); + ioOrderMutiEntity1.setProduceDate(udiProductEntity.getProduceDate()); + ioOrderMutiEntity1.setTotalCount(20); + ioOrderMutiEntity1.setStatus(0); + ioOrderMutiEntity1.setUseCount(0); + ioOrderMutiEntity1.setReCount(20); + ioOrderMutiEntity1.setCreateUser(customerService.getUserId() + ""); + ioOrderMutiEntity1.setCreateTime(new Date()); + ioOrderMutiEntity1.setUpdateTime(new Date()); + ioOrderMutiEntity1.setNameCode(udiProductEntity.getNameCode()); + ioOrderMutiEntity1.setSerialNo(udiProductEntity.getSerialNo()); + ioOrderMutiEntity1.setSupId(udiProductEntity.getSupId()); + ioOrderMutiService.save(ioOrderMutiEntity1); + return ResultVOUtils.success(ioOrderMutiEntity1.getId()); + } else { + return ResultVOUtils.error(999, "请选填写UDI码!"); + } + } + + @PostMapping("/udiwms/inout/order/muti/updateOrderMuti") + public BaseResponse updateOrderMuti(@RequestBody IoOrderMutiEntity ioOrderMutiEntity) { + ioOrderMutiEntity.setReCount(ioOrderMutiEntity.getTotalCount() - ioOrderMutiEntity.getUseCount()); + ioOrderMutiEntity.setCreateTime(new Date()); + ioOrderMutiEntity.setCreateUser(customerService.getUserId() + ""); + ioOrderMutiEntity.setUpdateTime(new Date()); + ioOrderMutiEntity.setUpdateUser(customerService.getUserId() + ""); + boolean falg = ioOrderMutiService.updateById(ioOrderMutiEntity); + + + QueryWrapper ew = new QueryWrapper<>(); + ew.eq("mutiIdFk", ioOrderMutiEntity.getId()); + List ioOrderMutiUseEntityList = ioOrderMutiUseService.list(ew); + for (IoOrderMutiUseEntity ioOrderMutiUseEntity : ioOrderMutiUseEntityList) { + ioOrderMutiUseEntity.setStatus(1); + } + ioOrderMutiUseService.updateBatchById(ioOrderMutiUseEntityList); + + if (falg) { + return ResultVOUtils.success(); + } else { + return ResultVOUtils.error(999, "更新失败"); + } + } + + + @PostMapping("/udiwms/inout/order/muti/filterMutiDetailList") + public BaseResponse filterMutiDetailList(@RequestBody IoOrderMutiRequest ioOrderMutiRequest) { + + ioOrderMutiRequest.setStatus(0); + List ioOrderMutiEntityList = ioOrderMutiService.filterList(ioOrderMutiRequest); + return ResultVOUtils.success(ioOrderMutiEntityList); + } + + @PostMapping("/udiwms/inout/order/muti/selectMutiDetailList") + public BaseResponse selectMutiDetailList(@RequestBody IoOrderMutiUseEntity ioOrderMutiUseEntity) { + + QueryWrapper ew = new QueryWrapper<>(); + ew.eq("mutiIdFk", ioOrderMutiUseEntity.getMutiIdFk()); + ew.select("io_order_muti_use.*,(SELECT userName FROM auth_user WHERE auth_user.id=io_order_muti_use.useUser) as createUserName"); + List ioOrderMutiEntityList = ioOrderMutiUseService.list(ew); + return ResultVOUtils.success(ioOrderMutiEntityList); + } + + + @PostMapping("/udiwms/inout/order/muti/selectMutiList") + public BaseResponse selectMutiList(@RequestBody IoOrderMutiRequest ioOrderMutiRequest) { + List list = ioOrderMutiService.filterList(ioOrderMutiRequest); + PageInfo pageInfo = new PageInfo<>(list); + return ResultVOUtils.page(pageInfo); + } + + + @PostMapping("/udiwms/inout/order/muti/addMutiDetail") + public BaseResponse addMutiDetail(@RequestBody IoOrderMutiUseEntity ioOrderMutiUseEntity) { + int sum = 0; + QueryWrapper ew = new QueryWrapper<>(); + ew.eq("mutiIdFk", ioOrderMutiUseEntity.getMutiIdFk()); + Long count = ioOrderMutiUseService.count(ew); + if (count == null) { + sum = 0; + } else { + sum = count.intValue(); + } + IoOrderMutiEntity ioOrderMutiEntity = ioOrderMutiService.getById(ioOrderMutiUseEntity.getMutiIdFk()); + if (ioOrderMutiEntity.getTotalCount() - count == 0) { + return ResultVOUtils.error(999, "该产品数量不足!"); + } + ioOrderMutiUseEntity.setId(IdUtil.getSnowflakeNextId()); + ioOrderMutiUseEntity.setCurIndex(sum + 1); + ioOrderMutiUseEntity.setUseUser(customerService.getUserId() + ""); + ioOrderMutiUseEntity.setUseTime(new Date()); + ioOrderMutiUseService.save(ioOrderMutiUseEntity); + return ResultVOUtils.success(); + } + + @GetMapping("/udiwms/inout/order/muti/getMark") + public BaseResponse getMark() { + String recordId = gennerOrderUtils.createOrderMark(new OrderNoTypeBean("yyMMdd")); + return ResultVOUtils.success(recordId); + } + + @PostMapping("/udiwms/inout/order/muti/delectMutiDelect") + public BaseResponse delectMutiDelect(@RequestBody IoOrderMutiUseEntity ioOrderMutiUseEntity) { + ioOrderMutiUseService.removeById(ioOrderMutiUseEntity); + return ResultVOUtils.success(); + } + + @PostMapping("/udiwms/inout/order/muti/delectMuti") + public BaseResponse delectMuti(@RequestBody IoOrderMutiEntity ioOrderMutiEntity) { + + Boolean falg=ioOrderMutiService.removeById(ioOrderMutiEntity); + if(falg){ + return ResultVOUtils.success(); + }else{ + return ResultVOUtils.error(999,"删除失败"); + } + } +} diff --git a/src/main/java/com/glxp/api/dao/inout/IoOrderMutiMapper.java b/src/main/java/com/glxp/api/dao/inout/IoOrderMutiMapper.java index 1aacd097c..26b4d0891 100644 --- a/src/main/java/com/glxp/api/dao/inout/IoOrderMutiMapper.java +++ b/src/main/java/com/glxp/api/dao/inout/IoOrderMutiMapper.java @@ -2,8 +2,14 @@ package com.glxp.api.dao.inout; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.glxp.api.entity.inout.IoOrderMutiEntity; +import com.glxp.api.req.inout.IoOrderMutiRequest; +import com.glxp.api.res.inout.IoOrderMutiResponse; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + @Mapper public interface IoOrderMutiMapper extends BaseMapper { + + List filterList(IoOrderMutiRequest ioOrderMutiRequest); } diff --git a/src/main/java/com/glxp/api/entity/inout/IoOrderMutiEntity.java b/src/main/java/com/glxp/api/entity/inout/IoOrderMutiEntity.java index 6c6671b58..0792e6ee0 100644 --- a/src/main/java/com/glxp/api/entity/inout/IoOrderMutiEntity.java +++ b/src/main/java/com/glxp/api/entity/inout/IoOrderMutiEntity.java @@ -136,4 +136,10 @@ public class IoOrderMutiEntity { @TableField(value = "auditTime") private Date auditTime; + /** + * 状态0未提交1已提交 + */ + @TableField(value = "status") + private Integer status; + } diff --git a/src/main/java/com/glxp/api/entity/inout/IoOrderMutiUseEntity.java b/src/main/java/com/glxp/api/entity/inout/IoOrderMutiUseEntity.java index 9a918cf97..806bd3a48 100644 --- a/src/main/java/com/glxp/api/entity/inout/IoOrderMutiUseEntity.java +++ b/src/main/java/com/glxp/api/entity/inout/IoOrderMutiUseEntity.java @@ -57,4 +57,11 @@ public class IoOrderMutiUseEntity { */ @TableField(value = "remark") private String remark; + + + @TableField(value = "status") + private Integer status; + + @TableField(exist=false) + private String createUserName; } diff --git a/src/main/java/com/glxp/api/req/inout/IoOrderMutiRequest.java b/src/main/java/com/glxp/api/req/inout/IoOrderMutiRequest.java new file mode 100644 index 000000000..f88c66b11 --- /dev/null +++ b/src/main/java/com/glxp/api/req/inout/IoOrderMutiRequest.java @@ -0,0 +1,37 @@ +package com.glxp.api.req.inout; + +import com.glxp.api.util.page.ListPageRequest; +import lombok.Data; + +import java.util.Date; + +@Data +public class IoOrderMutiRequest extends ListPageRequest { + + private Long id; + private String orderIdFk; + private String udiCode; + private String relIdFk; + private String mark; + private Integer totalCount; + private Integer useCount; + private Integer reCount; + private Date createTime; + private Date updateTime; + private String createUser; + private String updateUser; + private String reamrk; + private String nameCode; + private String batchNo; + private String produceDate; + private String expireDate; + private String serialNo; + private String supId; + private String auditUser; + private Date auditTime; + private String cpmctymc; + private String ggxh; + private Integer status; + private String createUserName; + +} diff --git a/src/main/java/com/glxp/api/res/inout/IoOrderMutiResponse.java b/src/main/java/com/glxp/api/res/inout/IoOrderMutiResponse.java new file mode 100644 index 000000000..c312a9810 --- /dev/null +++ b/src/main/java/com/glxp/api/res/inout/IoOrderMutiResponse.java @@ -0,0 +1,40 @@ +package com.glxp.api.res.inout; + + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.util.Date; + +@Data +public class IoOrderMutiResponse { + + private Long id; + private String orderIdFk; + private String udiCode; + private String relIdFk; + private String mark; + private Integer totalCount; + private Integer useCount; + private Integer reCount; + private Date createTime; + private Date updateTime; + private String createUser; + private String updateUser; + private String reamrk; + private String nameCode; + private String batchNo; + private String produceDate; + private String expireDate; + private String serialNo; + private String supId; + private String auditUser; + private Date auditTime; + private String cpmctymc; + private String ggxh; + private Integer status; + private String createUserName; + +} diff --git a/src/main/java/com/glxp/api/service/inout/IoOrderMutiService.java b/src/main/java/com/glxp/api/service/inout/IoOrderMutiService.java index 88d0df842..fa5654d71 100644 --- a/src/main/java/com/glxp/api/service/inout/IoOrderMutiService.java +++ b/src/main/java/com/glxp/api/service/inout/IoOrderMutiService.java @@ -2,7 +2,13 @@ package com.glxp.api.service.inout; import com.glxp.api.entity.inout.IoOrderMutiEntity; import com.baomidou.mybatisplus.extension.service.IService; +import com.glxp.api.req.inout.IoOrderMutiRequest; +import com.glxp.api.res.inout.IoOrderMutiResponse; + +import java.util.List; + public interface IoOrderMutiService extends IService{ + List filterList(IoOrderMutiRequest ioOrderMutiRequest); } diff --git a/src/main/java/com/glxp/api/service/inout/IoOrderMutiUseService.java b/src/main/java/com/glxp/api/service/inout/IoOrderMutiUseService.java index f6a00c550..f5306d6aa 100644 --- a/src/main/java/com/glxp/api/service/inout/IoOrderMutiUseService.java +++ b/src/main/java/com/glxp/api/service/inout/IoOrderMutiUseService.java @@ -5,4 +5,5 @@ import com.baomidou.mybatisplus.extension.service.IService; public interface IoOrderMutiUseService extends IService{ + } diff --git a/src/main/java/com/glxp/api/service/inout/impl/IoOrderMutiServiceImpl.java b/src/main/java/com/glxp/api/service/inout/impl/IoOrderMutiServiceImpl.java index 41e3b338d..53a90a7dc 100644 --- a/src/main/java/com/glxp/api/service/inout/impl/IoOrderMutiServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inout/impl/IoOrderMutiServiceImpl.java @@ -1,11 +1,35 @@ package com.glxp.api.service.inout.impl; +import com.github.pagehelper.PageHelper; +import com.glxp.api.req.inout.IoOrderMutiRequest; +import com.glxp.api.res.inout.IoOrderMutiResponse; +import com.glxp.api.res.inout.IoOrderMutiSetResponse; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.glxp.api.entity.inout.IoOrderMutiEntity; import com.glxp.api.dao.inout.IoOrderMutiMapper; import com.glxp.api.service.inout.IoOrderMutiService; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.List; + @Service public class IoOrderMutiServiceImpl extends ServiceImpl implements IoOrderMutiService{ + @Resource + private IoOrderMutiMapper ioOrderMutiMapper; + + @Override + public List filterList(IoOrderMutiRequest ioOrderMutiRequest) { + if (ioOrderMutiRequest == null) { + return Collections.emptyList(); + } + if (ioOrderMutiRequest.getPage() != null) { + int offset = (ioOrderMutiRequest.getPage() - 1) * ioOrderMutiRequest.getLimit(); + PageHelper.offsetPage(offset, ioOrderMutiRequest.getLimit()); + } + List ioOrderMutiEntityList=ioOrderMutiMapper.filterList(ioOrderMutiRequest); + return ioOrderMutiEntityList; + } } diff --git a/src/main/java/com/glxp/api/util/GennerOrderUtils.java b/src/main/java/com/glxp/api/util/GennerOrderUtils.java index b2f884b1c..59f629183 100644 --- a/src/main/java/com/glxp/api/util/GennerOrderUtils.java +++ b/src/main/java/com/glxp/api/util/GennerOrderUtils.java @@ -253,4 +253,29 @@ public class GennerOrderUtils { return completionRandom(serialWithPrefix, orderNoTypeEnum); } + /** + * 生成多次出库记录号 + * + * @param orderNoTypeEnum + * @return + */ + public String createOrderMark(OrderNoTypeBean orderNoTypeEnum) { + //获得单号前缀 + //格式 固定前缀 +时间前缀 示例 + String formNoPrefix = getFormNoPrefix(orderNoTypeEnum); + //获得缓存key + String cacheKey = getStatCacheKey(formNoPrefix); + //获得当日自增数 + Long incrementalSerial = redisUtil.incr(cacheKey, 1); + // 设置key过期时间, 保证每天的流水号从1开始 + if (incrementalSerial == 1) { + //设置失效时间 凌晨过期 + redisUtil.expire(cacheKey, getSecondsNextEarlyMorning()); + } + //组合单号并补全流水号 + String serialWithPrefix = completionSerial(formNoPrefix, incrementalSerial, orderNoTypeEnum); + //补全随机数 + return completionRandom(serialWithPrefix, orderNoTypeEnum); + } + } diff --git a/src/main/java/com/glxp/api/util/OrderNoTypeBean.java b/src/main/java/com/glxp/api/util/OrderNoTypeBean.java index 84faf0f6b..f071b28f2 100644 --- a/src/main/java/com/glxp/api/util/OrderNoTypeBean.java +++ b/src/main/java/com/glxp/api/util/OrderNoTypeBean.java @@ -42,4 +42,13 @@ public class OrderNoTypeBean { this.randomLength = 0; this.totalLength = 5; } + + public OrderNoTypeBean(String datePattern) { + this.prefix = ""; + this.datePattern = datePattern; + this.serialLength = 3; + this.randomLength = 0; + this.totalLength = 3; + } + } diff --git a/src/main/resources/mybatis/mapper/inout/IoOrderMutiMapper.xml b/src/main/resources/mybatis/mapper/inout/IoOrderMutiMapper.xml index 14af1d94e..b4b9f4d9a 100644 --- a/src/main/resources/mybatis/mapper/inout/IoOrderMutiMapper.xml +++ b/src/main/resources/mybatis/mapper/inout/IoOrderMutiMapper.xml @@ -1,4 +1,37 @@ + + +