diff --git a/src/main/java/com/glxp/api/controller/inout/IoSplitFifoController.java b/src/main/java/com/glxp/api/controller/inout/IoSplitFifoController.java new file mode 100644 index 000000000..a33a3f566 --- /dev/null +++ b/src/main/java/com/glxp/api/controller/inout/IoSplitFifoController.java @@ -0,0 +1,50 @@ +package com.glxp.api.controller.inout; + +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.controller.BaseController; +import com.glxp.api.req.inout.IoSplitFifoCodeRequest; +import com.glxp.api.res.PageSimpleResponse; +import com.glxp.api.res.inout.IoSplitCodeResponse; +import com.glxp.api.service.inout.IoSplitFifoCodeService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 科室拆零队列(先进先出) + */ +@Slf4j +@RestController +public class IoSplitFifoController extends BaseController { + + + @Resource + IoSplitFifoCodeService splitFifoCodeService; + + /** + * 队列分组查询 + * + * @return + */ + @GetMapping("/udiwms/ioSplit/material/code/filter") + public BaseResponse filterGroupBy(IoSplitFifoCodeRequest splitFifoCodeRequest, + BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); + } + List splitCodeEntities = splitFifoCodeService.filterList(splitFifoCodeRequest); + PageInfo pageInfo = new PageInfo<>(splitCodeEntities); + PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); + pageSimpleResponse.setTotal(pageInfo.getTotal()); + pageSimpleResponse.setList(splitCodeEntities); + return ResultVOUtils.success(pageSimpleResponse); + } + +} diff --git a/src/main/java/com/glxp/api/dao/inout/IoSplitFifoCodeMapper.java b/src/main/java/com/glxp/api/dao/inout/IoSplitFifoCodeMapper.java new file mode 100644 index 000000000..a5a2958bb --- /dev/null +++ b/src/main/java/com/glxp/api/dao/inout/IoSplitFifoCodeMapper.java @@ -0,0 +1,18 @@ +package com.glxp.api.dao.inout; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.glxp.api.entity.inout.IoSplitCodeEntity; +import com.glxp.api.entity.inout.IoSplitFifoCodeEntity; +import com.glxp.api.req.inout.IoSplitCodeRequest; +import com.glxp.api.req.inout.IoSplitFifoCodeRequest; +import com.glxp.api.res.inout.IoSplitCodeResponse; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface IoSplitFifoCodeMapper extends BaseMapper { + + List filterList(IoSplitFifoCodeRequest splitFifoCodeRequest); + +} diff --git a/src/main/java/com/glxp/api/entity/inout/IoSplitFifoCodeEntity.java b/src/main/java/com/glxp/api/entity/inout/IoSplitFifoCodeEntity.java new file mode 100644 index 000000000..bedb608b3 --- /dev/null +++ b/src/main/java/com/glxp/api/entity/inout/IoSplitFifoCodeEntity.java @@ -0,0 +1,193 @@ +package com.glxp.api.entity.inout; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + +/** + * 预出库队列 + */ +@ApiModel(value="com-glxp-api-entity-inout-IoSplitFifoCode") +@Data +@TableName(value = "io_split_fifo_code") +public class IoSplitFifoCodeEntity implements Serializable { + @TableId(value = "id", type = IdType.INPUT) + @ApiModelProperty(value="") + private Integer id; + + /** + * UDI码/药品追溯码 + */ + @TableField(value = "code") + @ApiModelProperty(value="UDI码/药品追溯码") + private String code; + + /** + * 缺少GS1标识UDI码 + */ + @TableField(value = "errUdiCode") + @ApiModelProperty(value="缺少GS1标识UDI码") + private String errUdiCode; + + /** + * 所属出库单号 + */ + @TableField(value = "orderId") + @ApiModelProperty(value="所属出库单号") + private String orderId; + + /** + * 单据类型 + */ + @TableField(value = "`action`") + @ApiModelProperty(value="单据类型") + private String action; + + /** + * 物资字典主键 + */ + @TableField(value = "relId") + @ApiModelProperty(value="物资字典主键") + private Long relId; + + /** + * 最小销售产品标识 + */ + @TableField(value = "nameCode") + @ApiModelProperty(value="最小销售产品标识") + private String nameCode; + + /** + * 批次号 + */ + @TableField(value = "batchNo") + @ApiModelProperty(value="批次号") + private String batchNo; + + /** + * 生产日期 + */ + @TableField(value = "produceDate") + @ApiModelProperty(value="生产日期") + private String produceDate; + + /** + * 失效日期 + */ + @TableField(value = "expireDate") + @ApiModelProperty(value="失效日期") + private String expireDate; + + /** + * 序列号 + */ + @TableField(value = "serialNo") + @ApiModelProperty(value="序列号") + private String serialNo; + + /** + * 供应商ID + */ + @TableField(value = "supId") + @ApiModelProperty(value="供应商ID") + private Long supId; + + /** + * 部门编码 + */ + @TableField(value = "deptCode") + @ApiModelProperty(value="部门编码") + private String deptCode; + + /** + * 仓库编码 + */ + @TableField(value = "invCode") + @ApiModelProperty(value="仓库编码") + private String invCode; + + /** + * 货位编码 + */ + @TableField(value = "warehouseCode") + @ApiModelProperty(value="货位编码") + private String warehouseCode; + + /** + * 工位 + */ + @TableField(value = "workPlaceCode") + @ApiModelProperty(value="工位") + private String workPlaceCode; + + /** + * 1:耗材;2:药品 + */ + @TableField(value = "productType") + @ApiModelProperty(value="1:耗材;2:药品") + private Byte productType; + + /** + * 1:手动扫码拆包;2.自动拆包 + */ + @TableField(value = "splitType") + @ApiModelProperty(value="1:手动扫码拆包;2.自动拆包") + private Byte splitType; + + /** + * 扫码数量 + */ + @TableField(value = "scanCount") + @ApiModelProperty(value="扫码数量") + private Integer scanCount; + + /** + * 总数量 + */ + @TableField(value = "totalCount") + @ApiModelProperty(value="总数量") + private Integer totalCount; + + /** + * 内部批号 + */ + @TableField(value = "inBactchNo") + @ApiModelProperty(value="内部批号") + private String inBactchNo; + + /** + * 创建日期 + */ + @TableField(value = "createTime") + @ApiModelProperty(value="创建日期") + private Date createTime; + + /** + * 创建人 + */ + @TableField(value = "`createUser`") + @ApiModelProperty(value="创建人") + private String createUser; + + /** + * 更新日期 + */ + @TableField(value = "updateTime") + @ApiModelProperty(value="更新日期") + private Date updateTime; + + /** + * 备注 + */ + @TableField(value = "remark") + @ApiModelProperty(value="备注") + private String remark; + + private static final long serialVersionUID = 1L; +} diff --git a/src/main/java/com/glxp/api/req/inout/IoSplitFifoCodeRequest.java b/src/main/java/com/glxp/api/req/inout/IoSplitFifoCodeRequest.java new file mode 100644 index 000000000..7da41148e --- /dev/null +++ b/src/main/java/com/glxp/api/req/inout/IoSplitFifoCodeRequest.java @@ -0,0 +1,133 @@ +package com.glxp.api.req.inout; + +import com.glxp.api.util.page.ListPageRequest; +import lombok.Data; + +import java.util.Date; + +@Data +public class IoSplitFifoCodeRequest extends ListPageRequest { + + + private Integer id; + + /** + * UDI码/药品追溯码 + */ + private String code; + + /** + * 缺少GS1标识UDI码 + */ + private String errUdiCode; + + /** + * 所属出库单号 + */ + private String orderId; + + /** + * 单据类型 + */ + private String action; + + /** + * 物资字典主键 + */ + private Long relId; + + /** + * 最小销售产品标识 + */ + private String nameCode; + + /** + * 批次号 + */ + private String batchNo; + + /** + * 生产日期 + */ + private String produceDate; + + /** + * 失效日期 + */ + private String expireDate; + + /** + * 序列号 + */ + private String serialNo; + + /** + * 供应商ID + */ + private Long supId; + + /** + * 部门编码 + */ + private String deptCode; + + /** + * 仓库编码 + */ + private String invCode; + + /** + * 货位编码 + */ + private String warehouseCode; + + /** + * 工位 + */ + private String workPlaceCode; + + /** + * 1:耗材;2:药品 + */ + private Integer productType; + + /** + * 1:手动扫码拆包;2.自动拆包 + */ + private Integer splitType; + + /** + * 扫码数量 + */ + private Integer scanCount; + + /** + * 总数量 + */ + private Integer totalCount; + + /** + * 内部批号 + */ + private String inBactchNo; + + /** + * 创建日期 + */ + private Date createTime; + + /** + * 创建人 + */ + private String createUser; + + /** + * 更新日期 + */ + private Date updateTime; + + /** + * 备注 + */ + private String remark; +} diff --git a/src/main/java/com/glxp/api/res/inout/IoSplitCodeResponse.java b/src/main/java/com/glxp/api/res/inout/IoSplitCodeResponse.java new file mode 100644 index 000000000..953a1be66 --- /dev/null +++ b/src/main/java/com/glxp/api/res/inout/IoSplitCodeResponse.java @@ -0,0 +1,135 @@ +package com.glxp.api.res.inout; + +import lombok.Data; + +import java.util.Date; + +@Data +public class IoSplitCodeResponse { + + + private Integer id; + + /** + * UDI码/药品追溯码 + */ + private String code; + + /** + * 缺少GS1标识UDI码 + */ + private String errUdiCode; + + /** + * 所属出库单号 + */ + private String orderId; + + /** + * 单据类型 + */ + private String action; + + /** + * 物资字典主键 + */ + private Long relId; + + /** + * 最小销售产品标识 + */ + private String nameCode; + + /** + * 批次号 + */ + private String batchNo; + + /** + * 生产日期 + */ + private String produceDate; + + /** + * 失效日期 + */ + private String expireDate; + + /** + * 序列号 + */ + private String serialNo; + + /** + * 供应商ID + */ + private Long supId; + + /** + * 部门编码 + */ + private String deptCode; + + /** + * 仓库编码 + */ + private String invCode; + + /** + * 货位编码 + */ + private String warehouseCode; + + /** + * 工位 + */ + private String workPlaceCode; + + /** + * 1:耗材;2:药品 + */ + private Integer productType; + + /** + * 1:手动扫码拆包;2.自动拆包 + */ + private Integer splitType; + + /** + * 扫码数量 + */ + private Integer scanCount; + + /** + * 总数量 + */ + private Integer totalCount; + + /** + * 内部批号 + */ + private String inBactchNo; + + /** + * 创建日期 + */ + private Date createTime; + + /** + * 创建人 + */ + private String createUser; + + /** + * 更新日期 + */ + private Date updateTime; + + /** + * 备注 + */ + private String remark; + + private Integer groupCount; + +} diff --git a/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java b/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java index 9d33be8ed..2111522aa 100644 --- a/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java +++ b/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java @@ -1,31 +1,29 @@ package com.glxp.api.service.inout; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.glxp.api.dao.inout.IoOrderDetailCodeDao; -import com.glxp.api.entity.basic.BasicSkPrescribeDiEntity; -import com.glxp.api.res.basic.BasicSkPrescribeDiResponse; -import com.glxp.api.service.BasicSkPrescribeDiService; -import com.glxp.api.service.inout.impl.IoCodeService; -import org.springframework.beans.BeanUtils; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.glxp.api.constant.Constant; import com.glxp.api.constant.ConstantStatus; import com.glxp.api.constant.ConstantType; +import com.glxp.api.dao.inout.IoOrderDetailCodeDao; import com.glxp.api.entity.auth.InvWarehouseEntity; import com.glxp.api.entity.basic.BasicBussinessTypeEntity; +import com.glxp.api.entity.basic.BasicSkPrescribeDiEntity; import com.glxp.api.entity.basic.UdiEntity; import com.glxp.api.entity.inout.*; import com.glxp.api.entity.inv.InvPreInProductDetailEntity; -import com.glxp.api.req.inout.OrderEditRequest; import com.glxp.api.entity.system.SystemParamConfigEntity; +import com.glxp.api.req.inout.OrderEditRequest; +import com.glxp.api.res.basic.BasicSkPrescribeDiResponse; import com.glxp.api.res.inout.IoOrderCheckResultResponse; import com.glxp.api.res.inout.IoOrderDetailBizResponse; import com.glxp.api.res.inout.IoOrderDetailCodeResponse; +import com.glxp.api.service.BasicSkPrescribeDiService; import com.glxp.api.service.auth.InvWarehouseService; import com.glxp.api.service.basic.IBasicBussinessTypeService; -import com.glxp.api.service.inv.InvPreinDetailService; +import com.glxp.api.service.inout.impl.IoCodeService; import com.glxp.api.service.inv.InvPreinProductDetailService; import com.glxp.api.service.system.SystemParamConfigService; import com.glxp.api.util.CustomUtil; @@ -70,13 +68,11 @@ public class IoCheckInoutService { @Resource IoOrderDetailResultService orderDetailResultService; @Resource - InvPreinDetailService invPreinDetailService; - @Resource IoGenInvService genInvService; @Resource IoAddInoutService addInoutService; @Resource - IoSplitCodeService splitCodeService; + IoSplitFifoCodeService splitFifoCodeService; //判断是否需要手动校验 public boolean checkManual(String billNo) { @@ -1176,7 +1172,6 @@ public class IoCheckInoutService { backCodeList.add(ioCodeEntity); } } - // 4.生成退货单 genBackOrder(orderEntity, backCodeList); } @@ -1194,22 +1189,20 @@ public class IoCheckInoutService { } else { genInvService.genNorInv(orderEntity.getBillNo()); orderService.updateOrderInventory(orderEntity.getBillNo(), orderEntity.getStatus()); - - - //若未拆零预出库单据则入到拆零表 + //若未拆零预出库单据则进入到拆零队列 if (orderEntity.getAction() == "SC72197936495755") { List codeList = codeService.findByOrderId(orderEntity.getBillNo()); - List splitCodeEntities = new ArrayList<>(); + List splitCodeEntities = new ArrayList<>(); if (CollUtil.isNotEmpty(codeList)) { for (IoCodeEntity codeEntity : codeList) { - IoSplitCodeEntity splitCodeEntity = new IoSplitCodeEntity(); + IoSplitFifoCodeEntity splitCodeEntity = new IoSplitFifoCodeEntity(); BeanUtils.copyProperties(codeEntity, splitCodeEntity); splitCodeEntity.setInBactchNo(codeEntity.getInBatchNo()); splitCodeEntity.setTotalCount(codeEntity.getReCount()); - splitCodeEntity.setRemainCount(codeEntity.getReCount()); + splitCodeEntity.setId(null); } } - splitCodeService.saveBatch(splitCodeEntities); + splitFifoCodeService.saveBatch(splitCodeEntities); } } } else { diff --git a/src/main/java/com/glxp/api/service/inout/IoSplitFifoCodeService.java b/src/main/java/com/glxp/api/service/inout/IoSplitFifoCodeService.java new file mode 100644 index 000000000..309d0027b --- /dev/null +++ b/src/main/java/com/glxp/api/service/inout/IoSplitFifoCodeService.java @@ -0,0 +1,34 @@ +package com.glxp.api.service.inout; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.glxp.api.dao.inout.IoSplitFifoCodeMapper; +import com.glxp.api.entity.inout.IoSplitFifoCodeEntity; +import com.glxp.api.req.inout.IoSplitFifoCodeRequest; +import com.glxp.api.res.inout.IoSplitCodeResponse; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.List; + +@Service +public class IoSplitFifoCodeService extends ServiceImpl { + + @Resource + IoSplitFifoCodeMapper splitFifoCodeMapper; + + public List filterList(IoSplitFifoCodeRequest splitFifoCodeRequest) { + if (splitFifoCodeRequest == null) { + return Collections.emptyList(); + } + if (splitFifoCodeRequest.getPage() != null) { + int offset = (splitFifoCodeRequest.getPage() - 1) * splitFifoCodeRequest.getLimit(); + PageHelper.offsetPage(offset, splitFifoCodeRequest.getLimit()); + } + return super.baseMapper.filterList(splitFifoCodeRequest); + + } + + +} diff --git a/src/main/resources/mybatis/mapper/inout/IoSplitFifoCodeMapper.xml b/src/main/resources/mybatis/mapper/inout/IoSplitFifoCodeMapper.xml new file mode 100644 index 000000000..b8912203f --- /dev/null +++ b/src/main/resources/mybatis/mapper/inout/IoSplitFifoCodeMapper.xml @@ -0,0 +1,39 @@ + + + + +