src/main/java/com/ruoyi/common/enums/FileNameType.java
@@ -5,7 +5,9 @@ SALE(1), // éå® PURCHASE(2), // éè´ INVOICE(3), //å票 PURCHASELEDGER(4); // PURCHASELEDGER(4), MEASURING(5), //计éå¨å ·å°è´¦ MEASURINGRecord(6); //计éå¨å ·å°è´¦è®°å½ private final int value; src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java
@@ -1,15 +1,24 @@ package com.ruoyi.framework.config; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.ParameterUtils; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor; import com.ruoyi.common.handler.CustomTenantLineHandler; import org.apache.ibatis.executor.Executor; import org.apache.ibatis.mapping.BoundSql; import org.apache.ibatis.mapping.MappedStatement; import org.apache.ibatis.session.ResultHandler; import org.apache.ibatis.session.RowBounds; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.annotation.EnableTransactionManagement; import java.sql.SQLException; /** * Mybatis Plus é ç½® @@ -39,14 +48,31 @@ /** * å页æä»¶ï¼èªå¨è¯å«æ°æ®åºç±»å https://baomidou.com/guide/interceptor-pagination.html */ public PaginationInnerInterceptor paginationInnerInterceptor() { PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(); // è®¾ç½®æ°æ®åºç±»å为mysql paginationInnerInterceptor.setDbType(DbType.MYSQL); // 设置æå¤§å页éå¶æ°éï¼é»è®¤ 500 æ¡ï¼-1 ä¸åéå¶ paginationInnerInterceptor.setMaxLimit(-1L); return paginationInnerInterceptor; // public PaginationInnerInterceptor paginationInnerInterceptor() // { // PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(); // // è®¾ç½®æ°æ®åºç±»å为mysql // paginationInnerInterceptor.setDbType(DbType.MYSQL); // // 设置æå¤§å页éå¶æ°éï¼é»è®¤ 500 æ¡ï¼-1 ä¸åéå¶ // paginationInnerInterceptor.setMaxLimit(-1L); // return paginationInnerInterceptor; // } public PaginationInnerInterceptor paginationInnerInterceptor() { PaginationInnerInterceptor interceptor = new PaginationInnerInterceptor(DbType.MYSQL) { @Override public void beforeQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) throws SQLException { IPage<?> page = ParameterUtils.findPage(parameter).orElse(null); if (page != null && page.getSize() <= 0) { // å½size<=0æ¶ï¼ä¸è¿è¡å页 return; } super.beforeQuery(executor, ms, parameter, rowBounds, resultHandler, boundSql); } }; interceptor.setMaxLimit(1000L); // 建议设置åççæå¤§å¼ return interceptor; } /** src/main/java/com/ruoyi/measuringinstrumentledger/controller/MeasuringInstrumentLedgerController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,129 @@ package com.ruoyi.measuringinstrumentledger.controller; 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.common.utils.poi.ExcelUtil; import com.ruoyi.equipmentenergyconsumption.pojo.EquipmentEnergyConsumption; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.measuringinstrumentledger.dto.MeasuringInstrumentLedgerDto; import com.ruoyi.measuringinstrumentledger.mapper.MeasuringInstrumentLedgerRecordMapper; import com.ruoyi.measuringinstrumentledger.pojo.MeasuringInstrumentLedger; import com.ruoyi.measuringinstrumentledger.pojo.MeasuringInstrumentLedgerRecord; import com.ruoyi.measuringinstrumentledger.service.MeasuringInstrumentLedgerService; import com.ruoyi.measuringinstrumentledger.service.impl.MeasuringInstrumentLedgerServiceImpl; import com.ruoyi.project.system.domain.SysUser; import com.ruoyi.project.system.mapper.SysUserMapper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; /** * @author :yys * @date : 2025/8/5 9:27 */ @RestController @Api(tags = "计éå¨å ·å°è´¦") @RequestMapping("/measuringInstrumentLedger") public class MeasuringInstrumentLedgerController extends BaseController { @Autowired private MeasuringInstrumentLedgerService measuringInstrumentLedgerService; @Autowired private SysUserMapper sysUserMapper; @Autowired private MeasuringInstrumentLedgerRecordMapper measuringInstrumentLedgerRecordMapper; @GetMapping("/listPage") @ApiOperation("计éå¨å ·å°è´¦-å页æ¥è¯¢") @Log(title = "计éå¨å ·å°è´¦-å页æ¥è¯¢", businessType = BusinessType.OTHER) public AjaxResult listPage(Page page, MeasuringInstrumentLedger measuringInstrumentLedger) { IPage<MeasuringInstrumentLedger> listPage = measuringInstrumentLedgerService.listPage(page, measuringInstrumentLedger); return AjaxResult.success(listPage); } @PostMapping("/add") @ApiOperation("计éå¨å ·å°è´¦-æ°å¢") @Log(title = "计éå¨å ·å°è´¦-æ°å¢", businessType = BusinessType.INSERT) @Transactional(rollbackFor = Exception.class) public AjaxResult add(@RequestBody MeasuringInstrumentLedger measuringInstrumentLedger) throws IOException { boolean save = measuringInstrumentLedgerService.add(measuringInstrumentLedger); if (save) { return AjaxResult.success(); } return AjaxResult.error(); } @PostMapping("/update") @ApiOperation("计éå¨å ·å°è´¦-ä¿®æ¹") @Log(title = "计éå¨å ·å°è´¦-ä¿®æ¹", businessType = BusinessType.UPDATE) @Transactional(rollbackFor = Exception.class) public AjaxResult update(@RequestBody MeasuringInstrumentLedger measuringInstrumentLedger) { SysUser sysUser = sysUserMapper.selectUserById(measuringInstrumentLedger.getUserId()); if (sysUser == null) { return AjaxResult.error("ç¨æ·ä¸åå¨"); } measuringInstrumentLedger.setUserName(sysUser.getUserName()); boolean update = measuringInstrumentLedgerService.updateById(measuringInstrumentLedger); if (update) { return AjaxResult.success(); } return AjaxResult.error(); } @DeleteMapping("/delete") @ApiOperation("计éå¨å ·å°è´¦-å é¤") @Log(title = "计éå¨å ·å°è´¦-å é¤", businessType = BusinessType.DELETE) @Transactional(rollbackFor = Exception.class) public AjaxResult delete(@RequestBody List<Long> ids) { if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("è¯·éæ©è³å°ä¸æ¡æ°æ®"); for (Long id : ids) { LambdaQueryWrapper<MeasuringInstrumentLedgerRecord> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(MeasuringInstrumentLedgerRecord::getMeasuringInstrumentLedgerId,id); List<MeasuringInstrumentLedgerRecord> measuringInstrumentLedgerRecords = measuringInstrumentLedgerRecordMapper.selectList(queryWrapper); if(!CollectionUtils.isEmpty(measuringInstrumentLedgerRecords)){ return AjaxResult.error("请å å é¤éä¸è®¡éå¨å ·å°è´¦ä¸çæææ£å®è®°å½"); } } boolean delete = measuringInstrumentLedgerService.removeBatchByIds(ids); if (delete) { return AjaxResult.success(); } return AjaxResult.error(); } @PostMapping("/verifying") @ApiOperation("计éå¨å ·å°è´¦-æ£å®") @Log(title = "计éå¨å ·å°è´¦-æ£å®", businessType = BusinessType.UPDATE) @Transactional(rollbackFor = Exception.class) public AjaxResult verifying(@RequestBody MeasuringInstrumentLedgerDto measuringInstrumentLedger) throws IOException { boolean update = measuringInstrumentLedgerService.verifying(measuringInstrumentLedger); return update ? AjaxResult.success("æ£å®æå") : AjaxResult.error("æ£å®å¤±è´¥"); } /** * 导åºè®¡éå¨å ·å°è´¦ */ @Log(title = "导åºè®¡éå¨å ·å°è´¦", businessType = BusinessType.EXPORT) @PostMapping("/export") @ApiOperation("导åºè®¡éå¨å ·å°è´¦") public void export(HttpServletResponse response) { measuringInstrumentLedgerService.export( response); } } src/main/java/com/ruoyi/measuringinstrumentledger/controller/MeasuringInstrumentLedgerRecordController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,63 @@ package com.ruoyi.measuringinstrumentledger.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.measuringinstrumentledger.pojo.MeasuringInstrumentLedgerRecord; import com.ruoyi.measuringinstrumentledger.service.MeasuringInstrumentLedgerRecordService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * @author :yys * @date : 2025/8/5 9:28 */ @RestController @Api(tags = "计éå¨å ·å°è´¦è®°å½") @RequestMapping("/measuringInstrumentLedgerRecord") public class MeasuringInstrumentLedgerRecordController extends BaseController { @Autowired private MeasuringInstrumentLedgerRecordService measuringInstrumentLedgerRecordService; @GetMapping("/listPage") @ApiOperation("计éå¨å ·å°è´¦è®°å½-å页æ¥è¯¢") @Log(title = "计éå¨å ·å°è´¦è®°å½-å页æ¥è¯¢", businessType = BusinessType.OTHER) public AjaxResult listPage(Page page, MeasuringInstrumentLedgerRecord measuringInstrumentLedgerRecord){ IPage<MeasuringInstrumentLedgerRecord> listPage = measuringInstrumentLedgerRecordService.listPage(page, measuringInstrumentLedgerRecord); return AjaxResult.success(listPage); } @PostMapping("/update") @ApiOperation("计éå¨å ·å°è´¦è®°å½-ä¿®æ¹") @Log(title = "计éå¨å ·å°è´¦è®°å½-ä¿®æ¹", businessType = BusinessType.UPDATE) @Transactional(rollbackFor = Exception.class) public AjaxResult update(@RequestBody MeasuringInstrumentLedgerRecord measuringInstrumentLedgerRecord) throws IOException { boolean update = measuringInstrumentLedgerRecordService.updateMeasuringInstrumentLedgerRecord(measuringInstrumentLedgerRecord); if (update) { return AjaxResult.success(); } return AjaxResult.error(); } /** * 导åºè®¡éå¨å ·å°è´¦ */ @ApiOperation("计éå¨å ·å°è´¦è®°å½-导åº") @Log(title = "计éå¨å ·å°è´¦è®°å½-导åº", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response) { measuringInstrumentLedgerRecordService.export( response); } } src/main/java/com/ruoyi/measuringinstrumentledger/dto/MeasuringInstrumentLedgerDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,46 @@ package com.ruoyi.measuringinstrumentledger.dto; import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.framework.aspectj.lang.annotation.Excel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; import java.util.List; /** * @author :yys * @date : 2025/8/5 9:50 */ @Data @ApiModel public class MeasuringInstrumentLedgerDto { @ApiModelProperty("ID") private Long id; @ApiModelProperty("éä»¶id") private List<String> tempFileIds; @ApiModelProperty("æ£å®æ¥æ") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @DateTimeFormat(pattern = "yyyy-MM-dd", iso = DateTimeFormat.ISO.DATE) private Date recordDate; @ApiModelProperty("å½å ¥æ¥æ") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @DateTimeFormat(pattern = "yyyy-MM-dd", iso = DateTimeFormat.ISO.DATE) private Date entryDate; @ApiModelProperty("æææ") private Integer valid; @ApiModelProperty("æ£å®äºº") private Long userId; } src/main/java/com/ruoyi/measuringinstrumentledger/mapper/MeasuringInstrumentLedgerMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,27 @@ package com.ruoyi.measuringinstrumentledger.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.measuringinstrumentledger.pojo.MeasuringInstrumentLedger; import org.apache.ibatis.annotations.Param; import java.util.List; /** * @author :yys * @date : 2025/8/5 9:20 */ public interface MeasuringInstrumentLedgerMapper extends BaseMapper<MeasuringInstrumentLedger> { /** * å页æ¥è¯¢ * * @param page * @param measuringInstrumentLedger * @return */ IPage<MeasuringInstrumentLedger> listPage(Page page,@Param("req") MeasuringInstrumentLedger measuringInstrumentLedger); List<MeasuringInstrumentLedger> listPage(@Param("req") MeasuringInstrumentLedger measuringInstrumentLedger); } src/main/java/com/ruoyi/measuringinstrumentledger/mapper/MeasuringInstrumentLedgerRecordMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ package com.ruoyi.measuringinstrumentledger.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.measuringinstrumentledger.pojo.MeasuringInstrumentLedgerRecord; import org.apache.ibatis.annotations.Param; import java.util.List; /** * @author :yys * @date : 2025/8/5 9:19 */ public interface MeasuringInstrumentLedgerRecordMapper extends BaseMapper<MeasuringInstrumentLedgerRecord> { IPage<MeasuringInstrumentLedgerRecord> listPage(Page page,@Param("req") MeasuringInstrumentLedgerRecord measuringInstrumentLedgerRecord); List<MeasuringInstrumentLedgerRecord> list(@Param("req") MeasuringInstrumentLedgerRecord measuringInstrumentLedgerRecord); } src/main/java/com/ruoyi/measuringinstrumentledger/pojo/MeasuringInstrumentLedger.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,140 @@ package com.ruoyi.measuringinstrumentledger.pojo; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.framework.aspectj.lang.annotation.Excel; import com.ruoyi.sales.pojo.CommonFile; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; import java.util.Date; import java.util.List; /** * @author :yys * @date : 2025/8/5 9:12 */ @Data @TableName("measuring_instrument_ledger") @ApiModel public class MeasuringInstrumentLedger { private static final long serialVersionUID = 1L; @ApiModelProperty("éä»¶id") @TableField(exist = false) private List<String> tempFileIds; @TableField(exist = false) @ApiModelProperty("éä»¶å表") private List<CommonFile> commonFiles; @TableId(value = "id", type = IdType.AUTO) private Long id; @ApiModelProperty("å½å ¥äººid") private Long userId; @ApiModelProperty("å½å ¥äººåç§°") @Excel(name = "å½å ¥äººåç§°") private String userName; /** * 计éå¨å ·ç¼å· */ @ApiModelProperty("计éå¨å ·ç¼å·") @Excel(name = "计éå¨å ·ç¼å·") private String code; /** * 计éå¨å ·åç§° */ @ApiModelProperty("计éå¨å ·åç§°") @Excel(name = "计éå¨å ·åç§°") private String name; /** * è§æ ¼åå· */ @ApiModelProperty("è§æ ¼åå·") @Excel(name = "è§æ ¼åå·") private String model; /** * æè¿ä¸æ¬¡æ£å®æ¥æ */ @ApiModelProperty("æè¿ä¸æ¬¡æ£å®æ¥æ") @Excel(name = "æè¿ä¸æ¬¡æ£å®æ¥æ", width = 30, dateFormat = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @DateTimeFormat(pattern = "yyyy-MM-dd") private Date mostDate; /** * æ£å®æææ */ @ApiModelProperty("æ£å®æææ") @Excel(name = "æ£å®æææ") private Integer valid; /** * é¢è®¡ä¸æ¬¡æ£å®æ¥æ */ @ApiModelProperty("é¢è®¡ä¸æ¬¡æ£å®æ¥æ") @Excel(name = "é¢è®¡ä¸æ¬¡æ£å®æ¥æ" , width = 30, dateFormat = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @DateTimeFormat(pattern = "yyyy-MM-dd") private Date nextDate; /** * å½å ¥æ¥æ */ @ApiModelProperty("å½å ¥æ¥æ") @Excel(name = "å½å ¥æ¥æ" , width = 30, dateFormat = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @DateTimeFormat(pattern = "yyyy-MM-dd") private Date recordDate; /** * ç¶æï¼1-ææ 2-é¾æï¼ */ @ApiModelProperty("ç¶æï¼1-ææ 2-龿ï¼") @Excel(name = "ç¶æ", readConverterExp = "1=ææ,2=龿") private Integer status; /** * å建è */ @TableField(fill = FieldFill.INSERT) private Integer createUser; /** * å建æ¶é´ */ @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; /** * ä¿®æ¹è */ @TableField(fill = FieldFill.INSERT_UPDATE) private Integer updateUser; /** * ä¿®æ¹æ¶é´ */ @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; /** * ç§æ·ID */ @TableField(fill = FieldFill.INSERT) private Long tenantId; } src/main/java/com/ruoyi/measuringinstrumentledger/pojo/MeasuringInstrumentLedgerRecord.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,122 @@ package com.ruoyi.measuringinstrumentledger.pojo; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.framework.aspectj.lang.annotation.Excel; import com.ruoyi.sales.pojo.CommonFile; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; import java.util.Date; import java.util.List; /** * @author :yys * @date : 2025/8/5 9:12 */ @Data @TableName("measuring_instrument_ledger_record") @ApiModel public class MeasuringInstrumentLedgerRecord { private static final long serialVersionUID = 1L; @ApiModelProperty("计éå¨å ·ç¼å·") @TableField(exist = false) @Excel(name = "计éå¨å ·ç¼å·") private String code; @ApiModelProperty("åç§°") @TableField(exist = false) @Excel(name = "åç§°") private String name; @ApiModelProperty("计éå¨å ·åç§°") @TableField(exist = false) @Excel(name = "计éå¨å ·åç§°") private String model; @ApiModelProperty("éä»¶id") @TableField(exist = false) private List<String> tempFileIds; @TableField(exist = false) @ApiModelProperty("éä»¶å表") private List<CommonFile> commonFiles; @TableId(value = "id", type = IdType.AUTO) private Long id; @ApiModelProperty("计éå¨å ·å°è´¦id") private Long measuringInstrumentLedgerId; @ApiModelProperty("æ£å®äººid") private Long userId; @ApiModelProperty("æ£å®äººåç§°") @Excel(name = "æ£å®äººåç§°") private String userName; /** * æ£å®æ¥æ */ @ApiModelProperty("æ£å®æ¥æ") @Excel(name = "æ£å®æ¥æ" , width = 30, dateFormat = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @DateTimeFormat(pattern = "yyyy-MM-dd") private Date recordDate; @ApiModelProperty("å½å ¥æ¥æ") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @Excel(name = "å½å ¥æ¥æ" , width = 30, dateFormat = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd", iso = DateTimeFormat.ISO.DATE) private Date entryDate; /** * æææï¼åä½å¤©ï¼ */ @ApiModelProperty("æææï¼åä½å¤©ï¼") private Integer valid; /** * ç¶æï¼1-ææ 2-é¾æï¼ */ @ApiModelProperty("ç¶æï¼1-ææ 2-龿ï¼") private Integer status; /** * å建è */ @TableField(fill = FieldFill.INSERT) private Integer createUser; /** * å建æ¶é´ */ @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; /** * ä¿®æ¹è */ @TableField(fill = FieldFill.INSERT_UPDATE) private Integer updateUser; /** * ä¿®æ¹æ¶é´ */ @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; /** * ç§æ·ID */ @TableField(fill = FieldFill.INSERT) private Long tenantId; } src/main/java/com/ruoyi/measuringinstrumentledger/service/MeasuringInstrumentLedgerRecordService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,29 @@ package com.ruoyi.measuringinstrumentledger.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.measuringinstrumentledger.pojo.MeasuringInstrumentLedgerRecord; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * @author :yys * @date : 2025/8/5 9:22 */ public interface MeasuringInstrumentLedgerRecordService extends IService<MeasuringInstrumentLedgerRecord> { /** * å页æ¥è¯¢ * * @param page * @param measuringInstrumentLedgerRecord * @return */ IPage<MeasuringInstrumentLedgerRecord> listPage(Page page, MeasuringInstrumentLedgerRecord measuringInstrumentLedgerRecord); void export(HttpServletResponse response); boolean updateMeasuringInstrumentLedgerRecord(MeasuringInstrumentLedgerRecord measuringInstrumentLedgerRecord) throws IOException; } src/main/java/com/ruoyi/measuringinstrumentledger/service/MeasuringInstrumentLedgerService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,44 @@ package com.ruoyi.measuringinstrumentledger.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.measuringinstrumentledger.dto.MeasuringInstrumentLedgerDto; import com.ruoyi.measuringinstrumentledger.pojo.MeasuringInstrumentLedger; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * @author :yys * @date : 2025/8/5 9:23 */ public interface MeasuringInstrumentLedgerService extends IService<MeasuringInstrumentLedger> { /** * å页æ¥è¯¢ * * @param page * @param measuringInstrumentLedger * @return */ IPage<MeasuringInstrumentLedger> listPage(Page page, MeasuringInstrumentLedger measuringInstrumentLedger); /** * æ£å® * * @param measuringInstrumentLedger * @return */ boolean verifying(MeasuringInstrumentLedgerDto measuringInstrumentLedger) throws IOException; void export(HttpServletResponse response); /** * æ°å¢ * * @param measuringInstrumentLedger * @return */ boolean add(MeasuringInstrumentLedger measuringInstrumentLedger) throws IOException; } src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/MeasuringInstrumentLedgerRecordServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,175 @@ package com.ruoyi.measuringinstrumentledger.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.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.enums.FileNameType; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.measuringinstrumentledger.mapper.MeasuringInstrumentLedgerMapper; import com.ruoyi.measuringinstrumentledger.mapper.MeasuringInstrumentLedgerRecordMapper; import com.ruoyi.measuringinstrumentledger.pojo.MeasuringInstrumentLedger; import com.ruoyi.measuringinstrumentledger.pojo.MeasuringInstrumentLedgerRecord; import com.ruoyi.measuringinstrumentledger.service.MeasuringInstrumentLedgerRecordService; import com.ruoyi.other.mapper.TempFileMapper; import com.ruoyi.other.pojo.TempFile; import com.ruoyi.sales.mapper.CommonFileMapper; import com.ruoyi.sales.pojo.CommonFile; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FilenameUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Date; import java.util.List; import java.util.UUID; /** * @author :yys * @date : 2025/8/5 9:24 */ @Service @Slf4j public class MeasuringInstrumentLedgerRecordServiceImpl extends ServiceImpl<MeasuringInstrumentLedgerRecordMapper, MeasuringInstrumentLedgerRecord> implements MeasuringInstrumentLedgerRecordService { @Autowired private MeasuringInstrumentLedgerRecordMapper measuringInstrumentLedgerRecordMapper; @Autowired private MeasuringInstrumentLedgerMapper measuringInstrumentLedgerMapper; @Autowired private CommonFileMapper commonFileMapper; @Autowired private TempFileMapper tempFileMapper; @Value("${file.upload-dir}") private String uploadDir; @Override public IPage<MeasuringInstrumentLedgerRecord> listPage(Page page, MeasuringInstrumentLedgerRecord measuringInstrumentLedgerRecord) { IPage<MeasuringInstrumentLedgerRecord> measuringInstrumentLedgerRecordIPage = measuringInstrumentLedgerRecordMapper.listPage(page, measuringInstrumentLedgerRecord); measuringInstrumentLedgerRecordIPage.getRecords().forEach(item -> { LambdaQueryWrapper<CommonFile> salesLedgerFileWrapper = new LambdaQueryWrapper<>(); salesLedgerFileWrapper.eq(CommonFile::getCommonId, item.getId()); List<CommonFile> commonFiles = commonFileMapper.selectList(salesLedgerFileWrapper); item.setCommonFiles(commonFiles); }); return measuringInstrumentLedgerRecordIPage; } @Override public void export(HttpServletResponse response) { List<MeasuringInstrumentLedgerRecord> list = measuringInstrumentLedgerRecordMapper.list( new MeasuringInstrumentLedgerRecord()); ExcelUtil<MeasuringInstrumentLedgerRecord> util = new ExcelUtil<MeasuringInstrumentLedgerRecord>(MeasuringInstrumentLedgerRecord.class); util.exportExcel(response, list , "计éå¨å ·å°è´¦è®°å½æ°æ®"); } @Override public boolean updateMeasuringInstrumentLedgerRecord(MeasuringInstrumentLedgerRecord measuringInstrumentLedgerRecord) throws IOException { MeasuringInstrumentLedgerRecord measuringInstrumentLedgerRecord1 = measuringInstrumentLedgerRecordMapper.selectById(measuringInstrumentLedgerRecord.getId()); if (measuringInstrumentLedgerRecord1 == null) { return false; } // æææåæ´ï¼éæ°è®¡ç®é¢è®¡ä¸æ¬¡æ£å®æ¥æ if(!measuringInstrumentLedgerRecord1.getValid().equals(measuringInstrumentLedgerRecord.getValid())){ MeasuringInstrumentLedger measuringInstrumentLedger = measuringInstrumentLedgerMapper.selectById(measuringInstrumentLedgerRecord1.getMeasuringInstrumentLedgerId()); if(measuringInstrumentLedger != null){ measuringInstrumentLedger.setNextDate(new Date(measuringInstrumentLedger.getMostDate().getTime() + measuringInstrumentLedgerRecord.getValid() * 24 * 60 * 60 * 1000L)); } measuringInstrumentLedgerMapper.updateById(measuringInstrumentLedger); } // å é¤éä»¶ LambdaQueryWrapper<CommonFile> delWrapper = new LambdaQueryWrapper<>(); delWrapper.eq(CommonFile::getCommonId, measuringInstrumentLedgerRecord.getId()); commonFileMapper.delete(delWrapper); // è®°å½éä»¶ç»å® migrateTempFilesToFormal(measuringInstrumentLedgerRecord.getId(), measuringInstrumentLedgerRecord.getTempFileIds(), FileNameType.MEASURINGRecord.getValue()); return true; } /** * å°ä¸´æ¶æä»¶è¿ç§»å°æ£å¼ç®å½ * * @param businessId ä¸å¡IDï¼éå®å°è´¦IDï¼ * @param tempFileIds ä¸´æ¶æä»¶IDå表 * @throws IOException æä»¶æä½å¼å¸¸ */ private void migrateTempFilesToFormal(Long businessId, List<String> tempFileIds,Integer fileType) throws IOException { if (com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(tempFileIds)) { return; } // æå»ºæ£å¼ç®å½è·¯å¾ï¼æä¸å¡ç±»å忥æåç»ï¼ String formalDir = uploadDir + LocalDate.now().format(DateTimeFormatter.ISO_LOCAL_DATE); Path formalDirPath = Paths.get(formalDir); // ç¡®ä¿æ£å¼ç®å½åå¨ï¼éå½åå»ºï¼ if (!Files.exists(formalDirPath)) { Files.createDirectories(formalDirPath); } for (String tempFileId : tempFileIds) { // æ¥è¯¢ä¸´æ¶æä»¶è®°å½ TempFile tempFile = tempFileMapper.selectById(tempFileId); if (tempFile == null) { log.warn("ä¸´æ¶æä»¶ä¸åå¨ï¼è·³è¿å¤ç: {}", tempFileId); continue; } // æå»ºæ£å¼æä»¶åï¼å å«ä¸å¡IDåæ¶é´æ³ï¼é¿å å²çªï¼ String originalFilename = tempFile.getOriginalName(); String fileExtension = FilenameUtils.getExtension(originalFilename); String formalFilename = businessId + "_" + System.currentTimeMillis() + "_" + UUID.randomUUID().toString().substring(0, 8) + (StringUtils.hasText(fileExtension) ? "." + fileExtension : ""); Path formalFilePath = formalDirPath.resolve(formalFilename); try { // æ§è¡æä»¶è¿ç§»ï¼ä½¿ç¨ååæä½ç¡®ä¿å®å ¨æ§ï¼ Files.move( Paths.get(tempFile.getTempPath()), formalFilePath, StandardCopyOption.REPLACE_EXISTING, StandardCopyOption.ATOMIC_MOVE ); log.info("æä»¶è¿ç§»æå: {} -> {}", tempFile.getTempPath(), formalFilePath); // æ´æ°æä»¶è®°å½ï¼å ³èå°ä¸å¡IDï¼ CommonFile fileRecord = new CommonFile(); fileRecord.setCommonId(businessId); fileRecord.setName(originalFilename); fileRecord.setUrl(formalFilePath.toString()); fileRecord.setCreateTime(LocalDateTime.now()); fileRecord.setType(fileType); commonFileMapper.insert(fileRecord); // å é¤ä¸´æ¶æä»¶è®°å½ tempFileMapper.deleteById(tempFile); log.info("æä»¶è¿ç§»æå: {} -> {}", tempFile.getTempPath(), formalFilePath); } catch (IOException e) { log.error("æä»¶è¿ç§»å¤±è´¥: {}", tempFile.getTempPath(), e); // å¯éæ©åæ»äºå¡æè®°å½å¤±è´¥æä»¶ throw new IOException("æä»¶è¿ç§»å¼å¸¸", e); } } } } src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/MeasuringInstrumentLedgerServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,215 @@ package com.ruoyi.measuringinstrumentledger.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.enums.FileNameType; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.measuringinstrumentledger.dto.MeasuringInstrumentLedgerDto; import com.ruoyi.measuringinstrumentledger.mapper.MeasuringInstrumentLedgerMapper; import com.ruoyi.measuringinstrumentledger.mapper.MeasuringInstrumentLedgerRecordMapper; import com.ruoyi.measuringinstrumentledger.pojo.MeasuringInstrumentLedger; import com.ruoyi.measuringinstrumentledger.pojo.MeasuringInstrumentLedgerRecord; import com.ruoyi.measuringinstrumentledger.service.MeasuringInstrumentLedgerService; import com.ruoyi.other.mapper.TempFileMapper; import com.ruoyi.other.pojo.TempFile; import com.ruoyi.project.system.domain.SysUser; import com.ruoyi.project.system.mapper.SysUserMapper; import com.ruoyi.sales.mapper.CommonFileMapper; import com.ruoyi.sales.pojo.CommonFile; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FilenameUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.UUID; import java.util.stream.Collectors; /** * @author :yys * @date : 2025/8/5 9:23 */ @Service @Slf4j public class MeasuringInstrumentLedgerServiceImpl extends ServiceImpl<MeasuringInstrumentLedgerMapper, MeasuringInstrumentLedger> implements MeasuringInstrumentLedgerService { @Autowired private MeasuringInstrumentLedgerMapper measuringInstrumentLedgerMapper; @Autowired private MeasuringInstrumentLedgerRecordMapper measuringInstrumentLedgerRecordMapper; @Autowired private TempFileMapper tempFileMapper; @Autowired private CommonFileMapper commonFileMapper; @Autowired private SysUserMapper sysUserMapper; @Value("${file.upload-dir}") private String uploadDir; @Override public IPage<MeasuringInstrumentLedger> listPage(Page page, MeasuringInstrumentLedger measuringInstrumentLedger) { IPage<MeasuringInstrumentLedger> measuringInstrumentLedgerIPage = measuringInstrumentLedgerMapper.listPage(page, measuringInstrumentLedger); measuringInstrumentLedgerIPage.getRecords().forEach(item -> { LambdaQueryWrapper<MeasuringInstrumentLedgerRecord> measuringInstrumentLedgerRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); measuringInstrumentLedgerRecordLambdaQueryWrapper.eq(MeasuringInstrumentLedgerRecord::getMeasuringInstrumentLedgerId, item.getId()); List<MeasuringInstrumentLedgerRecord> measuringInstrumentLedgerRecords = measuringInstrumentLedgerRecordMapper.selectList(measuringInstrumentLedgerRecordLambdaQueryWrapper); if(!CollectionUtils.isEmpty(measuringInstrumentLedgerRecords)){ List<Long> collect = measuringInstrumentLedgerRecords.stream().map(MeasuringInstrumentLedgerRecord::getId).collect(Collectors.toList()); collect.add(item.getId()); LambdaQueryWrapper<CommonFile> salesLedgerFileWrapper = new LambdaQueryWrapper<>(); salesLedgerFileWrapper.in(CommonFile::getCommonId, collect); List<CommonFile> commonFiles = commonFileMapper.selectList(salesLedgerFileWrapper); item.setCommonFiles(commonFiles); } }); return measuringInstrumentLedgerIPage; } @Override public boolean verifying(MeasuringInstrumentLedgerDto req) throws IOException { MeasuringInstrumentLedger measuringInstrumentLedger = measuringInstrumentLedgerMapper.selectById(req.getId()); if(measuringInstrumentLedger == null) { return false; } SysUser sysUser = sysUserMapper.selectUserById(measuringInstrumentLedger.getUserId()); measuringInstrumentLedger.setValid(req.getValid()); measuringInstrumentLedger.setMostDate(req.getRecordDate()); measuringInstrumentLedger.setNextDate(new Date(req.getRecordDate().getTime() + 1000L * 60 * 60 * 24 * req.getValid())); MeasuringInstrumentLedgerRecord measuringInstrumentLedgerRecord = new MeasuringInstrumentLedgerRecord(); if(measuringInstrumentLedgerMapper.updateById(measuringInstrumentLedger) > 0) { measuringInstrumentLedgerRecord.setMeasuringInstrumentLedgerId(req.getId()); measuringInstrumentLedgerRecord.setRecordDate(req.getRecordDate()); measuringInstrumentLedgerRecord.setEntryDate(req.getEntryDate()); measuringInstrumentLedgerRecord.setValid(req.getValid()); measuringInstrumentLedgerRecord.setUserId(req.getUserId()); measuringInstrumentLedgerRecord.setUserName(sysUser.getUserName()); measuringInstrumentLedgerRecordMapper.insert(measuringInstrumentLedgerRecord); // å°è´¦ç»å®ä¸æ¬¡ // if(!CollectionUtils.isEmpty(req.getTempFileIds())){ // migrateTempFilesToFormal(measuringInstrumentLedger.getId(), req.getTempFileIds(), FileNameType.MEASURING.getValue()); // } // å°è´¦è®°å½ç»å®ä¸æ¬¡ if(!CollectionUtils.isEmpty(req.getTempFileIds())){ migrateTempFilesToFormal(measuringInstrumentLedgerRecord.getId(), req.getTempFileIds(), FileNameType.MEASURINGRecord.getValue()); } return true; } return false; } @Override public void export(HttpServletResponse response) { List<MeasuringInstrumentLedger> list = measuringInstrumentLedgerMapper.listPage(new MeasuringInstrumentLedger()); ExcelUtil<MeasuringInstrumentLedger> util = new ExcelUtil<MeasuringInstrumentLedger>(MeasuringInstrumentLedger.class); util.exportExcel(response, list , "å®¢æ·æ¡£æ¡æ°æ®"); } @Override public boolean add(MeasuringInstrumentLedger measuringInstrumentLedger) throws IOException { SysUser sysUser = sysUserMapper.selectUserById(measuringInstrumentLedger.getUserId()); if (sysUser == null) { return false; } measuringInstrumentLedger.setUserName(sysUser.getUserName()); measuringInstrumentLedgerMapper.insert(measuringInstrumentLedger); if(!CollectionUtils.isEmpty(measuringInstrumentLedger.getTempFileIds())){ migrateTempFilesToFormal(measuringInstrumentLedger.getId(), measuringInstrumentLedger.getTempFileIds(), FileNameType.MEASURING.getValue()); } return true; } /** * å°ä¸´æ¶æä»¶è¿ç§»å°æ£å¼ç®å½ * * @param businessId ä¸å¡IDï¼éå®å°è´¦IDï¼ * @param tempFileIds ä¸´æ¶æä»¶IDå表 * @throws IOException æä»¶æä½å¼å¸¸ */ private void migrateTempFilesToFormal(Long businessId, List<String> tempFileIds,Integer fileType) throws IOException { if (CollectionUtils.isEmpty(tempFileIds)) { return; } // æå»ºæ£å¼ç®å½è·¯å¾ï¼æä¸å¡ç±»å忥æåç»ï¼ String formalDir = uploadDir + LocalDate.now().format(DateTimeFormatter.ISO_LOCAL_DATE); Path formalDirPath = Paths.get(formalDir); // ç¡®ä¿æ£å¼ç®å½åå¨ï¼éå½åå»ºï¼ if (!Files.exists(formalDirPath)) { Files.createDirectories(formalDirPath); } for (String tempFileId : tempFileIds) { // æ¥è¯¢ä¸´æ¶æä»¶è®°å½ TempFile tempFile = tempFileMapper.selectById(tempFileId); if (tempFile == null) { log.warn("ä¸´æ¶æä»¶ä¸åå¨ï¼è·³è¿å¤ç: {}", tempFileId); continue; } // æå»ºæ£å¼æä»¶åï¼å å«ä¸å¡IDåæ¶é´æ³ï¼é¿å å²çªï¼ String originalFilename = tempFile.getOriginalName(); String fileExtension = FilenameUtils.getExtension(originalFilename); String formalFilename = businessId + "_" + System.currentTimeMillis() + "_" + UUID.randomUUID().toString().substring(0, 8) + (StringUtils.hasText(fileExtension) ? "." + fileExtension : ""); Path formalFilePath = formalDirPath.resolve(formalFilename); try { // æ§è¡æä»¶è¿ç§»ï¼ä½¿ç¨ååæä½ç¡®ä¿å®å ¨æ§ï¼ Files.move( Paths.get(tempFile.getTempPath()), formalFilePath, StandardCopyOption.REPLACE_EXISTING, StandardCopyOption.ATOMIC_MOVE ); log.info("æä»¶è¿ç§»æå: {} -> {}", tempFile.getTempPath(), formalFilePath); // æ´æ°æä»¶è®°å½ï¼å ³èå°ä¸å¡IDï¼ CommonFile fileRecord = new CommonFile(); fileRecord.setCommonId(businessId); fileRecord.setName(originalFilename); fileRecord.setUrl(formalFilePath.toString()); fileRecord.setCreateTime(LocalDateTime.now()); fileRecord.setType(fileType); commonFileMapper.insert(fileRecord); // å é¤ä¸´æ¶æä»¶è®°å½ tempFileMapper.deleteById(tempFile); log.info("æä»¶è¿ç§»æå: {} -> {}", tempFile.getTempPath(), formalFilePath); } catch (IOException e) { log.error("æä»¶è¿ç§»å¤±è´¥: {}", tempFile.getTempPath(), e); // å¯éæ©åæ»äºå¡æè®°å½å¤±è´¥æä»¶ throw new IOException("æä»¶è¿ç§»å¼å¸¸", e); } } } } src/main/resources/application-demo.yml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,219 @@ # 项ç®ç¸å ³é ç½® ruoyi: # åç§° name: RuoYi # çæ¬ version: 3.8.9 # çæå¹´ä»½ copyrightYear: 2025 # æä»¶è·¯å¾ 示ä¾ï¼ Windowsé ç½®D:/ruoyi/uploadPathï¼Linuxé ç½® /home/ruoyi/uploadPathï¼ profile: /javaWork/product-inventory-management/file # è·åipå°åå¼å ³ addressEnabled: false # éªè¯ç ç±»å math æ°åè®¡ç® char å符éªè¯ captchaType: math # å¼åç¯å¢é ç½® server: # æå¡å¨çHTTP端å£ï¼é»è®¤ä¸º8080 port: 8089 servlet: # åºç¨ç访é®è·¯å¾ context-path: / tomcat: # tomcatçURIç¼ç uri-encoding: UTF-8 # è¿æ¥æ°æ»¡åçæéæ°ï¼é»è®¤ä¸º100 accept-count: 1000 threads: # tomcatæå¤§çº¿ç¨æ°ï¼é»è®¤ä¸º200 max: 800 # Tomcatå¯å¨åå§åççº¿ç¨æ°ï¼é»è®¤å¼10 min-spare: 100 # æ¥å¿é ç½® logging: level: com.ruoyi: warn org.springframework: warn minio: endpoint: http://114.132.189.42/ port: 7019 secure: false accessKey: admin secretKey: 12345678 preview-expiry: 24 # é¢è§å°åé»è®¤24å°æ¶ default-bucket: uploadPath # ç¨æ·é ç½® user: password: # å¯ç æå¤§éè¯¯æ¬¡æ° maxRetryCount: 5 # å¯ç é宿¶é´ï¼é»è®¤10åéï¼ lockTime: 10 # Springé ç½® spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver druid: # ä¸»åºæ°æ®æº master: url: jdbc:mysql://114.132.189.42:9004/product-inventory-management-demo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root password: 123456 # ä»åºæ°æ®æº slave: # 仿°æ®æºå¼å ³/é»è®¤å ³é enabled: false url: username: password: # åå§è¿æ¥æ° initialSize: 5 # æå°è¿æ¥æ± æ°é minIdle: 10 # æå¤§è¿æ¥æ± æ°é maxActive: 20 # é ç½®è·åè¿æ¥çå¾ è¶ æ¶çæ¶é´ maxWait: 60000 # é ç½®è¿æ¥è¶ æ¶æ¶é´ connectTimeout: 30000 # é ç½®ç½ç»è¶ æ¶æ¶é´ socketTimeout: 60000 # é ç½®é´éå¤ä¹ æè¿è¡ä¸æ¬¡æ£æµï¼æ£æµéè¦å ³éç空é²è¿æ¥ï¼å使¯æ¯«ç§ timeBetweenEvictionRunsMillis: 60000 # é ç½®ä¸ä¸ªè¿æ¥å¨æ± 䏿å°çåçæ¶é´ï¼å使¯æ¯«ç§ minEvictableIdleTimeMillis: 300000 # é ç½®ä¸ä¸ªè¿æ¥å¨æ± 䏿大çåçæ¶é´ï¼å使¯æ¯«ç§ maxEvictableIdleTimeMillis: 900000 # é ç½®æ£æµè¿æ¥æ¯å¦ææ validationQuery: SELECT 1 FROM DUAL testWhileIdle: true testOnBorrow: false testOnReturn: false webStatFilter: enabled: true statViewServlet: enabled: true # 设置ç½ååï¼ä¸å¡«åå 许ææè®¿é® allow: url-pattern: /druid/* # æ§å¶å°ç®¡çç¨æ·ååå¯ç login-username: ruoyi login-password: 123456 filter: stat: enabled: true # æ ¢SQLè®°å½ log-slow-sql: true slow-sql-millis: 1000 merge-sql: true wall: config: multi-statement-allow: true # èµæºä¿¡æ¯ messages: # å½é åèµæºæä»¶è·¯å¾ basename: i18n/messages # æä»¶ä¸ä¼ servlet: multipart: # å个æä»¶å¤§å° max-file-size: 1GB # 设置æ»ä¸ä¼ çæä»¶å¤§å° max-request-size: 2GB # æå¡æ¨¡å devtools: restart: # çé¨ç½²å¼å ³ enabled: false # redis é ç½® redis: # å°å host: 127.0.0.1 # host: 172.17.0.1 # 端å£ï¼é»è®¤ä¸º6379 port: 6379 # æ°æ®åºç´¢å¼ database: 0 # å¯ç password: root2022! # password: # è¿æ¥è¶ æ¶æ¶é´ timeout: 10s lettuce: pool: # è¿æ¥æ± ä¸çæå°ç©ºé²è¿æ¥ min-idle: 0 # è¿æ¥æ± ä¸çæå¤§ç©ºé²è¿æ¥ max-idle: 8 # è¿æ¥æ± çæå¤§æ°æ®åºè¿æ¥æ° max-active: 8 # #è¿æ¥æ± æå¤§é»å¡çå¾ æ¶é´ï¼ä½¿ç¨è´å¼è¡¨ç¤ºæ²¡æéå¶ï¼ max-wait: -1ms # tokené ç½® token: # 令çèªå®ä¹æ è¯ header: Authorization # 令çå¯é¥ secret: abcdefghijklmnopqrstuvwxyz # ä»¤çæææï¼é»è®¤30åéï¼ expireTime: 450 # MyBatis Plusé ç½® mybatis-plus: # æç´¢æå®å å«å æ ¹æ®èªå·±çé¡¹ç®æ¥ typeAliasesPackage: com.ruoyi.**.pojo # é ç½®mapperçæ«æï¼æ¾å°ææçmapper.xmlæ å°æä»¶ mapperLocations: classpath*:mapper/**/*Mapper.xml # å è½½å ¨å±çé ç½®æä»¶ configLocation: classpath:mybatis/mybatis-config.xml global-config: enable-sql-runner: true db-config: id-type: auto # PageHelperå页æä»¶ pagehelper: helperDialect: mysql supportMethodsArguments: true params: count=countSql # Swaggeré ç½® swagger: # æ¯å¦å¼å¯swagger enabled: false # 请æ±åç¼ pathMapping: /dev-api # 鲿¢XSSæ»å» xss: # è¿æ»¤å¼å ³ enabled: true # æé¤é¾æ¥ï¼å¤ä¸ªç¨éå·åéï¼ excludes: /system/notice # å¹é 龿¥ urlPatterns: /system/*,/monitor/*,/tool/* # 代ç çæ gen: # ä½è author: ruoyi # é»è®¤çæå è·¯å¾ system éæ¹æèªå·±ç模ååç§° å¦ system monitor tool packageName: com.ruoyi.project.system # èªå¨å»é¤è¡¨åç¼ï¼é»è®¤æ¯true autoRemovePre: false # 表åç¼ï¼çæç±»åä¸ä¼å å«è¡¨åç¼ï¼å¤ä¸ªç¨éå·åéï¼ tablePrefix: sys_ # æ¯å¦å è®¸çææä»¶è¦çå°æ¬å°ï¼èªå®ä¹è·¯å¾ï¼ï¼é»è®¤ä¸å 许 allowOverwrite: false file: temp-dir: /javaWork/product-inventory-management/file/temp/uploads upload-dir: /javaWork/product-inventory-management/file/prod/uploads src/main/resources/mapper/measuringinstrumentledger/MeasuringInstrumentLedgerMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,55 @@ <?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.measuringinstrumentledger.mapper.MeasuringInstrumentLedgerMapper"> <select id="listPage" resultType="com.ruoyi.measuringinstrumentledger.pojo.MeasuringInstrumentLedger"> SELECT id, user_id, user_name, code, name, model, most_date, valid, next_date, record_date, CASE WHEN next_date >= DATE_FORMAT(now(),'%Y-%m-%d') THEN 1 ELSE 2 END AS status, create_user, create_time, update_user, update_time, tenant_id FROM measuring_instrument_ledger <where> <!-- æ¥è¯¢æ¡ä»¶åä¸ --> <if test="req.code != null and req.code != ''"> AND code LIKE CONCAT('%', #{req.code}, '%') </if> <if test="req.name != null and req.name != ''"> AND name LIKE CONCAT('%', #{req.name}, '%') </if> <if test="req.status != null"> <choose> <when test="req.status == 1"> AND next_date >= DATE_FORMAT(now(),'%Y-%m-%d') </when> <when test="req.status == 2"> AND next_date < DATE_FORMAT(now(),'%Y-%m-%d') </when> </choose> </if> <if test="req.tenantId != null"> AND tenant_id = #{req.tenantId} </if> <if test="req.recordDate != null"> AND record_date = DATE_FORMAT(#{req.recordDate},'%Y-%m-%d') </if> </where> ORDER BY update_time DESC </select> </mapper> src/main/resources/mapper/measuringinstrumentledger/MeasuringInstrumentLedgerRecordMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,68 @@ <?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.measuringinstrumentledger.mapper.MeasuringInstrumentLedgerRecordMapper"> <select id="listPage" resultType="com.ruoyi.measuringinstrumentledger.pojo.MeasuringInstrumentLedgerRecord"> SELECT t1.id, t1.user_id, t1.user_name, t2.code, t2.name, t2.model, t1.valid, t1.record_date, t1.entry_date FROM measuring_instrument_ledger_record t1 left join measuring_instrument_ledger t2 on t1.measuring_instrument_ledger_id = t2.id <where> <!-- æ¥è¯¢æ¡ä»¶åä¸ --> <if test="req.code != null and req.code != ''"> AND t2.code LIKE CONCAT('%', #{req.code}, '%') </if> <if test="req.name != null and req.name != ''"> AND t2.name LIKE CONCAT('%', #{req.name}, '%') </if> <if test="req.entryDate != null"> AND t1.entry_date = DATE_FORMAT(#{req.entryDate},'%Y-%m-%d') </if> <if test="req.recordDate != null"> AND t1.record_date = DATE_FORMAT(#{req.recordDate},'%Y-%m-%d') </if> </where> ORDER BY t1.update_time DESC </select> <select id="list" resultType="com.ruoyi.measuringinstrumentledger.pojo.MeasuringInstrumentLedgerRecord"> SELECT t1.id, t1.user_id, t1.user_name, t2.code, t2.name, t2.model, t1.valid, t1.record_date, t1.entry_date FROM measuring_instrument_ledger_record t1 left join measuring_instrument_ledger t2 on t1.measuring_instrument_ledger_id = t2.id <where> <!-- æ¥è¯¢æ¡ä»¶åä¸ --> <if test="req.code != null and req.code != ''"> AND t2.code LIKE CONCAT('%', #{req.code}, '%') </if> <if test="req.name != null and req.name != ''"> AND t2.name LIKE CONCAT('%', #{req.name}, '%') </if> <if test="req.entryDate != null"> AND t1.entry_date = DATE_FORMAT(#{req.entryDate},'%Y-%m-%d') </if> <if test="req.recordDate != null"> AND t1.record_date = DATE_FORMAT(#{req.recordDate},'%Y-%m-%d') </if> </where> ORDER BY t1.update_time DESC </select> </mapper>