basic-server/src/main/java/com/ruoyi/basic/service/impl/CapacityScopeServiceImpl.java
@@ -100,12 +100,14 @@ List<Product> products = productMapper.selectList(Wrappers.<Product>lambdaQuery() .eq(Product::getObjectId, id)); List<Integer> productIds = products.stream().map(Product::getId).collect(Collectors.toList()); productPartMapper.delete(Wrappers.<ProductPart>lambdaQuery() .in(ProductPart::getProductId, productIds)); if (CollectionUtils.isNotEmpty(productIds)) { productPartMapper.delete(Wrappers.<ProductPart>lambdaQuery() .in(ProductPart::getProductId, productIds)); // å é¤äº§åç»´æ¤ productMapper.delete(Wrappers.<Product>lambdaQuery() .in(Product::getId, productIds)); // å é¤äº§åç»´æ¤ productMapper.delete(Wrappers.<Product>lambdaQuery() .in(Product::getId, productIds)); } return structureTestObjectMapper.deleteById(id); } cnas-device/src/main/java/com/ruoyi/device/controller/DeviceCalibrationPlanController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,173 @@ package com.ruoyi.device.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.domain.Result; import com.ruoyi.device.dto.DeviceCalibrationPlanDto; import com.ruoyi.device.pojo.DeviceCalibrationPlan; import com.ruoyi.device.pojo.DeviceCalibrationPlanDetail; import com.ruoyi.device.service.DeviceCalibrationPlanDetailService; import com.ruoyi.device.service.DeviceCalibrationPlanService; import com.ruoyi.framework.exception.ErrorException; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.util.Map; /** * <p> * è®¾å¤æ ¡å计å主表 å端æ§å¶å¨ * </p> * * @author æ±èéµ·éç½ç»ç§ææéå ¬å¸ * @since 2024-12-16 03:58:17 */ @Api(tags = "è®¾å¤æ ¡å计å") @AllArgsConstructor @RestController @RequestMapping("/deviceCalibrationPlan") public class DeviceCalibrationPlanController { private DeviceCalibrationPlanService deviceCalibrationPlanService; private DeviceCalibrationPlanDetailService deviceCalibrationPlanDetailService; /** * æ°å¢è®¾å¤æ ¡å计å * @return */ @ApiOperation(value = "æ°å¢è®¾å¤æ ¡å计å") @PostMapping("/addDeviceCalibrationPlan") public Result addDeviceCalibrationPlan(@RequestBody DeviceCalibrationPlanDto calibrationPlanDto){ return Result.success(deviceCalibrationPlanService.addDeviceCalibrationPlan(calibrationPlanDto)); } /** * ä¿®æ¹è®¾å¤æ ¡å计å * @param calibrationPlanDto è®¾å¤æ ¡å计å */ @ApiOperation("æ¹éä¿®æ¹è®¾å¤æ ¡å计å") @PostMapping("/updateDeviceCalibrationPlan") public Result updateDeviceCalibrationPlan(@RequestBody DeviceCalibrationPlanDto calibrationPlanDto) { return Result.success(deviceCalibrationPlanService.updateDeviceCalibrationPlan(calibrationPlanDto)); } /** * æ¥è¯¢è®¾å¤æ ¡å计å详æ */ @ApiOperation("æ¥è¯¢è®¾å¤æ ¡å计å详æ ") @GetMapping("/getDeviceCalibrationPlan") public Result<DeviceCalibrationPlanDto> getDeviceCalibrationPlan(Integer planId) { return Result.success(deviceCalibrationPlanService.getDeviceCalibrationPlan(planId)); } /** * å¯¼å ¥è®¾å¤æ ¡å计å * @return */ @ApiOperation(value = "å¯¼å ¥è®¾å¤æ ¡å计å") @PostMapping("/importDeviceCalibrationPlan") public Result importDeviceCalibrationPlan(MultipartFile file, String planYear){ return Result.success(deviceCalibrationPlanService.importDeviceCalibrationPlan(file, planYear)); } /** * è®¾å¤æ ¡å计åå é¤ * @return */ @ApiOperation(value = "è®¾å¤æ ¡å计åå é¤") @DeleteMapping("/delQualitySupervise") public Result delQualitySupervise(Integer planId){ return Result.success(deviceCalibrationPlanService.removeById(planId)); } /** * æäº¤æ¹å * @return */ @ApiOperation(value = "æäº¤æ¹å") @PostMapping("/submiatRatifyDeviceCalibrationPlan") public Result submiatRatifyDeviceCalibrationPlan(@RequestBody DeviceCalibrationPlan DeviceCalibrationPlan){ return Result.success(deviceCalibrationPlanService.submiatRatifyDeviceCalibrationPlan(DeviceCalibrationPlan)); } /** * è®¾å¤æ ¡åè®¡åæ¹å * @return */ @ApiOperation(value = "è®¾å¤æ ¡åè®¡åæ¹å") @PostMapping("/ratifyDeviceCalibrationPlan") public Result ratifyDeviceCalibrationPlan(@RequestBody DeviceCalibrationPlan DeviceCalibrationPlan){ return Result.success(deviceCalibrationPlanService.ratifyDeviceCalibrationPlan(DeviceCalibrationPlan)); } /** * è®¾å¤æ ¡å计åå表 * @return */ @ApiOperation(value = "è®¾å¤æ ¡å计åå表") @GetMapping("/pageDeviceCalibrationPlan") public Result<IPage<DeviceCalibrationPlanDto>> pageDeviceCalibrationPlan(Page page, DeviceCalibrationPlan DeviceCalibrationPlan) throws Exception { return Result.success(deviceCalibrationPlanService.pageDeviceCalibrationPlan(page, DeviceCalibrationPlan)); } /** * è®¾å¤æ ¡å计å详æ å表 * @return */ @ApiOperation(value = "è®¾å¤æ ¡å计å详æ å表") @PostMapping("/pageDeviceCalibrationPlanDetail") public Result<IPage<DeviceCalibrationPlanDetail>> pageDeviceCalibrationPlanDetail(Page page, DeviceCalibrationPlanDetail deviceCalibrationPlanDetails) { return Result.success(deviceCalibrationPlanService.pageDeviceCalibrationPlanDetail(page, deviceCalibrationPlanDetails)); } /** * æ°å¢è®¾å¤æ ¡å计å详æ * @return */ @ApiOperation(value = "æ°å¢è®¾å¤æ ¡å计å详æ ") @PostMapping("/addDeviceCalibrationPlanDetail") public Result addDeviceCalibrationPlanDetail(@RequestBody DeviceCalibrationPlanDetail deviceCalibrationPlanDetail){ if (deviceCalibrationPlanDetail.getPlanId() == null) { throw new ErrorException("缺å°è®¾å¤æ ¡å计å主表id"); } return Result.success(deviceCalibrationPlanDetailService.save(deviceCalibrationPlanDetail)); } /** * ä¿®æ¹è®¾å¤æ ¡å计å详æ * @return */ @ApiOperation(value = "ä¿®æ¹è®¾å¤æ ¡å计å详æ ") @PostMapping("/updateDeviceCalibrationPlanDetail") public Result updateDeviceCalibrationPlanDetail(@RequestBody DeviceCalibrationPlanDetail deviceCalibrationPlanDetail){ return Result.success(deviceCalibrationPlanDetailService.updateById(deviceCalibrationPlanDetail)); } /** * å é¤è®¾å¤æ ¡å计å详æ * @return */ @ApiOperation(value = "å é¤è®¾å¤æ ¡å计å详æ ") @GetMapping("/delDeviceCalibrationPlanDetail") public Result delDeviceCalibrationPlanDetail(Integer planDetailsId){ return Result.success(deviceCalibrationPlanDetailService.removeById(planDetailsId)); } /** * 导åºè®¾å¤æ ¡å计å * @return */ @ApiOperation(value = "导åºè®¾å¤æ ¡å计å") @GetMapping("/exportDeviceCalibrationPlanDetail") public void exportDeviceCalibrationPlanDetail(Integer planId, HttpServletResponse response){ deviceCalibrationPlanService.exportDeviceCalibrationPlanDetail(planId, response); } } cnas-device/src/main/java/com/ruoyi/device/dto/DeviceCalibrationPlanDetailDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,21 @@ package com.ruoyi.device.dto; import com.ruoyi.device.pojo.DeviceCalibrationPlanDetail; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * Author: yuan * Date: 2024-12-17 ææäº 10:05:08 * Description: */ @Data public class DeviceCalibrationPlanDetailDto extends DeviceCalibrationPlanDetail { @ApiModelProperty("åºå·") private Integer index; @ApiModelProperty("æè¿æ£å®æ¶é´Str") private String lastDateStr; @ApiModelProperty("æ¬å¹´è®¡åæ ¡åæ¶é´Str") private String planDateStr; } cnas-device/src/main/java/com/ruoyi/device/dto/DeviceCalibrationPlanDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,31 @@ package com.ruoyi.device.dto; import com.ruoyi.device.pojo.DeviceCalibrationPlan; import com.ruoyi.device.pojo.DeviceCalibrationPlanDetail; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; /** * @Author zhuo * @Date 2024/12/16 */ @Data public class DeviceCalibrationPlanDto extends DeviceCalibrationPlan { @ApiModelProperty("ç¼å¶äºº") private String writeName; @ApiModelProperty("æ¹å人") private String ratifyName; @ApiModelProperty("ç¼å¶æ¶é´") private String writeTimeStr; @ApiModelProperty("æ¹åæ¶é´") private String ratifyTimeStr; @ApiModelProperty("æ ¡å计å详æ ") private List<DeviceCalibrationPlanDetail> calibrationPlanDetailList; } cnas-device/src/main/java/com/ruoyi/device/excel/upload/DeviceCalibrationPlanDetailUpload.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,36 @@ package com.ruoyi.device.excel.upload; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @Author zhuo * @Date 2024/12/20 */ @Data public class DeviceCalibrationPlanDetailUpload { @ApiModelProperty("设å¤åç§°ååå·") private String deviceName; @ApiModelProperty("è®¾å¤æ°é") private String deviceAmount; @ApiModelProperty("仪å¨ç¼å·") private String deviceNumber; @ApiModelProperty("æ£å®åä½") private String verificationUnit; @ApiModelProperty("æ£å®å¨æ") private String verificationCycles; @ApiModelProperty("æè¿æ£å®æ¶é´") private String lastDate; @ApiModelProperty("æ¬å¹´è®¡åæ ¡åæ¶é´") private String planDate; @ApiModelProperty("夿³¨") private String remark; } cnas-device/src/main/java/com/ruoyi/device/excel/upload/DeviceExaminePlanUpload.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,37 @@ package com.ruoyi.device.excel.upload; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @Author zhuo * @Date 2024/12/20 */ @Data public class DeviceExaminePlanUpload { @ApiModelProperty("设å¤ç¼å·") private String deviceNumber; @ApiModelProperty("计ååç§°") private String deviceName; @ApiModelProperty("æ ¸æ¥æ¶é´") private String checkTime; @ApiModelProperty("æ ¸æ¥ææ ") private String checkIndex; @ApiModelProperty("æ ¸æ¥æ¹æ³") private String checkMethod; @ApiModelProperty("ç»æå¦ä½å¤å®") private String howResults; @ApiModelProperty("æ ¸æ¥è´£ä»»äºº") private String checkChargerUser; @ApiModelProperty("夿³¨") private String remark; } cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceCalibrationPlanDetailMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,27 @@ package com.ruoyi.device.mapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.device.pojo.DeviceCalibrationPlanDetail; import org.apache.ibatis.annotations.Param; /** * <p> * è®¾å¤æ ¡å计å详æ 表 Mapper æ¥å£ * </p> * * @author æ±èéµ·éç½ç»ç§ææéå ¬å¸ * @since 2024-12-16 03:58:29 */ public interface DeviceCalibrationPlanDetailMapper extends BaseMapper<DeviceCalibrationPlanDetail> { /** * è®¾å¤æ ¡å计å详æ å表 * @param page * @param ew * @return */ IPage<DeviceCalibrationPlanDetail> pageDeviceCalibrationPlanDetail(Page page, @Param("ew") QueryWrapper<DeviceCalibrationPlanDetail> ew); } cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceCalibrationPlanMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,29 @@ package com.ruoyi.device.mapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.device.dto.DeviceCalibrationPlanDto; import com.ruoyi.device.pojo.DeviceCalibrationPlan; import org.apache.ibatis.annotations.Param; /** * <p> * è®¾å¤æ ¡å计å主表 Mapper æ¥å£ * </p> * * @author æ±èéµ·éç½ç»ç§ææéå ¬å¸ * @since 2024-12-16 03:58:17 */ public interface DeviceCalibrationPlanMapper extends BaseMapper<DeviceCalibrationPlan> { /** * è®¾å¤æ ¡å计åå表 * @param page * @param ew * @return */ IPage<DeviceCalibrationPlanDto> pageDeviceCalibrationPlan(Page page, @Param("ew") QueryWrapper<DeviceCalibrationPlan> ew); } cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceCalibrationPlan.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,67 @@ package com.ruoyi.device.pojo; import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import java.time.LocalDateTime; /** * <p> * è®¾å¤æ ¡å计å主表 * </p> * * @author æ±èéµ·éç½ç»ç§ææéå ¬å¸ * @since 2024-12-16 03:58:17 */ @Getter @Setter @TableName("device_calibration_plan") @ApiModel(value = "DeviceCalibrationPlan对象", description = "è®¾å¤æ ¡å计å主表") public class DeviceCalibrationPlan{ @TableId(value = "plan_id", type = IdType.AUTO) private Integer planId; @ApiModelProperty("计ååç§°") private String planName; @ApiModelProperty("计å年份") private String planYear; @ApiModelProperty("ç¼å¶äºº") private Integer writeUserId; @ApiModelProperty("ç¼å¶æ¶é´") private LocalDateTime writeTime; @ApiModelProperty("æ¹å人") private Integer ratifyUserId; @ApiModelProperty("æ¹åæ¶é´") private LocalDateTime ratifyTime; @ApiModelProperty("æ¹åç¶æ,0 ä¸éè¿, 1 éè¿") private Integer ratifyStatus; @ApiModelProperty("æ¹åä¿¡æ¯") private String ratifyRemark; @ApiModelProperty("å建人") @TableField(fill = FieldFill.INSERT) private Integer createUser; @ApiModelProperty("å建æ¶é´") @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; @ApiModelProperty("ä¿®æ¹äºº") @TableField(fill = FieldFill.INSERT_UPDATE) private Integer updateUser; @ApiModelProperty("ä¿®æ¹æ¶é´") @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; } cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceCalibrationPlanDetail.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,74 @@ package com.ruoyi.device.pojo; import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import java.time.LocalDate; import java.time.LocalDateTime; /** * <p> * è®¾å¤æ ¡å计å详æ 表 * </p> * * @author æ±èéµ·éç½ç»ç§ææéå ¬å¸ * @since 2024-12-16 03:58:29 */ @Getter @Setter @TableName("device_calibration_plan_detail") @ApiModel(value = "DeviceCalibrationPlanDetail对象", description = "è®¾å¤æ ¡å计å详æ 表") public class DeviceCalibrationPlanDetail{ @TableId(value = "plan_detail_id", type = IdType.AUTO) private Integer planDetailId; @ApiModelProperty("计å主表id") private Integer planId; @ApiModelProperty("设å¤id") private Integer deviceId; @ApiModelProperty("设å¤åç§°ååå·") private String deviceName; @ApiModelProperty("è®¾å¤æ°é") private String deviceAmount; @ApiModelProperty("仪å¨ç¼å·") private String deviceNumber; @ApiModelProperty("æ£å®åä½") private String verificationUnit; @ApiModelProperty("æ£å®å¨æ") private String verificationCycles; @ApiModelProperty("æè¿æ£å®æ¶é´") private LocalDate lastDate; @ApiModelProperty("æ¬å¹´è®¡åæ ¡åæ¶é´") private LocalDate planDate; @ApiModelProperty("夿³¨") private String remark; @ApiModelProperty("å建人") @TableField(fill = FieldFill.INSERT) private Integer createUser; @ApiModelProperty("å建æ¶é´") @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; @ApiModelProperty("ä¿®æ¹äºº") @TableField(fill = FieldFill.INSERT_UPDATE) private Integer updateUser; @ApiModelProperty("ä¿®æ¹æ¶é´") @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; } cnas-device/src/main/java/com/ruoyi/device/service/DeviceCalibrationPlanDetailService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,16 @@ package com.ruoyi.device.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.device.pojo.DeviceCalibrationPlanDetail; /** * <p> * è®¾å¤æ ¡å计å详æ 表 æå¡ç±» * </p> * * @author æ±èéµ·éç½ç»ç§ææéå ¬å¸ * @since 2024-12-16 03:58:29 */ public interface DeviceCalibrationPlanDetailService extends IService<DeviceCalibrationPlanDetail> { } cnas-device/src/main/java/com/ruoyi/device/service/DeviceCalibrationPlanService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,89 @@ package com.ruoyi.device.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.device.dto.DeviceCalibrationPlanDto; import com.ruoyi.device.pojo.DeviceCalibrationPlan; import com.ruoyi.device.pojo.DeviceCalibrationPlanDetail; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; /** * <p> * è®¾å¤æ ¡å计å主表 æå¡ç±» * </p> * * @author æ±èéµ·éç½ç»ç§ææéå ¬å¸ * @since 2024-12-16 03:58:17 */ public interface DeviceCalibrationPlanService extends IService<DeviceCalibrationPlan> { /** * æ°å¢è®¾å¤æ ¡å计å * @param calibrationPlanDto * @return */ boolean addDeviceCalibrationPlan(DeviceCalibrationPlanDto calibrationPlanDto); /** * å¯¼å ¥è®¾å¤æ ¡å计å * @param file * @return */ boolean importDeviceCalibrationPlan(MultipartFile file, String planYear); /** * æäº¤æ¹å * @param deviceCalibrationPlan * @return */ boolean submiatRatifyDeviceCalibrationPlan(DeviceCalibrationPlan deviceCalibrationPlan); /** * è®¾å¤æ ¡åè®¡åæ¹å * @param DeviceCalibrationPlan * @return */ boolean ratifyDeviceCalibrationPlan(DeviceCalibrationPlan DeviceCalibrationPlan); /** * è®¾å¤æ ¡å计åå表 * @param page * @param DeviceCalibrationPlan * @return */ IPage<DeviceCalibrationPlanDto> pageDeviceCalibrationPlan(Page page, DeviceCalibrationPlan deviceCalibrationPlan); /** * è®¾å¤æ ¡å计å详æ å表 * @param page * @param DeviceCalibrationPlanDetails * @return */ IPage<DeviceCalibrationPlanDetail> pageDeviceCalibrationPlanDetail(Page page, DeviceCalibrationPlanDetail deviceCalibrationPlanDetails); /** * 导åºè®¾å¤æ ¡å计å * * @param DeviceCalibrationPlanId * @param response */ void exportDeviceCalibrationPlanDetail(Integer DeviceCalibrationPlanId, HttpServletResponse response); /** * æ¹éç¼è¾è®¾å¤æ ¡å详æ * @param calibrationPlanDto * @return */ boolean updateDeviceCalibrationPlan(DeviceCalibrationPlanDto calibrationPlanDto); /** * æ¥è¯¢è®¾å¤æ ¡å详æ * @param planId * @return */ DeviceCalibrationPlanDto getDeviceCalibrationPlan(Integer planId); } cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceCalibrationPlanDetailServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,20 @@ package com.ruoyi.device.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.device.mapper.DeviceCalibrationPlanDetailMapper; import com.ruoyi.device.pojo.DeviceCalibrationPlanDetail; import com.ruoyi.device.service.DeviceCalibrationPlanDetailService; import org.springframework.stereotype.Service; /** * <p> * è®¾å¤æ ¡å计å详æ 表 æå¡å®ç°ç±» * </p> * * @author æ±èéµ·éç½ç»ç§ææéå ¬å¸ * @since 2024-12-16 03:58:29 */ @Service public class DeviceCalibrationPlanDetailServiceImpl extends ServiceImpl<DeviceCalibrationPlanDetailMapper, DeviceCalibrationPlanDetail> implements DeviceCalibrationPlanDetailService { } cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceCalibrationPlanServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,353 @@ package com.ruoyi.device.service.impl; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.deepoove.poi.XWPFTemplate; import com.deepoove.poi.config.Configure; import com.ruoyi.common.core.domain.entity.InformationNotification; import com.ruoyi.common.core.domain.entity.User; import com.ruoyi.common.utils.QueryWrappers; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.WxCpUtils; import com.ruoyi.device.dto.DeviceCalibrationPlanDetailDto; import com.ruoyi.device.dto.DeviceCalibrationPlanDto; import com.ruoyi.device.excel.upload.DeviceCalibrationPlanDetailUpload; import com.ruoyi.device.mapper.DeviceCalibrationPlanDetailMapper; import com.ruoyi.device.mapper.DeviceCalibrationPlanMapper; import com.ruoyi.device.pojo.DeviceCalibrationPlan; import com.ruoyi.device.pojo.DeviceCalibrationPlanDetail; import com.ruoyi.device.service.DeviceCalibrationPlanDetailService; import com.ruoyi.device.service.DeviceCalibrationPlanService; import com.ruoyi.inspect.util.HackLoopTableRenderPolicy; import com.ruoyi.inspect.util.UserUtils; import com.ruoyi.system.mapper.UserMapper; import com.ruoyi.system.service.InformationNotificationService; import org.springframework.beans.BeanUtils; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; /** * <p> * è®¾å¤æ ¡å计å主表 æå¡å®ç°ç±» * </p> * * @author æ±èéµ·éç½ç»ç§ææéå ¬å¸ * @since 2024-12-16 03:58:17 */ @Service @Transactional(rollbackFor = Exception.class) public class DeviceCalibrationPlanServiceImpl extends ServiceImpl<DeviceCalibrationPlanMapper, DeviceCalibrationPlan> implements DeviceCalibrationPlanService { @Resource private DeviceCalibrationPlanDetailMapper deviceCalibrationPlanDetailMapper; @Resource private DeviceCalibrationPlanDetailService deviceCalibrationPlanDetailService; @Resource private ThreadPoolTaskExecutor threadPoolTaskExecutor; @Resource private InformationNotificationService informationNotificationService; @Resource private UserMapper userMapper; /** * æ°å¢è®¾å¤æ ¡å计å * @param calibrationPlanDto * @return */ @Override public boolean addDeviceCalibrationPlan(DeviceCalibrationPlanDto calibrationPlanDto) { // å½åç»å½ç¨æ· Integer userId = SecurityUtils.getUserId().intValue(); // ç¼å¶æ¥æ calibrationPlanDto.setWriteUserId(userId); calibrationPlanDto.setWriteTime(LocalDateTime.now()); baseMapper.insert(calibrationPlanDto); // æ·»å 详æ if (CollectionUtils.isNotEmpty(calibrationPlanDto.getCalibrationPlanDetailList())) { for (DeviceCalibrationPlanDetail calibrationPlanDetail : calibrationPlanDto.getCalibrationPlanDetailList()) { calibrationPlanDetail.setPlanId(calibrationPlanDto.getPlanId()); } deviceCalibrationPlanDetailService.saveBatch(calibrationPlanDto.getCalibrationPlanDetailList()); } return true; } /** * å¯¼å ¥è®¾å¤æ ¡å计å * @param file * @return */ @Override public boolean importDeviceCalibrationPlan(MultipartFile file, String planYear) { // å½åç»å½ç¨æ· Integer userId = SecurityUtils.getUserId().intValue(); // æä»¶åç§° String fileName = file.getOriginalFilename().substring(0, file.getOriginalFilename().lastIndexOf(".")); DeviceCalibrationPlan calibrationPlan = new DeviceCalibrationPlan(); calibrationPlan.setPlanName(fileName); calibrationPlan.setPlanYear(planYear); calibrationPlan.setWriteUserId(userId); calibrationPlan.setWriteTime(LocalDateTime.now()); baseMapper.insert(calibrationPlan); List<DeviceCalibrationPlanDetail> detailsUploadList = new ArrayList<>(); // å¯¼å ¥éä»¶å 容 try { // excelè§£æ EasyExcel.read(file.getInputStream(), DeviceCalibrationPlanDetailUpload.class, new AnalysisEventListener<DeviceCalibrationPlanDetailUpload>() { @Override public void invoke(DeviceCalibrationPlanDetailUpload detailsUpload, AnalysisContext analysisContext) { // 夿æ¯å¦ä¸ºç©º if (StringUtils.isNotBlank(detailsUpload.getDeviceName()) && StringUtils.isNotBlank(detailsUpload.getDeviceNumber())) { // 对象å¤å¶ DeviceCalibrationPlanDetail calibrationPlanDetail = new DeviceCalibrationPlanDetail(); BeanUtils.copyProperties(detailsUpload, calibrationPlanDetail); // æ ¼å¼è¯æè¿æ£å®æ¶é´åæ¬å¹´è®¡åæ ¡åæ¶é´ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.MM.dd"); calibrationPlanDetail.setLastDate(LocalDate.parse(detailsUpload.getLastDate(), formatter)); calibrationPlanDetail.setPlanDate(LocalDate.parse(detailsUpload.getLastDate(), formatter)); calibrationPlanDetail.setPlanId(calibrationPlan.getPlanId()); detailsUploadList.add(calibrationPlanDetail); } } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { } }).sheet().doRead(); deviceCalibrationPlanDetailService.saveBatch(detailsUploadList); } catch (IOException e) { throw new RuntimeException(e); } return true; } /** * æäº¤æ¹å * @param deviceCalibrationPlan * @return */ @Override public boolean submiatRatifyDeviceCalibrationPlan(DeviceCalibrationPlan deviceCalibrationPlan) { baseMapper.update(null, Wrappers.<DeviceCalibrationPlan>lambdaUpdate() .eq(DeviceCalibrationPlan::getPlanId, deviceCalibrationPlan.getPlanId()) .set(DeviceCalibrationPlan::getRatifyUserId, deviceCalibrationPlan.getRatifyUserId()) .set(DeviceCalibrationPlan::getRatifyRemark, null) .set(DeviceCalibrationPlan::getRatifyStatus, null) .set(DeviceCalibrationPlan::getRatifyTime, null) ); DeviceCalibrationPlan calibrationPlan = baseMapper.selectById(deviceCalibrationPlan.getPlanId()); // åéæ¶æ¯ Integer userId = SecurityUtils.getUserId().intValue(); User user = userMapper.selectById(userId); // æ¶æ¯åé InformationNotification info = new InformationNotification(); // åé人 info.setCreateUser(user.getName()); info.setMessageType("6"); info.setTheme("CNASè®¾å¤æ ¡åè®¡åæ¹åéç¥"); info.setContent(calibrationPlan.getPlanName() + "çè®¾å¤æ ¡å计åå¾ æ¹å"); info.setSenderId(userId); // æ¥æ¶äºº info.setConsigneeId(deviceCalibrationPlan.getRatifyUserId()); info.setJumpPath("a6-device"); informationNotificationService.addInformationNotification(info); // åéä¼ä¸å¾®ä¿¡éç¥ threadPoolTaskExecutor.execute(() -> { // æ¥è¯¢æ¥æ¶äºº User personnel = userMapper.selectById(deviceCalibrationPlan.getPlanId()); String message = ""; message += "CNASè®¾å¤æ ¡åè®¡åæ¹åéç¥"; message += "\n请å»èµæºç®¡ç-设å¤ä¸å±ç®å½-è®¾å¤æ ¡å计åå¡«å"; message += "\n" + calibrationPlan.getPlanName() + "çæ ¡å计åå¾ æ¹å"; //åéä¼ä¸å¾®ä¿¡æ¶æ¯éç¥ try { WxCpUtils.inform(personnel.getAccount(), message, null); } catch (Exception e) { throw new RuntimeException(e); } }); return true; } /** * è®¾å¤æ ¡åè®¡åæ¹å * @param deviceCalibrationPlan * @return */ @Override public boolean ratifyDeviceCalibrationPlan(DeviceCalibrationPlan deviceCalibrationPlan) { baseMapper.update(null, Wrappers.<DeviceCalibrationPlan>lambdaUpdate() .eq(DeviceCalibrationPlan::getPlanId, deviceCalibrationPlan.getPlanId()) .set(DeviceCalibrationPlan::getRatifyRemark, deviceCalibrationPlan.getRatifyRemark()) .set(DeviceCalibrationPlan::getRatifyStatus, deviceCalibrationPlan.getRatifyStatus()) .set(DeviceCalibrationPlan::getRatifyTime, LocalDateTime.now()) ); return true; } /** * è®¾å¤æ ¡å计åå表 * @param page * @param deviceCalibrationPlan * @return */ @Override public IPage<DeviceCalibrationPlanDto> pageDeviceCalibrationPlan(Page page, DeviceCalibrationPlan deviceCalibrationPlan) { return baseMapper.pageDeviceCalibrationPlan(page, QueryWrappers.queryWrappers(deviceCalibrationPlan)); } /** * è®¾å¤æ ¡å计å详æ å表 * @param page * @param deviceCalibrationPlanDetails * @return */ @Override public IPage<DeviceCalibrationPlanDetail> pageDeviceCalibrationPlanDetail(Page page, DeviceCalibrationPlanDetail deviceCalibrationPlanDetails) { if (deviceCalibrationPlanDetails.getPlanId() == null) { return new Page(); } return deviceCalibrationPlanDetailMapper.pageDeviceCalibrationPlanDetail(page, QueryWrappers.queryWrappers(deviceCalibrationPlanDetails)); } /** * 导åºè®¾å¤æ ¡å计å * @param deviceCalibrationPlanId * @param response */ @Override public void exportDeviceCalibrationPlanDetail(Integer deviceCalibrationPlanId, HttpServletResponse response) { // æ¥è¯¢è®¾å¤æ ¡å计å DeviceCalibrationPlan deviceCalibrationPlan = baseMapper.selectById(deviceCalibrationPlanId); DeviceCalibrationPlanDto deviceCalibrationPlanDto = new DeviceCalibrationPlanDto(); BeanUtils.copyProperties(deviceCalibrationPlan, deviceCalibrationPlanDto); // 设置ç¼å¶åæ¹åæ¶é´æ ¼å¼ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); deviceCalibrationPlanDto.setWriteTimeStr(deviceCalibrationPlan.getWriteTime() == null ? null : deviceCalibrationPlan.getWriteTime().format(formatter)); deviceCalibrationPlanDto.setRatifyTimeStr(deviceCalibrationPlan.getRatifyTime() == null ? null : deviceCalibrationPlan.getRatifyTime().format(formatter)); // æ¥è¯¢è®¾å¤æ ¡å计å详æ List<DeviceCalibrationPlanDetail> deviceCalibrationPlanDetailList = deviceCalibrationPlanDetailMapper.selectList(Wrappers.<DeviceCalibrationPlanDetail>lambdaQuery().eq(DeviceCalibrationPlanDetail::getPlanId, deviceCalibrationPlanId)); // 设置åºå· å æ¶é´ ArrayList<DeviceCalibrationPlanDetailDto> deviceCalibrationPlanDetailDtoList = new ArrayList<>(); deviceCalibrationPlanDetailList.forEach(deviceCalibrationPlanDetail -> { DeviceCalibrationPlanDetailDto deviceCalibrationPlanDetailDto = new DeviceCalibrationPlanDetailDto(); BeanUtils.copyProperties(deviceCalibrationPlanDetail, deviceCalibrationPlanDetailDto); deviceCalibrationPlanDetailDto.setIndex(deviceCalibrationPlanDetailList.indexOf(deviceCalibrationPlanDetail) + 1); deviceCalibrationPlanDetailDto.setLastDateStr((deviceCalibrationPlanDetail.getLastDate().format(formatter))); deviceCalibrationPlanDetailDto.setPlanDateStr((deviceCalibrationPlanDetail.getPlanDate().format(formatter))); deviceCalibrationPlanDetailDtoList.add(deviceCalibrationPlanDetailDto); }); // è·åè·¯å¾ InputStream inputStream = this.getClass().getResourceAsStream("/static/word/device-calibration-plan.docx"); Configure configure = Configure.builder() .bind("deviceCalibrationPlanDetailDtoList", new HackLoopTableRenderPolicy()) .build(); XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render( new HashMap<String, Object>() {{ put("deviceCalibrationPlan", deviceCalibrationPlanDto); put("deviceCalibrationPlanDetailDtoList", deviceCalibrationPlanDetailDtoList); //è·åç¼å¶äººçç¾åå°å put("organizationUrl", UserUtils.getFinalUserSignatureUrl(deviceCalibrationPlan.getRatifyUserId())); //è·åæ¹å人çç¾åå°å put("approvedUrl", UserUtils.getFinalUserSignatureUrl(deviceCalibrationPlan.getWriteUserId())); }}); try { response.setContentType("application/msword"); String fileName = URLEncoder.encode( "è®¾å¤æ ¡å计å表", "UTF-8"); response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".docx"); OutputStream os = response.getOutputStream(); template.write(os); os.flush(); os.close(); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException("导åºå¤±è´¥"); } } /** * æ¹éç¼è¾è®¾å¤æ ¡å * @param calibrationPlanDto * @return */ @Override public boolean updateDeviceCalibrationPlan(DeviceCalibrationPlanDto calibrationPlanDto) { // å½åç»å½ç¨æ· Integer userId = SecurityUtils.getUserId().intValue(); // ç¼å¶æ¥æ calibrationPlanDto.setWriteUserId(userId); calibrationPlanDto.setWriteTime(LocalDateTime.now()); baseMapper.updateById(calibrationPlanDto); // å é¤åæ¬ç详æ deviceCalibrationPlanDetailService.remove(Wrappers.<DeviceCalibrationPlanDetail>lambdaQuery().eq(DeviceCalibrationPlanDetail::getPlanId, calibrationPlanDto.getPlanId())); // æ·»å 详æ if (CollectionUtils.isNotEmpty(calibrationPlanDto.getCalibrationPlanDetailList())) { for (DeviceCalibrationPlanDetail calibrationPlanDetail : calibrationPlanDto.getCalibrationPlanDetailList()) { calibrationPlanDetail.setPlanId(calibrationPlanDto.getPlanId()); } deviceCalibrationPlanDetailService.saveBatch(calibrationPlanDto.getCalibrationPlanDetailList()); } return true; } /** * æ¥è¯¢è®¾å¤æ ¡å详æ * @param planId * @return */ @Override public DeviceCalibrationPlanDto getDeviceCalibrationPlan(Integer planId) { DeviceCalibrationPlan calibrationPlan = baseMapper.selectById(planId); DeviceCalibrationPlanDto deviceCalibrationPlanDto = new DeviceCalibrationPlanDto(); BeanUtils.copyProperties(calibrationPlan, deviceCalibrationPlanDto); // æ¥è¯¢è¯¦æ List<DeviceCalibrationPlanDetail> list = deviceCalibrationPlanDetailService.list(Wrappers.<DeviceCalibrationPlanDetail>lambdaQuery() .eq(DeviceCalibrationPlanDetail::getPlanId, planId) .orderByAsc(DeviceCalibrationPlanDetail::getPlanDate)); deviceCalibrationPlanDto.setCalibrationPlanDetailList(list); return deviceCalibrationPlanDto; } } cnas-device/src/main/resources/mapper/DeviceCalibrationPlanDetailMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ <?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.device.mapper.DeviceCalibrationPlanDetailMapper"> <!-- è®¾å¤æ ¡å计å详æ å表 --> <select id="pageDeviceCalibrationPlanDetail" resultType="com.ruoyi.device.pojo.DeviceCalibrationPlanDetail"> select * from ( select * from device_calibration_plan_detail order by plan_date asc ) a <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''"> ${ew.customSqlSegment} </if> </select> </mapper> cnas-device/src/main/resources/mapper/DeviceCalibrationPlanMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,20 @@ <?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.device.mapper.DeviceCalibrationPlanMapper"> <!-- è®¾å¤æ ¡å计åå表 --> <select id="pageDeviceCalibrationPlan" resultType="com.ruoyi.device.dto.DeviceCalibrationPlanDto"> select * from (select cqm.*, u1.name write_name, u3.name ratify_name from device_calibration_plan cqm left join user u1 on u1.id = cqm.write_user_id left join user u3 on u3.id = cqm.ratify_user_id order by cqm.create_time desc) a <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''"> ${ew.customSqlSegment} </if> </select> </mapper> inspect-server/src/main/java/com/ruoyi/inspect/util/UserUtils.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,90 @@ package com.ruoyi.inspect.util; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.deepoove.poi.data.PictureRenderData; import com.deepoove.poi.data.Pictures; import com.ruoyi.common.core.domain.entity.User; import com.ruoyi.framework.exception.ErrorException; import com.ruoyi.system.mapper.UserMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; /** * Author: yuan * Date: 2024-12-17 ææäº 10:35:50 * Description: Userå·¥å ·ç±» */ @Component public class UserUtils { private static UserMapper userMapper; private static String imgUrl; @Autowired public void setUserMapper(UserMapper userMapper) { UserUtils.userMapper = userMapper; } @Autowired public void setImgUrl(@Value("${file.path}") String imgUrl) { UserUtils.imgUrl = imgUrl; } /** * éè¿äººåidè·åç¨æ·ç¾åå°å * @param userId 人åid * @return ç¨æ·ç¾åå°å */ public static String getUserSignatureUrl(Integer userId) { String userSignatureUrl = null; if (userId != null) { userSignatureUrl = userMapper.selectOne(Wrappers.<User>lambdaQuery() .eq(User::getId, userId)) .getSignatureUrl(); if (StringUtils.isBlank(userSignatureUrl)) { throw new ErrorException("æ¾ä¸å°è¯¥äººåç¾å"); } return imgUrl + "\\" + userSignatureUrl; } else { return null; } } /** * éè¿äººåidè·å渲æWordç¨æ·ç¾å对象 * @param userId 人åid * @return ç¨æ·ç¾å对象 or null */ public static PictureRenderData getFinalUserSignatureUrl(Integer userId) { String userSignatureUrl = null; if (userId != null) { userSignatureUrl = userMapper.selectById(userId) .getSignatureUrl(); if (StringUtils.isBlank(userSignatureUrl)) { throw new ErrorException("æ¾ä¸å°è¯¥äººåç¾å"); } } return StringUtils.isNotBlank(userSignatureUrl) ? Pictures.ofLocal(imgUrl + "/" + userSignatureUrl).create() : null; } /** * éè¿ååè·å渲æWordç¨æ·ç¾å对象 * @param userName 人ååå * @return ç¨æ·ç¾å对象 or null */ public static PictureRenderData getFinalUserSignatureUrl(String userName) { String userSignatureUrl = null; if (userName != null) { userSignatureUrl = userMapper.selectOne(Wrappers.<User>lambdaQuery() .eq(User::getName, userName)) .getSignatureUrl(); if (StringUtils.isBlank(userSignatureUrl)) { throw new ErrorException("æ¾ä¸å°è¯¥äººåç¾å"); } } return StringUtils.isNotBlank(userSignatureUrl) ? Pictures.ofLocal(imgUrl + "/" + userSignatureUrl).create() : null; } } inspect-server/src/main/java/com/ruoyi/inspect/util/XWPFDocumentUtils.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,119 @@ package com.ruoyi.inspect.util; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import org.apache.poi.xwpf.usermodel.*; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge; import java.util.*; /** * @Author zhuo * @Date 2024/11/16 */ public class XWPFDocumentUtils { public static void updateMergeByDocument(XWPFDocument document) { // å¤çåå¹¶åå æ ¼çé®é¢ List<XWPFTable> xwpfTables = document.getTables(); for (int i = 0; i < xwpfTables.size(); i++) { Set<String> set1 = new HashSet<>(); Map<String, Map<String, Integer>> maps = new HashMap<>(); for (int j = 0; j < xwpfTables.get(i).getRows().size(); j++) { for (int k = 0; k < xwpfTables.get(i).getRows().get(j).getTableCells().size(); k++) { if (xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().contains("â")) { String[] split = xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().split("â"); if (set1.add(split[1])) { Map<String, Integer> map = new HashMap<>(); map.put("sr", j); map.put("sc", k); map.put("er", j + 0); map.put("ec", k + 0); maps.put(split[1], map); } else { Map<String, Integer> map1 = maps.get(split[1]); if (j == map1.get("sr")) { map1.put("ec", map1.get("ec") + 1); } else if (k == map1.get("sc")) { map1.put("er", map1.get("er") + 1); } } String str = xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().split("â")[0]; xwpfTables.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0); xwpfTables.get(i).getRows().get(j).getTableCells().get(k).setText(str); xwpfTables.get(i).getRows().get(j).getTableCells().get(k).setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER); xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getParagraphArray(0).setAlignment(ParagraphAlignment.CENTER); } } } // åå æ ¼æåº, é¿å æ ¼å¼éä¹± List<Map.Entry<String, Map<String, Integer>>> entries = new ArrayList<>(maps.entrySet()); entries.sort((o1, o2) -> o1.getValue().get("sc") - o2.getValue().get("sc")); // æç §é¡ºåºæ·»å è¿éå List<String> list = new ArrayList<>(); for (Map.Entry<String, Map<String, Integer>> entry : entries) { list.add(entry.getKey()); } for (int a = list.size() - 1; a >= 0; a--) { Map<String, Integer> v = maps.get(list.get(a)); for (int j = 0; j < v.get("er") - v.get("sr") + 1; j++) { if (v.get("ec") > v.get("sc")) { try { mergeCellsHorizontally(xwpfTables.get(i), v.get("sr") + j, v.get("sc"), v.get("ec")); } catch (Exception e) { } } } if (v.get("er") > v.get("sr")) { try { mergeCellsVertically(xwpfTables.get(i), v.get("sc"), v.get("sr"), v.get("er")); } catch (Exception e) { } } } } //å¤çä¸è±ææ¢è¡çé®é¢ List<XWPFTable> xwpfTables1 = document.getTables(); for (int i = 0; i < xwpfTables1.size(); i++) { for (int j = 0; j < xwpfTables1.get(i).getRows().size(); j++) { for (int k = 0; k < xwpfTables1.get(i).getRows().get(j).getTableCells().size(); k++) { if (xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText().contains("@")) { String text = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText(); String[] split = text.split("@"); xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0); XWPFParagraph xwpfParagraph = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).addParagraph(); XWPFRun run = xwpfParagraph.createRun(); run.setText(split[0]); if (ObjectUtils.isNotNull(split[1])) { run.addBreak(); run.setText(split[1]); } xwpfParagraph.setAlignment(ParagraphAlignment.CENTER); } } } } } // æ°´å¹³åå¹¶åå æ ¼ private static void mergeCellsHorizontally(XWPFTable table, int row, int fromCol, int toCol) { for (int i = fromCol; i <= toCol; i++) { if (i == fromCol) { table.getRow(row).getCell(i).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART); } else { table.getRow(row).getCell(i).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE); } } } // åç´åå¹¶åå æ ¼ private static void mergeCellsVertically(XWPFTable table, int col, int fromRow, int toRow) { for (int i = fromRow; i <= toRow; i++) { if (i == fromRow) { table.getRow(i).getCell(col).getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.RESTART); } else { table.getRow(i).getCell(col).getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.CONTINUE); } } } } ruoyi-admin/src/main/resources/application.yml
@@ -78,7 +78,7 @@ # æ°æ®åºç´¢å¼ database: 0 # å¯ç password: 123456 # password: 123456 # è¿æ¥è¶ æ¶æ¶é´ timeout: 10s lettuce: ruoyi-common/src/main/java/com/ruoyi/common/core/domain/TreeSelect.java
@@ -51,7 +51,7 @@ { this.id = menu.getMenuId(); this.label = menu.getMenuName(); this.isRersonalButton = menu.geIsRersonalButton(); this.isRersonalButton = menu.getIsRersonalButton(); this.children = menu.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList()); } ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java
@@ -239,7 +239,7 @@ this.icon = icon; } public Integer geIsRersonalButton() public Integer getIsRersonalButton() { return isRersonalButton; } @@ -282,7 +282,7 @@ .append("updateBy", getUpdateBy()) .append("updateTime", getUpdateTime()) .append("remark", getRemark()) .append("isRersonalButton", geIsRersonalButton()) .append("isRersonalButton", getIsRersonalButton()) .toString(); } }