diff --git a/src/main/java/com/glxp/api/controller/dev/DeviceInfoController.java b/src/main/java/com/glxp/api/controller/dev/DeviceInfoController.java index 5592ea459..fdfda9252 100644 --- a/src/main/java/com/glxp/api/controller/dev/DeviceInfoController.java +++ b/src/main/java/com/glxp/api/controller/dev/DeviceInfoController.java @@ -76,13 +76,7 @@ public class DeviceInfoController extends BaseController { @AuthRuleAnnotation("") @GetMapping("/udi/device/code/gen") public BaseResponse genDeviceCode() { - String deviceCode = ""; - DeviceInfoEntity deviceInfo = null; - do { - deviceCode = "S" + RandomUtil.randomNumbers(10); - deviceInfo = deviceInfoService.getById(deviceCode); - } while (deviceInfo != null); - return ResultVOUtils.success(deviceCode); + return ResultVOUtils.success(deviceInfoService.genDeviceCode()); } /** diff --git a/src/main/java/com/glxp/api/controller/purchase/PurOrderController.java b/src/main/java/com/glxp/api/controller/purchase/PurOrderController.java index eeb4e4b8a..141caa59a 100644 --- a/src/main/java/com/glxp/api/controller/purchase/PurOrderController.java +++ b/src/main/java/com/glxp/api/controller/purchase/PurOrderController.java @@ -1,6 +1,8 @@ package com.glxp.api.controller.purchase; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.glxp.api.req.purchase.*; +import com.glxp.api.res.purchase.PurOrderByBillNoResponse; import com.glxp.api.service.basic.SysApprovalFlowService; import com.glxp.api.service.purchase.impl.PurOrderDetailService; import com.glxp.api.service.purchase.impl.PurPlanDetailService; @@ -471,4 +473,17 @@ public class PurOrderController { return ResultVOUtils.success(selectsupList); } + /** + * 查询采购计划列表 + */ + @GetMapping("/purchase/orderByBillNo/{billNo}") + public BaseResponse orderByBillNo(@PathVariable String billNo) { + PurOrderEntity purOrderEntity = purOrderService.selectByBillNo(billNo); + List list = purOrderDetailService.list(new LambdaQueryWrapper().eq(PurOrderDetailEntity::getOrderIdFk, purOrderEntity.getId())); + PurOrderByBillNoResponse res = new PurOrderByBillNoResponse(); + BeanUtils.copyProperties(purOrderEntity,res); + res.setItems(list); + return ResultVOUtils.success(res); + } + } diff --git a/src/main/java/com/glxp/api/entity/basic/BasicBussinessTypeEntity.java b/src/main/java/com/glxp/api/entity/basic/BasicBussinessTypeEntity.java index 3ec3c6449..e9b934b43 100644 --- a/src/main/java/com/glxp/api/entity/basic/BasicBussinessTypeEntity.java +++ b/src/main/java/com/glxp/api/entity/basic/BasicBussinessTypeEntity.java @@ -493,6 +493,10 @@ public class BasicBussinessTypeEntity { @TableField(value = "vailProductAttributes") private Integer vailProductAttributes; - + /** + * 是否设备入库 :0:未启用;2.启用 + */ + @TableField(value = "devInType") + private Integer devInType; } diff --git a/src/main/java/com/glxp/api/entity/dev/DeviceInfoEntity.java b/src/main/java/com/glxp/api/entity/dev/DeviceInfoEntity.java index 4a11b132d..250be058e 100644 --- a/src/main/java/com/glxp/api/entity/dev/DeviceInfoEntity.java +++ b/src/main/java/com/glxp/api/entity/dev/DeviceInfoEntity.java @@ -582,4 +582,30 @@ public class DeviceInfoEntity implements Serializable { */ @TableField(value = "assetReserveType") private String assetReserveType; + + /** + * 申购订单id外键 + */ + @TableField(value = "purApplyBillNo") + private String purApplyBillNo; + + /** + * 采购订单id外键 + */ + @TableField(value = "purOrderBillNo") + private String purOrderBillNo; + + /** + * 采购合同id外键 + */ + @TableField(value = "purContractBillNo") + private String purContractBillNo; + + /** + * 采购计划id外键 + */ + @TableField(value = "purPlanBillNo") + private String purPlanBillNo; + + } diff --git a/src/main/java/com/glxp/api/req/basic/BussinessTypeSaveRequest.java b/src/main/java/com/glxp/api/req/basic/BussinessTypeSaveRequest.java index 3d34855b9..4e8dd3265 100644 --- a/src/main/java/com/glxp/api/req/basic/BussinessTypeSaveRequest.java +++ b/src/main/java/com/glxp/api/req/basic/BussinessTypeSaveRequest.java @@ -325,5 +325,10 @@ public class BussinessTypeSaveRequest { */ @TableField(value = "vailProductAttributes") private Integer vailProductAttributes; + /** + * 是否设备入库 :0:未启用;2.启用 + */ + @TableField(value = "devInType") + private Integer devInType; } diff --git a/src/main/java/com/glxp/api/req/dev/DeviceChangeOrderParam.java b/src/main/java/com/glxp/api/req/dev/DeviceChangeOrderParam.java index fb430b653..24a93881c 100644 --- a/src/main/java/com/glxp/api/req/dev/DeviceChangeOrderParam.java +++ b/src/main/java/com/glxp/api/req/dev/DeviceChangeOrderParam.java @@ -160,12 +160,12 @@ public class DeviceChangeOrderParam { /** * 生产日期 */ - private LocalDate productionDate; + private String productionDate; /** * 失效日期 */ - private LocalDate expireDate; + private String expireDate; private String ggxh; private String manufactory; @@ -527,6 +527,30 @@ public class DeviceChangeOrderParam { @TableField(value = "assetReserveType") private String assetReserveType; + /** + * 申购订单id外键 + */ + @TableField(value = "purApplyBillNo") + private String purApplyBillNo; + + /** + * 采购订单id外键 + */ + @TableField(value = "purOrderBillNo") + private String purOrderBillNo; + + /** + * 采购合同id外键 + */ + @TableField(value = "purContractBillNo") + private String purContractBillNo; + + /** + * 采购计划id外键 + */ + @TableField(value = "purPlanBillNo") + private String purPlanBillNo; + } public void valid(AuthAdmin user) { diff --git a/src/main/java/com/glxp/api/res/basic/BasicBussinessTypeResponse.java b/src/main/java/com/glxp/api/res/basic/BasicBussinessTypeResponse.java index 9ea2bb9b0..0c9914361 100644 --- a/src/main/java/com/glxp/api/res/basic/BasicBussinessTypeResponse.java +++ b/src/main/java/com/glxp/api/res/basic/BasicBussinessTypeResponse.java @@ -204,5 +204,10 @@ public class BasicBussinessTypeResponse { */ @TableField(value = "vailProductAttributes") private Integer vailProductAttributes; + /** + * 是否设备入库 :0:未启用;2.启用 + */ + @TableField(value = "devInType") + private Integer devInType; } diff --git a/src/main/java/com/glxp/api/res/purchase/PurOrderByBillNoResponse.java b/src/main/java/com/glxp/api/res/purchase/PurOrderByBillNoResponse.java new file mode 100644 index 000000000..bb0b401e8 --- /dev/null +++ b/src/main/java/com/glxp/api/res/purchase/PurOrderByBillNoResponse.java @@ -0,0 +1,98 @@ +package com.glxp.api.res.purchase; + +import com.glxp.api.entity.purchase.PurOrderDetailEntity; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +public class PurOrderByBillNoResponse { + + /** + * + */ + private Long id; + /** + * 单据号 + */ + private String billNo; + /** + * 单据日期 + */ + private Date billDate; + /** + * 状态(1.草稿,2.未审核,3.已审核) + */ + private Integer status; + /** + * 申购类型 + */ + private String billType; + /** + * 申购说明 + */ + private String remark; + private String invCode; + /** + * 所属部门 + */ + private String deptCode; + /** + * 审核人 + */ + private String auditBy; + /** + * 审核时间 + */ + private Date auditTime; + + private String createBy; + + /** + * 创建时间 + */ + private Date createTime; + + private Date updateTime; + + private String invName; + private String subInvName; + private String deptName; + private String auditRemark; + + private String applyCreateBy; //申购人 + private String applyAuditBy; //申购审核人 + private String applyRemark; //申购说明 + private String applyBillNo; //申购单据号,多单以逗号隔开 + private String applyInvName; + + private String stockOrderNo; + + private String createUser; + private String updateUser; + + private String createUserName; + private String auditUserName; + private Integer emergency; + private Date arrivalTime; + private String supId; + private String supName; + + + /** + * 状态(1.草稿,2.未审核,3.已审核,4.拒绝) + */ + private int flowStatus; + + + /** + * 审核时间 + */ + private Date flowAuditTime; + + private String flowAuditByName; + private String approvalFlowId; + + private List items; +} diff --git a/src/main/java/com/glxp/api/service/dev/DeviceChangeOrderService.java b/src/main/java/com/glxp/api/service/dev/DeviceChangeOrderService.java index 55135392f..b9f5bccfe 100644 --- a/src/main/java/com/glxp/api/service/dev/DeviceChangeOrderService.java +++ b/src/main/java/com/glxp/api/service/dev/DeviceChangeOrderService.java @@ -4,6 +4,9 @@ import com.glxp.api.entity.auth.AuthAdmin; import com.glxp.api.entity.dev.DeviceChangeOrderEntity; import com.baomidou.mybatisplus.extension.service.IService; import com.glxp.api.entity.dev.DeviceChangeOrderItemEntity; +import com.glxp.api.entity.inout.IoCodeEntity; +import com.glxp.api.entity.inout.IoOrderDetailResultEntity; +import com.glxp.api.entity.inout.IoOrderEntity; import com.glxp.api.req.dev.DeviceChangeOrderDetailQuery; import com.glxp.api.req.dev.DeviceChangeOrderGenerateOrderId; import com.glxp.api.req.dev.DeviceChangeOrderParam; @@ -56,4 +59,6 @@ public interface DeviceChangeOrderService extends IService codeEnttities); } diff --git a/src/main/java/com/glxp/api/service/dev/impl/DeviceChangeOrderServiceImpl.java b/src/main/java/com/glxp/api/service/dev/impl/DeviceChangeOrderServiceImpl.java index 6ab162858..a963ad8bd 100644 --- a/src/main/java/com/glxp/api/service/dev/impl/DeviceChangeOrderServiceImpl.java +++ b/src/main/java/com/glxp/api/service/dev/impl/DeviceChangeOrderServiceImpl.java @@ -8,13 +8,18 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.constant.Constant; +import com.glxp.api.dao.basic.UdiRelevanceDao; import com.glxp.api.entity.auth.AuthAdmin; import com.glxp.api.entity.auth.DeptEntity; +import com.glxp.api.entity.basic.BasicCorpEntity; import com.glxp.api.entity.basic.BasicProductsEntity; import com.glxp.api.entity.dev.DeviceChangeLogEntity; import com.glxp.api.entity.dev.DeviceChangeOrderEntity; import com.glxp.api.entity.dev.DeviceChangeOrderItemEntity; import com.glxp.api.entity.dev.DeviceInfoEntity; +import com.glxp.api.entity.inout.IoCodeEntity; +import com.glxp.api.entity.inout.IoOrderDetailResultEntity; +import com.glxp.api.entity.inout.IoOrderEntity; import com.glxp.api.enums.dev.DeviceChangeStatusEnum; import com.glxp.api.enums.dev.DeviceChangeTypeEnum; import com.glxp.api.enums.dev.DeviceStatusEnum; @@ -26,7 +31,9 @@ import com.glxp.api.req.dev.DeviceChangeOrderParam; import com.glxp.api.req.dev.DeviceChangeOrderQuery; import com.glxp.api.req.system.DeleteRequest; import com.glxp.api.res.basic.UdiRelevanceResponse; +import com.glxp.api.service.auth.CustomerService; import com.glxp.api.service.auth.DeptService; +import com.glxp.api.service.basic.BasicCorpService; import com.glxp.api.service.basic.ProductInfoService; import com.glxp.api.service.basic.SysApprovalFlowService; import com.glxp.api.service.basic.UdiRelevanceService; @@ -47,9 +54,11 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.sql.SQLException; +import java.time.LocalDate; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * 针对表【device_change_order(设备变更单)】的数据库操作Service实现 @@ -75,6 +84,12 @@ public class DeviceChangeOrderServiceImpl extends ServiceImpl listByVo(DeviceChangeOrderQuery query, AuthAdmin user) { @@ -354,6 +369,61 @@ public class DeviceChangeOrderServiceImpl extends ServiceImpl codeEnttities) { + if (CollectionUtil.isEmpty(codeEnttities)) return; + AuthAdmin user = customerService.getUserBean(); + DeviceChangeOrderParam param = new DeviceChangeOrderParam(); + ArrayList items = new ArrayList<>(); + String purOrderId = orderEntity.getPurOrderId(); + String purPlanId = orderEntity.getPurPlanId(); + param.setType(DeviceChangeTypeEnum.ADD); + param.setDeptCode(orderEntity.getDeptCode()); + codeEnttities.forEach( ioCode -> { + String nameCode = ioCode.getNameCode(); + List productsEntitiesByNameCode = udiRelevanceDao.getProductsEntitiesByNameCode(nameCode); + DeviceChangeOrderParam.Item item = new DeviceChangeOrderParam.Item(); + if (CollectionUtil.isNotEmpty(productsEntitiesByNameCode)){ + UdiRelevanceResponse udiRelevanceResponse = productsEntitiesByNameCode.get(0); + BeanUtil.copyProperties(udiRelevanceResponse,item); + item.setProductName(udiRelevanceResponse.getCpmctymc()); + } + String deviceCode = deviceInfoService.genDeviceCode(); + item.setDeviceCode(deviceCode); + item.setUdi(ioCode.getCode()); + item.setBatchNo(ioCode.getBatchNo()); + item.setSerialNo(ioCode.getSerialNo()); + item.setProductionDate(convertToDateFormat("20"+ioCode.getProduceDate())); + item.setExpireDate(convertToDateFormat("20"+ioCode.getExpireDate())); + item.setSupId(ioCode.getSupId()); + BasicCorpEntity basicCorpEntity = basicCorpService.selectByErpId(ioCode.getSupId()); + item.setSupName(basicCorpEntity.getName()); + item.setPurOrderBillNo(purOrderId); + item.setPurPlanBillNo(purPlanId); + item.setProductId(ioCode.getRelId()); + items.add(item); + }); + param.setItems(items); + saveOrder(user, param); + } + + public String convertToDateFormat(String dateString) { + if (dateString == null || dateString.length() != 8) { + return ""; + } + // 使用String的substring方法来分割日期 + String year = dateString.substring(0, 4); + String month = dateString.substring(4, 6); + String day = dateString.substring(6, 8); + + // 使用StringBuilder来拼接结果 + StringBuilder formattedDate = new StringBuilder(); + formattedDate.append(year).append("-").append(month).append("-").append(day); + + return formattedDate.toString(); + } + } diff --git a/src/main/java/com/glxp/api/service/inout/IoGenInvService.java b/src/main/java/com/glxp/api/service/inout/IoGenInvService.java index 11ed6ea4a..1675880da 100644 --- a/src/main/java/com/glxp/api/service/inout/IoGenInvService.java +++ b/src/main/java/com/glxp/api/service/inout/IoGenInvService.java @@ -1,5 +1,7 @@ package com.glxp.api.service.inout; +import com.glxp.api.service.dev.DeviceChangeOrderService; +import com.glxp.api.service.dev.DeviceInfoService; import com.glxp.api.service.inout.impl.IoCodeService; import com.glxp.api.service.inv.impl.InvProductDetailService; import com.glxp.api.service.inv.impl.InvProductService; @@ -54,6 +56,8 @@ public class IoGenInvService { @Resource IoChangeInoutService ioChangeInoutService; + @Resource + DeviceChangeOrderService deviceChangeOrderService; //生成普通库存 @@ -127,9 +131,13 @@ public class IoGenInvService { invProductDetailService.insertList(invProductDetailEntities); } - //todo 若设备入库单,则生成设备登记单,入到科室设备 - - + //若设备入库单,则生成设备登记单,入到科室设备 + if (bussinessTypeEntity.getActionType() == (ConstantStatus.ACTION_TYPE_NORMAL) //带票(正常) + && bussinessTypeEntity.getMainAction().equals(ConstantType.TYPE_PUT) //入库 + && bussinessTypeEntity.getDevInType().equals(1) + ) { + deviceChangeOrderService.generateDeviceInfo(orderEntity,codeEnttities); + } } diff --git a/src/main/resources/schemas/schema_v2.4.sql b/src/main/resources/schemas/schema_v2.4.sql index 21142de08..db8b6d872 100644 --- a/src/main/resources/schemas/schema_v2.4.sql +++ b/src/main/resources/schemas/schema_v2.4.sql @@ -3143,6 +3143,13 @@ CALL Pro_Temp_ColumnWork('pur_contract', 'pageType', ' int NOT NULL DEFAULT b''1'' COMMENT ''1:业务管理;2:设备管理''', 1); + +CALL Pro_Temp_ColumnWork('device_info', 'purApplyBillNo','varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_cs NOT NULL COMMENT''申购订单单据号''', 1); +CALL Pro_Temp_ColumnWork('device_info', 'purOrderBillNo','varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_cs NOT NULL COMMENT''采购订单单据号''', 1); +CALL Pro_Temp_ColumnWork('device_info', 'purContractBillNo','varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_cs NOT NULL COMMENT''采购合同单据号''', 1); +CALL Pro_Temp_ColumnWork('device_info', 'purPlanBillNo','varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_cs NOT NULL COMMENT''采购计划单据号''', 1); +CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'devInType',' int NOT NULL DEFAULT b''0'' COMMENT ''是否设备入库 :0:未启用;2.启用''', 1); + CALL Pro_Temp_ColumnWork('io_order', 'purOrderId', ' varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT ''采购订单单号''', 1);