diff --git a/src/main/java/com/glxp/api/controller/basic/BasicBussinessTypeController.java b/src/main/java/com/glxp/api/controller/basic/BasicBussinessTypeController.java index 99e1ce6a..f3cfd923 100644 --- a/src/main/java/com/glxp/api/controller/basic/BasicBussinessTypeController.java +++ b/src/main/java/com/glxp/api/controller/basic/BasicBussinessTypeController.java @@ -202,7 +202,7 @@ public class BasicBussinessTypeController extends BaseController { if (StrUtil.isNotEmpty(bussinessTypeFilterRequest.getVueType())) { List result = new ArrayList<>(); - List bussinessTypeEntities = basicBussinessTypeService.findByVueType(bussinessTypeFilterRequest.getVueType()); + List bussinessTypeEntities = basicBussinessTypeService.findByVueTypeAndType(bussinessTypeFilterRequest); if (StrUtil.isNotEmpty(bussinessTypeFilterRequest.getInvCode()) || StrUtil.isNotEmpty(bussinessTypeFilterRequest.getCode())) { //过滤是否是当前仓库底下单据类型 FilterBussinessTypeRequest tempRequest = new FilterBussinessTypeRequest(); diff --git a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java index 679d1dce..dd475a7f 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java @@ -21,6 +21,7 @@ import com.glxp.api.entity.basic.BasicBussinessTypeEntity; import com.glxp.api.entity.basic.BasicCorpEntity; import com.glxp.api.entity.basic.UdiEntity; import com.glxp.api.entity.basic.UdiProductEntity; +import com.glxp.api.entity.collect.RelCodeDetail; import com.glxp.api.entity.inout.*; import com.glxp.api.entity.inv.InvPreInProductDetailEntity; import com.glxp.api.entity.inv.InvPreProductDetailEntity; @@ -959,6 +960,7 @@ public class IoCodeTempController extends BaseController { if (StrUtil.isNotEmpty(addOrderRequest.getSerialNo())) { udiEntity.setSerialNo(addOrderRequest.getSerialNo()); } + RelCodeDetailResponse codeRelEntity = null; if (StrUtil.isEmpty(udiEntity.getBatchNo())) { IoCodeLostEntity codeLostEntity = codeLostService.findByCode(code); if (codeLostEntity != null) { @@ -966,7 +968,7 @@ public class IoCodeTempController extends BaseController { udiEntity.setProduceDate(codeLostEntity.getProduceDate()); udiEntity.setExpireDate(codeLostEntity.getExpireDate()); } else { - RelCodeDetailResponse codeRelEntity = relCodeDetailService.findByCode(code); + codeRelEntity = relCodeDetailService.findByCode(code); if (codeRelEntity != null) { udiEntity.setBatchNo(codeRelEntity.getBatchNo()); udiEntity.setProduceDate(DateUtil.formatDate(codeRelEntity.getMadeDate(), "yyMMdd")); @@ -1123,6 +1125,14 @@ public class IoCodeTempController extends BaseController { codeEnttity.setSerialNo(udiEntity.getSerialNo()); codeEnttity.setDeptCode(invWarehouseEntity.getParentId()); codeEnttity.setInvCode(addOrderRequest.getInvCode()); + if (codeRelEntity != null) { + codeEnttity.setParentCode(codeRelEntity.getParentCode()); + RelCodeDetail relCodeDetail = relCodeDetailService.getOneByCode(codeRelEntity.getParentCode()); + if (relCodeDetail != null) { + codeEnttity.setGrantPaCode(relCodeDetail.getParentCode()); + } + } + codeEnttity.setCount(1); codeEnttity.setProductType(2); String unitFk = null; diff --git a/src/main/java/com/glxp/api/entity/inout/IoCodeTempEntity.java b/src/main/java/com/glxp/api/entity/inout/IoCodeTempEntity.java index e0673d79..a4623a54 100644 --- a/src/main/java/com/glxp/api/entity/inout/IoCodeTempEntity.java +++ b/src/main/java/com/glxp/api/entity/inout/IoCodeTempEntity.java @@ -185,4 +185,9 @@ public class IoCodeTempEntity { @TableField(value = "parentCode") private String parentCode; + /** + * 爷级编码 + */ + @TableField(value = "grantPaCode") + private String grantPaCode; } diff --git a/src/main/java/com/glxp/api/service/basic/UdiProductService.java b/src/main/java/com/glxp/api/service/basic/UdiProductService.java index bfdd208a..2f941037 100644 --- a/src/main/java/com/glxp/api/service/basic/UdiProductService.java +++ b/src/main/java/com/glxp/api/service/basic/UdiProductService.java @@ -82,4 +82,6 @@ public interface UdiProductService { void updateLevelCount(UdiRelevanceEntity udiRelevanceEntity); boolean deleteByNameCode(String nameCode); + + UdiProductEntity findProductByNameCode(String nameCode); } diff --git a/src/main/java/com/glxp/api/service/basic/impl/UdiProductServiceImpl.java b/src/main/java/com/glxp/api/service/basic/impl/UdiProductServiceImpl.java index e6d4bdd6..4d47406b 100644 --- a/src/main/java/com/glxp/api/service/basic/impl/UdiProductServiceImpl.java +++ b/src/main/java/com/glxp/api/service/basic/impl/UdiProductServiceImpl.java @@ -586,6 +586,11 @@ public class UdiProductServiceImpl implements UdiProductService { return udiProductDao.delete(new QueryWrapper().eq("nameCode", nameCode)) > 0; } + @Override + public UdiProductEntity findProductByNameCode(String nameCode) { + return udiProductDao.findByNameCode(nameCode); + } + /** * 根据当前层级标识计算流通拆零数量 */ diff --git a/src/main/java/com/glxp/api/service/collect/RelCodeDetailService.java b/src/main/java/com/glxp/api/service/collect/RelCodeDetailService.java index 35bb93cf..26631e46 100644 --- a/src/main/java/com/glxp/api/service/collect/RelCodeDetailService.java +++ b/src/main/java/com/glxp/api/service/collect/RelCodeDetailService.java @@ -118,12 +118,26 @@ public class RelCodeDetailService extends ServiceImpl relCodeDetailResponse = filterList(relCodeDetailRequest); - if (CollUtil.isNotEmpty(relCodeDetailResponse)) { - return relCodeDetailResponse.get(0); + List relCodeDetailResponses = filterList(relCodeDetailRequest); + if (CollUtil.isNotEmpty(relCodeDetailResponses)) { + return relCodeDetailResponses.get(0); } else { - return null; + relCodeDetailRequest.setCurCode(null); + relCodeDetailRequest.setParentCode(code); + relCodeDetailResponses = filterList(relCodeDetailRequest); + if (CollUtil.isNotEmpty(relCodeDetailResponses)) { + RelCodeDetailResponse relCodeDetailResponse = relCodeDetailResponses.get(0); + relCodeDetailResponse.setCurCode(code); + relCodeDetailResponse.setParentCode(null); + return relCodeDetailResponse; + } } + return null; + } + + public RelCodeDetail getOneByCode(String code) { + RelCodeDetail relCodeDetail = getOne(new LambdaQueryWrapper().eq(RelCodeDetail::getCurCode, code)); + return relCodeDetail; } 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 61d23cda..97df8b67 100644 --- a/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java +++ b/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java @@ -14,6 +14,7 @@ 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.UdiEntity; +import com.glxp.api.entity.basic.UdiProductEntity; import com.glxp.api.entity.inout.*; import com.glxp.api.entity.inv.InvInnerOrderPdfTempEntity; import com.glxp.api.entity.inv.InvPreinDetailEntity; @@ -26,6 +27,7 @@ import com.glxp.api.res.inout.IoOrderDetailBizResponse; import com.glxp.api.res.inout.IoOrderDetailCodeResponse; import com.glxp.api.service.auth.InvWarehouseService; import com.glxp.api.service.basic.IBasicBussinessTypeService; +import com.glxp.api.service.basic.UdiProductService; import com.glxp.api.service.inout.impl.IoCodeService; import com.glxp.api.service.inout.impl.IoCodeTempService; import com.glxp.api.service.inout.impl.IoOrderInvoiceService; @@ -87,6 +89,9 @@ public class IoCheckInoutService { @Resource SystemParamConfigService systemParamConfigService; + @Resource + UdiProductService udiProductService; + /** * 判断是否需要手动校验 * @@ -447,6 +452,11 @@ public class IoCheckInoutService { orderDetailResultEntity.setCount(orderDetailCodeEntity.getReCount()); orderDetailResultEntity.setReCount(orderDetailCodeEntity.getReCount()); orderDetailResultEntity.setId(null); + UdiProductEntity product = udiProductService.findProductByNameCode(orderDetailCodeEntity.getNameCode()); + if (product.getProductsType() == 2){ + //药品 拿到药品赋值 + orderDetailResultEntity.setSpec(product.getBzgg()); + } orderDetailResultService.insert(orderDetailResultEntity); }); @@ -569,6 +579,11 @@ public class IoCheckInoutService { BeanUtils.copyProperties(orderDetailBizEntity, orderDetailResultEntity); orderDetailResultEntity.setId(null); orderDetailResultEntity.setReCount(orderDetailBizEntity.getScanCount()); + UdiProductEntity product = udiProductService.findProductByNameCode(orderDetailBizEntity.getNameCode()); + if (product.getProductsType() == 2){ + //药品 拿到药品赋值 + orderDetailResultEntity.setSpec(product.getBzgg()); + } orderDetailResultService.insert(orderDetailResultEntity); } diff --git a/src/main/java/com/glxp/api/service/inout/impl/IoCodeTempService.java b/src/main/java/com/glxp/api/service/inout/impl/IoCodeTempService.java index a157c11e..c293dc3e 100644 --- a/src/main/java/com/glxp/api/service/inout/impl/IoCodeTempService.java +++ b/src/main/java/com/glxp/api/service/inout/impl/IoCodeTempService.java @@ -1,6 +1,7 @@ package com.glxp.api.service.inout.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -11,6 +12,7 @@ import com.glxp.api.entity.collect.RelCodeDetail; import com.glxp.api.entity.inout.IoCodeEntity; import com.glxp.api.entity.inout.IoCodeTempEntity; import com.glxp.api.req.inout.FilterCodeRequest; +import com.glxp.api.res.collect.RelCodeDetailResponse; import com.glxp.api.res.inout.IoCodeTempResponse; import com.glxp.api.service.collect.RelCodeDetailService; import com.glxp.api.util.BeanCopyUtils; @@ -124,13 +126,23 @@ public class IoCodeTempService { public boolean ieExitRel(String code, String orderId) { boolean ret = false; - RelCodeDetail relCodeDetail = relCodeDetailService.getOne(new LambdaQueryWrapper().eq(RelCodeDetail::getCurCode, code)); + RelCodeDetailResponse relCodeDetail = relCodeDetailService.findByCode(code); if (relCodeDetail != null) { - ret = ioCodeTempDao.exists(new LambdaQueryWrapper().eq(IoCodeTempEntity::getOrderId, orderId).eq(IoCodeTempEntity::getCode, relCodeDetail.getParentCode())); + //判断是否存在关联关系:1.先判断当前单号是否存在父码,若存在则表示存在关联关系重复扫码 + if (StrUtil.isNotEmpty(relCodeDetail.getParentCode())) { + ret = ioCodeTempDao.exists(new LambdaQueryWrapper().eq(IoCodeTempEntity::getOrderId, orderId).eq(IoCodeTempEntity::getCode, relCodeDetail.getParentCode())); + if (!ret) { + relCodeDetail = relCodeDetailService.findByCode(relCodeDetail.getParentCode()); + ret = ioCodeTempDao.exists(new LambdaQueryWrapper().eq(IoCodeTempEntity::getOrderId, orderId).eq(IoCodeTempEntity::getCode, relCodeDetail.getParentCode())); + } + } + if (ret) + return true; + //若父码不存在,判断当前单号是否存在当前码的子码,若存在则表示存在关联关系重复扫码 + ret = ioCodeTempDao.exists(new LambdaQueryWrapper().eq(IoCodeTempEntity::getOrderId, orderId).eq(IoCodeTempEntity::getParentCode, code)); if (!ret) { - ret = ioCodeTempDao.exists(new LambdaQueryWrapper().eq(IoCodeTempEntity::getOrderId, orderId).eq(IoCodeTempEntity::getParentCode, code)); + ret = ioCodeTempDao.exists(new LambdaQueryWrapper().eq(IoCodeTempEntity::getOrderId, orderId).eq(IoCodeTempEntity::getGrantPaCode, code)); } - } return ret; } diff --git a/src/main/resources/mybatis/mapper/collect/RelCodeDetailMapper.xml b/src/main/resources/mybatis/mapper/collect/RelCodeDetailMapper.xml index 598e25e0..5a27c7db 100644 --- a/src/main/resources/mybatis/mapper/collect/RelCodeDetailMapper.xml +++ b/src/main/resources/mybatis/mapper/collect/RelCodeDetailMapper.xml @@ -1,68 +1,79 @@ - - - - - - - - - - - - - id, curCode, packLayer, parentCode, flag, batchIdFk - + + + + + + + + + + + + + id, + curCode, + packLayer, + parentCode, + flag, + batchIdFk + - + diff --git a/src/main/resources/mybatis/mapper/inout/IoOrderDetailBizDao.xml b/src/main/resources/mybatis/mapper/inout/IoOrderDetailBizDao.xml index e4c0880d..56765ecc 100644 --- a/src/main/resources/mybatis/mapper/inout/IoOrderDetailBizDao.xml +++ b/src/main/resources/mybatis/mapper/inout/IoOrderDetailBizDao.xml @@ -8,8 +8,8 @@ bp.prepnUnit, bp.bzgg from io_order_detail_biz - left join basic_udirel bu on bu.id = io_order_detail_biz.bindRlFk - left join basic_products bp on bu.uuid = bp.uuid + left join basic_udirel bu on bu.id = io_order_detail_biz.bindRlFk + left join basic_products bp on bu.uuid = bp.uuid AND orderIdFk = #{orderIdFk} @@ -33,8 +33,8 @@ bp.prepnSpec, bp.prepnUnit from io_order_detail_biz - left join basic_udirel bu on bu.id = io_order_detail_biz.bindRlFk - left join basic_products bp on bu.uuid = bp.uuid + left join basic_udirel bu on bu.id = io_order_detail_biz.bindRlFk + left join basic_products bp on bu.uuid = bp.uuid AND orderIdFk = #{orderIdFk} @@ -54,12 +54,12 @@ - SELECT ic.*, cpmctymc, ggxh, + SELECT ic.*, bp.cpmctymc, bp.ggxh, bp.bzgg, bp.packUnit, bp.prepnSpec, bp.prepnUnit FROM io_order_invoice ic - LEFT JOIN basic_udirel bu ON bu.id = ic.bindRlFk - LEFT JOIN basic_products bp ON bu.uuid = bp.uuid + LEFT JOIN basic_udirel bu ON bu.id = ic.bindRlFk + LEFT JOIN basic_products bp ON bu.uuid = bp.uuid AND ic.orderIdFk = #{orderIdFk} diff --git a/src/main/resources/mybatis/mapper/inout/IoOrderInvoiceMapper.xml b/src/main/resources/mybatis/mapper/inout/IoOrderInvoiceMapper.xml index 76e34064..c2d5ba51 100644 --- a/src/main/resources/mybatis/mapper/inout/IoOrderInvoiceMapper.xml +++ b/src/main/resources/mybatis/mapper/inout/IoOrderInvoiceMapper.xml @@ -121,7 +121,8 @@ io.manufacturer, io.certCode, io.reCount, - io.count + io.count, + bp.bzgg FROM io_order_invoice ic INNER JOIN io_order_detail_code io ON ic.orderIdFk = io.orderIdFk LEFT JOIN basic_udirel bu diff --git a/src/main/resources/schemas/schema_v2.4.sql b/src/main/resources/schemas/schema_v2.4.sql index ee21098d..ecc5c7c2 100644 --- a/src/main/resources/schemas/schema_v2.4.sql +++ b/src/main/resources/schemas/schema_v2.4.sql @@ -1129,6 +1129,16 @@ CALL Pro_Temp_ColumnWork('thr_products_add_di', 'majorStatus', CALL Pro_Temp_ColumnWork('io_code_temp', 'parentCode', ' varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT ''父级编码''', 1); +CALL Pro_Temp_ColumnWork('io_code_temp', 'grantPaCode', + ' varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT ''爷级编码''', + 1); + +CALL Pro_Temp_ColumnWork('io_code', 'parentCode', + ' varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT ''父级编码''', + 1); +CALL Pro_Temp_ColumnWork('io_code', 'grantPaCode', + ' varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT ''爷级编码''', + 1); CALL Pro_Temp_ColumnWork('rel_code_batch', 'erpId',