main-business/src/main/java/com/ruoyi/business/controller/EquipmentUsageDetailController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,43 @@ package com.ruoyi.business.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.business.dto.EquipmentManagementDto; import com.ruoyi.business.dto.EquipmentUsageDetailDto; import com.ruoyi.business.entity.EquipmentManagement; import com.ruoyi.business.entity.EquipmentUsageDetail; import com.ruoyi.business.mapper.EquipmentUsageDetailMapper; import com.ruoyi.business.service.EquipmentManagementService; import com.ruoyi.business.service.EquipmentUsageDetailService; import com.ruoyi.common.core.domain.R; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.RestController; /** * <p> * 设å¤ä½¿ç¨æç»è¡¨ å端æ§å¶å¨ * </p> * * @author ld * @since 2025-07-23 */ @RestController @AllArgsConstructor @RequestMapping("/equipmentUsageDetail") public class EquipmentUsageDetailController { private EquipmentUsageDetailService equipmentUsageDetailService; /** * 设å¤é¢ç¨å½è¿è®°å½æ¥è¯¢ */ @GetMapping("/list") public R<IPage<EquipmentUsageDetailDto>> list(Page<EquipmentUsageDetail> page,EquipmentUsageDetailDto equipmentUsageDetailDto) { IPage<EquipmentUsageDetailDto> list = equipmentUsageDetailService.selectEquipmentUsageDetailList(page,equipmentUsageDetailDto); return R.ok(list); } } main-business/src/main/java/com/ruoyi/business/dto/EquipmentUsageDetailDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,25 @@ package com.ruoyi.business.dto; import com.baomidou.mybatisplus.annotation.TableField; import com.ruoyi.business.entity.EquipmentUsageDetail; import lombok.Data; @Data public class EquipmentUsageDetailDto extends EquipmentUsageDetail { /** * 设å¤ç¼å· */ @TableField(value = "equipment_no") private String equipmentNo; /** * 设å¤åç§° */ @TableField(value = "equipment_name") private String equipmentName; /** * è§æ ¼åå· */ @TableField(value = "specification") private String specification; } main-business/src/main/java/com/ruoyi/business/dto/EquipmentUsageRecordDto.java
@@ -11,4 +11,6 @@ private String equipmentName; //设å¤åç§° private String userName; //é¢ç¨äºº private Integer totalReturnNo; //å·²å½è¿æ»æ° } main-business/src/main/java/com/ruoyi/business/entity/EquipmentUsageDetail.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,59 @@ package com.ruoyi.business.entity; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import com.ruoyi.common.core.domain.MyBaseEntity; /** * 设å¤ä½¿ç¨æç»è¡¨ å®ä½ç±» * * @author ld * @date 2025-07-23 */ @Data @TableName("equipment_usage_detail") public class EquipmentUsageDetail extends MyBaseEntity { private static final long serialVersionUID = 1L; /** * 主é®ID */ @TableId(value = "id", type = IdType.AUTO) private Long id; /** * å ³èç使ç¨è®°å½ID */ @TableField(value = "usage_id") private Long usageId; /** * å ³èç设å¤ID */ @TableField(value = "equipment_id") private Long equipmentId; /** * æä½ç±»åï¼1-é¢ç¨ï¼2-å½è¿ */ @TableField(value = "operation_type") private Integer operationType; /** * æä½æ°é */ @TableField(value = "quantity") private Integer quantity; /** * æä½äººID */ @TableField(value = "operator_id") private Long operatorId; /** * æä½äºº */ @TableField(value = "operator") private String operator; /** * 夿³¨ */ @TableField(value = "remark") private String remark; } main-business/src/main/java/com/ruoyi/business/entity/EquipmentUsageRecord.java
@@ -1,6 +1,7 @@ package com.ruoyi.business.entity; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import com.ruoyi.common.core.domain.MyBaseEntity; @@ -29,10 +30,15 @@ @TableField(value = "equipment_id") private Long equipmentId; /** * ä½¿ç¨æ°é * é¢ç¨æ°é */ @TableField(value = "usage_quantity") private Integer usageQuantity; /** * å½è¿æ°é */ @TableField(value = "return_quantity") private Integer returnQuantity; /** * 使ç¨äººID */ @@ -52,11 +58,13 @@ * 使ç¨å¼å§æ¶é´ */ @TableField(value = "usage_start_time") @JsonFormat(pattern = "yyyy-MM-dd") private LocalDate usageStartTime; /** * 使ç¨ç»ææ¶é´ */ @TableField(value = "usage_end_time") @JsonFormat(pattern = "yyyy-MM-dd") private LocalDate usageEndTime; /** * 夿³¨ä¿¡æ¯ main-business/src/main/java/com/ruoyi/business/entity/PurchaseRegistration.java
@@ -88,4 +88,9 @@ */ @TableField(value = "registration_date") private LocalDate registrationDate; /** * è¿è´¹ */ @TableField(value = "freight") private BigDecimal freight; } main-business/src/main/java/com/ruoyi/business/mapper/EquipmentUsageDetailMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ package com.ruoyi.business.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.business.entity.EquipmentUsageDetail; import org.apache.ibatis.annotations.Mapper; /** * <p> * 设å¤ä½¿ç¨æç»è¡¨ Mapper æ¥å£ * </p> * * @author ld * @since 2025-07-23 */ @Mapper public interface EquipmentUsageDetailMapper extends BaseMapper<EquipmentUsageDetail> { } main-business/src/main/java/com/ruoyi/business/service/EquipmentUsageDetailService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,20 @@ package com.ruoyi.business.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.business.dto.EquipmentUsageDetailDto; import com.ruoyi.business.entity.EquipmentUsageDetail; import com.baomidou.mybatisplus.extension.service.IService; /** * <p> * 设å¤ä½¿ç¨æç»è¡¨ æå¡ç±» * </p> * * @author ld * @since 2025-07-23 */ public interface EquipmentUsageDetailService extends IService<EquipmentUsageDetail> { IPage<EquipmentUsageDetailDto> selectEquipmentUsageDetailList(Page<EquipmentUsageDetail> page, EquipmentUsageDetailDto equipmentUsageDetailDto); } main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentUsageDetailServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,118 @@ package com.ruoyi.business.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.business.dto.EquipmentManagementDto; import com.ruoyi.business.dto.EquipmentUsageDetailDto; import com.ruoyi.business.entity.EquipmentManagement; import com.ruoyi.business.entity.EquipmentUsageDetail; import com.ruoyi.business.entity.EquipmentUsageRecord; import com.ruoyi.business.mapper.EquipmentManagementMapper; import com.ruoyi.business.mapper.EquipmentUsageDetailMapper; import com.ruoyi.business.mapper.EquipmentUsageRecordMapper; import com.ruoyi.business.service.EquipmentManagementService; import com.ruoyi.business.service.EquipmentUsageDetailService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.business.service.EquipmentUsageRecordService; import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.common.utils.bean.BeanUtils; import org.springframework.stereotype.Service; import lombok.RequiredArgsConstructor; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; /** * <p> * 设å¤ä½¿ç¨æç»è¡¨ æå¡å®ç°ç±» * </p> * * @author ld * @since 2025-07-23 */ @Service @RequiredArgsConstructor public class EquipmentUsageDetailServiceImpl extends ServiceImpl<EquipmentUsageDetailMapper, EquipmentUsageDetail> implements EquipmentUsageDetailService { private final EquipmentUsageDetailMapper equipmentUsageDetailMapper; private final EquipmentUsageRecordMapper equipmentUsageRecordMapper; private final EquipmentManagementMapper equipmentManagementMapper; @Override public IPage<EquipmentUsageDetailDto> selectEquipmentUsageDetailList(Page<EquipmentUsageDetail> page,EquipmentUsageDetailDto equipmentUsageDetailDto) { // å¿ é¡»ä¼ éusageIdåæ° if (equipmentUsageDetailDto.getUsageId() == null) { throw new BaseException("è¯·éæ©ä½¿ç¨è®°å½"); } LambdaQueryWrapper<EquipmentUsageDetail> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(EquipmentUsageDetail::getUsageId, equipmentUsageDetailDto.getUsageId()); Page<EquipmentUsageDetail> entityPage = equipmentUsageDetailMapper.selectPage(page, queryWrapper); IPage<EquipmentUsageDetailDto> dtoPage = new Page<>(); BeanUtils.copyProperties(entityPage, dtoPage); // å è·åä¸»è¡¨è®°å½ List<Long> usageIds = entityPage.getRecords().stream() .map(EquipmentUsageDetail::getUsageId) .distinct() .collect(Collectors.toList()); if (!usageIds.isEmpty()) { // æ¥è¯¢å ³èç使ç¨è®°å½ List<EquipmentUsageRecord> usageRecords = equipmentUsageRecordMapper.selectList( new LambdaQueryWrapper<EquipmentUsageRecord>() .in(EquipmentUsageRecord::getId, usageIds) ); // è·åææè®¾å¤ID List<Long> equipmentIds = usageRecords.stream() .map(EquipmentUsageRecord::getEquipmentId) .distinct() .collect(Collectors.toList()); // æ¥è¯¢è®¾å¤ä¿¡æ¯ Map<Long, EquipmentManagement> equipmentMap; if (!equipmentIds.isEmpty()) { equipmentMap = equipmentManagementMapper.selectList( new LambdaQueryWrapper<EquipmentManagement>() .in(EquipmentManagement::getId, equipmentIds) ).stream().collect(Collectors.toMap(EquipmentManagement::getId, Function.identity())); } else { equipmentMap = new HashMap<>(); } // æå»ºä½¿ç¨è®°å½IDå°è®¾å¤IDçæ å° Map<Long, Long> usageIdToEquipmentIdMap = usageRecords.stream() .collect(Collectors.toMap(EquipmentUsageRecord::getId, EquipmentUsageRecord::getEquipmentId)); // 转æ¢DTOå¹¶å¡«å 设å¤ä¿¡æ¯ List<EquipmentUsageDetailDto> dtoList = entityPage.getRecords().stream().map(detail -> { EquipmentUsageDetailDto detailDto = new EquipmentUsageDetailDto(); BeanUtils.copyProperties(detail, detailDto); // è·åå ³èç设å¤ID Long equipmentId = usageIdToEquipmentIdMap.get(detail.getUsageId()); if (equipmentId != null && equipmentMap.containsKey(equipmentId)) { EquipmentManagement equipment = equipmentMap.get(equipmentId); detailDto.setEquipmentNo(equipment.getEquipmentNo()); detailDto.setEquipmentName(equipment.getEquipmentName()); detailDto.setSpecification(equipment.getSpecification()); } return detailDto; }).collect(Collectors.toList()); dtoPage.setRecords(dtoList); } else { dtoPage.setRecords(Collections.emptyList()); } return dtoPage; } } main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentUsageRecordServiceImpl.java
@@ -8,8 +8,10 @@ import com.ruoyi.business.dto.EquipmentManagementDto; import com.ruoyi.business.dto.EquipmentUsageRecordDto; import com.ruoyi.business.entity.EquipmentManagement; import com.ruoyi.business.entity.EquipmentUsageDetail; import com.ruoyi.business.entity.EquipmentUsageRecord; import com.ruoyi.business.mapper.EquipmentManagementMapper; import com.ruoyi.business.mapper.EquipmentUsageDetailMapper; import com.ruoyi.business.mapper.EquipmentUsageRecordMapper; import com.ruoyi.business.service.EquipmentUsageRecordService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -43,6 +45,8 @@ private final EquipmentUsageRecordMapper equipmentUsageRecordMapper; private final EquipmentManagementMapper equipmentManagementMapper; private final EquipmentUsageDetailMapper equipmentUsageDetailMapper; private final SysUserMapper sysUserMapper; @@ -83,6 +87,15 @@ if (sysUser != null) { dto.setUserName(sysUser.getNickName()); } int totalReturnNo = equipmentUsageDetailMapper.selectList( new LambdaQueryWrapper<EquipmentUsageDetail>() .eq(EquipmentUsageDetail::getUsageId, entity.getId()) .eq(EquipmentUsageDetail::getOperationType,2)) .stream() .mapToInt(EquipmentUsageDetail::getQuantity) .sum(); dto.setTotalReturnNo(totalReturnNo); return dto; }).toList(); dtoPage.setRecords(dtoRecords); @@ -97,13 +110,10 @@ throw new IllegalArgumentException("设å¤ä½¿ç¨è®°å½åæ°ä¸è½ä¸ºç©º"); } // å¤å¶å±æ§å°å®ä½å¯¹è±¡ EquipmentUsageRecord equipmentUsageRecord = new EquipmentUsageRecord(); BeanUtils.copyProperties(equipmentUsageRecordDto, equipmentUsageRecord); // è·å设å¤IDåé¢ç¨æ°é // è·å设å¤IDåæä½æ°é Long equipmentId = equipmentUsageRecordDto.getEquipmentId(); Integer newUsageQuantity = equipmentUsageRecordDto.getUsageQuantity(); Long userId = equipmentUsageRecordDto.getUserId(); String username = sysUserMapper.selectUserById(userId).getNickName(); // æ¥è¯¢è®¾å¤ä¿¡æ¯ EquipmentManagement equipment = equipmentManagementMapper.selectById(equipmentId); @@ -111,20 +121,10 @@ throw new RuntimeException("设å¤ä¸åå¨"); } int result; // æ°å¢è®°å½é»è¾ if (Objects.isNull(equipmentUsageRecordDto.getId())) { // æ£æ¥åºåæ¯å¦å è¶³ if (equipment.getQuantity() < newUsageQuantity) { throw new RuntimeException("åºåä¸è¶³ï¼å½ååºåï¼" + equipment.getQuantity()); } // æ£ååºå equipment.setQuantity(equipment.getQuantity() - newUsageQuantity); equipmentManagementMapper.updateById(equipment); // 设置使ç¨å¼å§æ¶é´ä¸ºå½åæ¶é´ equipmentUsageRecord.setUsageStartTime(LocalDate.now()); return equipmentUsageRecordMapper.insert(equipmentUsageRecord); result = handleNewUsage(equipmentUsageRecordDto, equipment, userId, username); } else { // ç¼è¾è®°å½é»è¾ EquipmentUsageRecord originalRecord = equipmentUsageRecordMapper.selectById(equipmentUsageRecordDto.getId()); @@ -134,29 +134,90 @@ // å¤çå½è¿é»è¾ if (equipmentUsageRecordDto.getEquipmentStatus() == 2) { // æ£æ¥å½è¿æ°éæ¯å¦åæ³ if (newUsageQuantity > originalRecord.getUsageQuantity()) { throw new RuntimeException("å½è¿æ°éä¸è½è¶ è¿åé¢ç¨æ°é"); result = handleReturnOperation(equipmentUsageRecordDto, equipment, originalRecord, userId, username); } else { // å¤çæ®éç¼è¾é»è¾ï¼éå½è¿ç¶æï¼ result = handleEditOperation(equipmentUsageRecordDto, equipment, originalRecord, userId, username); } } return result; } // 计ç®å®é å½è¿æ°éï¼åé¢ç¨æ°é - æ°é¢ç¨æ°éï¼ int returnedQuantity = originalRecord.getUsageQuantity() - newUsageQuantity; private int handleNewUsage(EquipmentUsageRecordDto dto, EquipmentManagement equipment, Long userId, String username) { // æ£æ¥åºå if (equipment.getQuantity() < dto.getUsageQuantity()) { throw new RuntimeException("åºåä¸è¶³ï¼å½ååºåï¼" + equipment.getQuantity()); } // æ¢å¤é¨ååºå equipment.setQuantity(equipment.getQuantity() + returnedQuantity); // åå»ºä¸»è®°å½ EquipmentUsageRecord record = new EquipmentUsageRecord(); BeanUtils.copyProperties(dto, record); record.setUsageStartTime(LocalDate.now()); record.setEquipmentStatus(1); // 使ç¨ä¸ç¶æ record.setReturnQuantity(0); // æ£ååºå equipment.setQuantity(equipment.getQuantity() - dto.getUsageQuantity()); equipmentManagementMapper.updateById(equipment); // å¦æå ¨é¨å½è¿ï¼è®¾ç½®å½è¿æ¶é´ if (newUsageQuantity == 0) { equipmentUsageRecord.setUsageEndTime(LocalDate.now()); } return equipmentUsageRecordMapper.updateById(equipmentUsageRecord); // ä¿åä¸»è®°å½ int result = equipmentUsageRecordMapper.insert(record); // ä¿åé¢ç¨æç»è®°å½ if (result > 0) { saveUsageDetail(record.getId(), record.getEquipmentId(), 1, dto.getUsageQuantity(), userId, username, "设å¤é¢ç¨"); } // å¤çæ®éç¼è¾é»è¾ï¼éå½è¿ç¶æï¼ if (!newUsageQuantity.equals(originalRecord.getUsageQuantity())) { return result; } private int handleReturnOperation(EquipmentUsageRecordDto dto, EquipmentManagement equipment, EquipmentUsageRecord originalRecord, Long userId, String username) { // è·åæ¬æ¬¡å½è¿æ°é Integer returnQuantity = dto.getReturnQuantity(); if (returnQuantity == null || returnQuantity <= 0) { throw new RuntimeException("å½è¿æ°éå¿ é¡»å¤§äº0"); } // 计ç®å©ä½æªå½è¿æ°é int remainingQuantity = originalRecord.getUsageQuantity() - originalRecord.getReturnQuantity(); if (returnQuantity > remainingQuantity) { throw new RuntimeException("å½è¿æ°éä¸è½è¶ è¿æªå½è¿æ°éï¼å©ä½æªå½è¿æ°éï¼" + remainingQuantity); } // æ´æ°ä¸»è®°å½ EquipmentUsageRecord updateRecord = new EquipmentUsageRecord(); updateRecord.setId(originalRecord.getId()); updateRecord.setReturnQuantity(originalRecord.getReturnQuantity() + returnQuantity); updateRecord.setEquipmentStatus(2); // å·²å½è¿ç¶æ updateRecord.setUsageEndTime(LocalDate.now()); // å¦æå ¨é¨å½è¿ï¼æ´æ°ç¶æåæ¶é´ // if (updateRecord.getReturnQuantity().equals(originalRecord.getUsageQuantity())) { // // } // æ¢å¤åºå equipment.setQuantity(equipment.getQuantity() + returnQuantity); equipmentManagementMapper.updateById(equipment); // æ´æ°ä¸»è®°å½ int result = equipmentUsageRecordMapper.updateById(updateRecord); // ä¿åå½è¿æç»è®°å½ if (result > 0) { String remark = "设å¤å½è¿" + (updateRecord.getEquipmentStatus() == 2 ? "ï¼å ¨é¨å½è¿ï¼" : "ï¼é¨åå½è¿ï¼"); saveUsageDetail(originalRecord.getId(), originalRecord.getEquipmentId(), 2, returnQuantity, userId, username, remark); } return result; } private int handleEditOperation(EquipmentUsageRecordDto dto, EquipmentManagement equipment, EquipmentUsageRecord originalRecord, Long userId, String username) { // æ£æ¥é¢ç¨æ°éæ¯å¦æåå if (!dto.getUsageQuantity().equals(originalRecord.getUsageQuantity())) { // 计ç®åºåååéï¼æ§æ°é - æ°æ°éï¼ int quantityDelta = originalRecord.getUsageQuantity() - newUsageQuantity; int quantityDelta = originalRecord.getUsageQuantity() - dto.getUsageQuantity(); // æ£æ¥è°æ´ååºåæ¯å¦å è¶³ int newInventory = equipment.getQuantity() + quantityDelta; @@ -169,10 +230,28 @@ if (equipmentManagementMapper.updateById(equipment) == 0) { throw new RuntimeException("åºåæ´æ°å¤±è´¥ï¼å¯è½å·²è¢«å ¶ä»æä½ä¿®æ¹"); } // è®°å½æ°éåæ´æç» saveUsageDetail(originalRecord.getId(), originalRecord.getEquipmentId(), 3, dto.getUsageQuantity(), userId, username, "é¢ç¨æ°éåæ´ï¼" + originalRecord.getUsageQuantity() + "â" + dto.getUsageQuantity()); } // æ´æ°é¢ç¨è®°å½ return equipmentUsageRecordMapper.updateById(equipmentUsageRecord); EquipmentUsageRecord updateRecord = new EquipmentUsageRecord(); BeanUtils.copyProperties(dto, updateRecord); return equipmentUsageRecordMapper.updateById(updateRecord); } private void saveUsageDetail(Long usageId, Long equipmentId, Integer operationType, Integer quantity, Long operatorId, String operator, String remark) { EquipmentUsageDetail detail = new EquipmentUsageDetail(); detail.setUsageId(usageId); detail.setEquipmentId(equipmentId); detail.setOperationType(operationType); detail.setQuantity(quantity); detail.setOperatorId(operatorId); detail.setOperator(operator); detail.setRemark(remark); equipmentUsageDetailMapper.insert(detail); } } main-business/src/main/java/com/ruoyi/business/service/impl/PendingInventoryServiceImpl.java
@@ -316,7 +316,7 @@ // 2. åå¤å¾ å ¥åºè®°å½ Long userId = SecurityUtils.getUserId(); PendingInventory pendingInventory = new PendingInventory(); pendingInventory.setUnit("t"); pendingInventory.setUnit("å¨"); pendingInventory.setRegistrantId(userId); pendingInventory.setRegistrationDate(LocalDate.now()); pendingInventory.setSupplierName("é ç ¤è®¡ç®å¨æ¹æ¡å ¥åº"); @@ -352,7 +352,7 @@ // 5. è®¾ç½®ä»·æ ¼åæ°é BigDecimal cost = safeGetBigDecimal(map, "cost"); BigDecimal tonnage = safeGetBigDecimal(map, "totalTonnage"); BigDecimal tonnage = safeGetBigDecimal(map, "createCoalQuantity"); if (cost == null || tonnage == null) { throw new BaseException("ææ¬æå¨ä½ä¸è½ä¸ºç©º"); main-business/src/main/java/com/ruoyi/business/service/impl/ProductionMasterServiceImpl.java
@@ -295,7 +295,7 @@ PendingInventory pending = new PendingInventory(); pending.setCoalId(p.getCoalId()); pending.setInventoryQuantity(p.getProductionQuantity()); pending.setUnit("t"); pending.setUnit("å¨"); pending.setSupplierName(formattedDate + " - " + "ç产å å·¥å ¥åº"); // é空å¤ç main-business/src/main/resources/db/migration/postgresql/V20250603160101__create_table_purchase_registration.sql
@@ -15,6 +15,7 @@ total_price_excluding_tax DECIMAL(10, 2) NOT NULL, -- ä¸å«ç¨æ»ä»·ï¼ä¸å 许为空 registrant_id BIGINT NOT NULL, -- ç»è®°äººidï¼ä¸å 许为空 registration_date DATE NOT NULL, -- ç»è®°æ¥æï¼ä¸å 许为空 freight DECIMAL(10, 2) NOT NULL, -- è¿è´¹ deleted INT NOT NULL DEFAULT 0, -- 软å 餿 å¿ï¼0=æªå é¤ï¼1=å·²å é¤ create_by VARCHAR(255), -- åå»ºäººç¨æ·å @@ -39,6 +40,8 @@ COMMENT ON COLUMN purchase_registration.total_price_excluding_tax IS 'ä¸å«ç¨æ»ä»·'; COMMENT ON COLUMN purchase_registration.registrant_id IS 'ç»è®°äººid'; COMMENT ON COLUMN purchase_registration.registration_date IS 'ç»è®°æ¥æ'; COMMENT ON COLUMN purchase_registration.freight IS 'è¿è´¹'; COMMENT ON COLUMN purchase_registration.deleted IS '软å 餿 å¿ï¼0=æªå é¤ï¼1=å·²å é¤'; COMMENT ON COLUMN purchase_registration.create_by IS 'å建该记å½çç¨æ·'; COMMENT ON COLUMN purchase_registration.create_time IS 'è®°å½å建æ¶é´'; main-business/src/main/resources/db/migration/postgresql/V20250604111200__create_table_official_inventory.sql
@@ -41,6 +41,9 @@ COMMENT ON COLUMN official_inventory.registration_date IS 'ç»è®°æ¥æ'; COMMENT ON COLUMN official_inventory.merge_id IS 'åå¹¶id'; COMMENT ON COLUMN official_inventory.coal_plan_id IS 'ç ¤è´¨æ¹æ¡id'; COMMENT ON COLUMN official_inventory.pending_id IS 'å¾ å ¥åºid'; COMMENT ON COLUMN official_inventory.price_excluding_tax IS 'ä¸å«ç¨åä»·'; COMMENT ON COLUMN official_inventory.total_price_excluding_tax IS 'ä¸å«ç¨æ»ä»·'; COMMENT ON COLUMN official_inventory.deleted IS '软å 餿 å¿ï¼0=æªå é¤ï¼1=å·²å é¤'; COMMENT ON COLUMN official_inventory.create_by IS 'å建该记å½çç¨æ·'; main-business/src/main/resources/db/migration/postgresql/V20250707155600__create_table_equipment_usage_record.sql
@@ -3,7 +3,8 @@ ( id BIGSERIAL PRIMARY KEY, -- 主é®IDï¼èªå¨éå¢ equipment_id BIGINT NOT NULL, -- 设å¤IDï¼å ³è设å¤ä¿¡æ¯è¡¨ï¼ä¸å 许为空 usage_quantity INT NOT NULL, -- ä½¿ç¨æ°éï¼ä¸å 许为空 usage_quantity INT NOT NULL, -- é¢ç¨æ°éï¼ä¸å 许为空 return_quantity INT, -- å½è¿æ°é user_id BIGINT NOT NULL, -- 使ç¨äººIDï¼å ³èç¨æ·è¡¨ï¼ä¸å 许为空 department_id BIGINT , -- é¨é¨IDï¼å ³èé¨é¨è¡¨ï¼ä¸å 许为空 equipment_status BIGINT NOT NULL, -- 设å¤ç¶æ:1.使ç¨ä¸ 2.å·²å½è¿ @@ -19,21 +20,38 @@ ); -- ä¸ºè¡¨æ·»å æ³¨é COMMENT ON TABLE equipment_usage_record IS '设å¤ä½¿ç¨è®°å½è¡¨'; COMMENT ON TABLE equipment_usage_record IS '设å¤ä½¿ç¨è®°å½è¡¨'; -- ä¸ºåæ®µæ·»å 注é COMMENT ON COLUMN equipment_usage_record.id IS '主é®ID'; COMMENT ON COLUMN equipment_usage_record.equipment_id IS '设å¤ID'; COMMENT ON COLUMN equipment_usage_record.usage_quantity IS 'ä½¿ç¨æ°é'; COMMENT ON COLUMN equipment_usage_record.user_id IS '使ç¨äººID'; COMMENT ON COLUMN equipment_usage_record.department_id IS 'é¨é¨ID'; COMMENT ON COLUMN equipment_usage_record.equipment_status IS '设å¤ç¶æ:1.使ç¨ä¸ 2.å·²å½è¿'; COMMENT ON COLUMN equipment_usage_record.usage_start_time IS '使ç¨å¼å§æ¶é´'; COMMENT ON COLUMN equipment_usage_record.usage_end_time IS '使ç¨ç»ææ¶é´'; COMMENT ON COLUMN equipment_usage_record.remarks IS '夿³¨ä¿¡æ¯'; COMMENT ON COLUMN equipment_usage_record.id IS '主é®ID'; COMMENT ON COLUMN equipment_usage_record.equipment_id IS '设å¤ID'; COMMENT ON COLUMN equipment_usage_record.usage_quantity IS 'é¢ç¨æ°é'; COMMENT ON COLUMN equipment_usage_record.return_quantity IS 'å½è¿æ°é'; COMMENT ON COLUMN equipment_usage_record.user_id IS '使ç¨äººID'; COMMENT ON COLUMN equipment_usage_record.department_id IS 'é¨é¨ID'; COMMENT ON COLUMN equipment_usage_record.equipment_status IS '设å¤ç¶æ:1.使ç¨ä¸ 2.å·²å½è¿'; COMMENT ON COLUMN equipment_usage_record.usage_start_time IS '使ç¨å¼å§æ¶é´'; COMMENT ON COLUMN equipment_usage_record.usage_end_time IS '使ç¨ç»ææ¶é´'; COMMENT ON COLUMN equipment_usage_record.remarks IS '夿³¨ä¿¡æ¯'; COMMENT ON COLUMN equipment_usage_record.deleted IS '软å 餿 å¿ï¼0=æªå é¤ï¼1=å·²å é¤'; COMMENT ON COLUMN equipment_usage_record.create_by IS 'å建该记å½çç¨æ·'; COMMENT ON COLUMN equipment_usage_record.create_time IS 'è®°å½å建æ¶é´'; COMMENT ON COLUMN equipment_usage_record.update_by IS 'æåä¿®æ¹è¯¥è®°å½çç¨æ·'; COMMENT ON COLUMN equipment_usage_record.update_time IS 'è®°å½æåæ´æ°æ¶é´'; COMMENT ON COLUMN equipment_usage_record.deleted IS '软å 餿 å¿ï¼0=æªå é¤ï¼1=å·²å é¤'; COMMENT ON COLUMN equipment_usage_record.create_by IS 'å建该记å½çç¨æ·'; COMMENT ON COLUMN equipment_usage_record.create_time IS 'è®°å½å建æ¶é´'; COMMENT ON COLUMN equipment_usage_record.update_by IS 'æåä¿®æ¹è¯¥è®°å½çç¨æ·'; COMMENT ON COLUMN equipment_usage_record.update_time IS 'è®°å½æåæ´æ°æ¶é´'; main-business/src/main/resources/db/migration/postgresql/V20250723134500__create_table_equipment_usage_detail.sql
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,53 @@ -- å建设å¤ä½¿ç¨æç»è¡¨ equipment_usage_detail DROP TABLE IF EXISTS equipment_usage_detail; CREATE TABLE equipment_usage_detail ( id BIGSERIAL PRIMARY KEY, -- 主é®IDï¼èªå¨éå¢ usage_id BIGINT NOT NULL, -- å ³èç使ç¨è®°å½ID equipment_id BIGINT NOT NULL, -- å ³èç设å¤ID operation_type INT NOT NULL, -- æä½ç±»åï¼1-é¢ç¨ï¼2-å½è¿ quantity INT NOT NULL, -- æä½æ°é operator_id BIGINT NOT NULL, -- æä½äººID operator VARCHAR(255), -- æä½äºº remark VARCHAR(255), -- 夿³¨ deleted INT NOT NULL DEFAULT 0, -- 软å 餿 å¿ï¼0=æªå é¤ï¼1=å·²å é¤ create_by VARCHAR(255), -- åå»ºäººç¨æ·å create_time TIMESTAMP WITHOUT TIME ZONE, -- å建æ¶é´ï¼é»è®¤å½åæ¶é´ update_by VARCHAR(255), -- æåæ´æ°äººç¨æ·å update_time TIMESTAMP WITHOUT TIME ZONE -- æåæ´æ°æ¶é´ ); -- ä¸ºè¡¨æ·»å æ³¨é COMMENT ON TABLE equipment_usage_detail IS '设å¤ä½¿ç¨æç»è¡¨'; -- ä¸ºåæ®µæ·»å 注é COMMENT ON COLUMN equipment_usage_detail.id IS '主é®ID'; COMMENT ON COLUMN equipment_usage_detail.usage_id IS 'å ³èç使ç¨è®°å½ID'; COMMENT ON COLUMN equipment_usage_detail.equipment_id IS 'å ³èç设å¤ID'; COMMENT ON COLUMN equipment_usage_detail.operation_type IS 'æä½ç±»åï¼1-é¢ç¨ï¼2-å½è¿'; COMMENT ON COLUMN equipment_usage_detail.quantity IS 'æä½æ°é'; COMMENT ON COLUMN equipment_usage_detail.operator_id IS 'æä½äººID'; COMMENT ON COLUMN equipment_usage_detail.operator IS 'æä½äºº'; COMMENT ON COLUMN equipment_usage_detail.remark IS '夿³¨'; COMMENT ON COLUMN equipment_usage_detail.deleted IS '软å 餿 å¿ï¼0=æªå é¤ï¼1=å·²å é¤'; COMMENT ON COLUMN equipment_usage_detail.create_by IS 'å建该记å½çç¨æ·'; COMMENT ON COLUMN equipment_usage_detail.create_time IS 'è®°å½å建æ¶é´'; COMMENT ON COLUMN equipment_usage_detail.update_by IS 'æåä¿®æ¹è¯¥è®°å½çç¨æ·'; COMMENT ON COLUMN equipment_usage_detail.update_time IS 'è®°å½æåæ´æ°æ¶é´'; main-business/src/main/resources/mapper/EquipmentUsageDetailMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,31 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.business.mapper.EquipmentUsageDetailMapper"> <!-- éç¨æ¥è¯¢æ å°ç»æ --> <resultMap id="BaseResultMap" type="com.ruoyi.business.entity.EquipmentUsageDetail"> <id column="id" property="id" /> <result column="deleted" property="deleted" /> <result column="create_by" property="createBy" /> <result column="create_time" property="createTime" /> <result column="update_by" property="updateBy" /> <result column="update_time" property="updateTime" /> <result column="usage_id" property="usageId" /> <result column="operation_type" property="operationType" /> <result column="quantity" property="quantity" /> <result column="operator_id" property="operatorId" /> <result column="operator" property="operator" /> <result column="remark" property="remark" /> </resultMap> <!-- éç¨æ¥è¯¢ç»æå --> <sql id="Base_Column_List"> deleted, create_by, create_time, update_by, update_time, id, usage_id, operation_type, quantity, operator_id, operator, remark </sql> </mapper>