Browse Source

update: 卫生自查模块逻辑修改

zhongwei
liwen 11 months ago
parent
commit
fd587bcf18
  1. 21
      hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/dto/HygieneExportDTO.java
  2. 42
      hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/dto/HygienePlanDTO.java
  3. 58
      hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/dto/HygieneRecordDTO.java
  4. 18
      hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/HygienePlanEntity.java
  5. 12
      hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/HygieneRecordEntity.java
  6. 34
      hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/HygieneZoneEntity.java
  7. 8
      hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/HygieneMonthVO.java
  8. 39
      hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/HygienePlanDetailVO.java
  9. 31
      hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/HygieneRecordDetailVO.java
  10. 34
      hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/HygieneRecordPageVO.java
  11. 41
      hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/HygieneZoneDetailVO.java
  12. 55
      hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/HygieneController.java
  13. 17
      hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/HygienePlanMapper.java
  14. 26
      hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/HygienePlanMapper.xml
  15. 12
      hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/HygieneRecordMapper.java
  16. 23
      hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/HygieneRecordMapper.xml
  17. 10
      hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/HygieneZoneMapper.java
  18. 4
      hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/HygieneZoneMapper.xml
  19. 33
      hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/IHygienePlanService.java
  20. 32
      hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/IHygieneRecordService.java
  21. 23
      hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/IHygieneZoneService.java
  22. 207
      hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/HygienePlanServiceImpl.java
  23. 148
      hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/HygieneRecordServiceImpl.java
  24. 42
      hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/HygieneZoneServiceImpl.java
  25. 31
      hzims-service/safeproduct/src/main/resources/db/1.0.1.sql

21
hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/dto/HygieneExportDTO.java

@ -1,21 +0,0 @@
package com.hnac.hzims.safeproduct.dto;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author liwen
* @date 2023-12-27
*/
@Data
@ExcelIgnoreUnannotated
@ApiModel(value = "卫生自查数据导出DTO类")
public class HygieneExportDTO {
@ApiModelProperty("卫生自查状态")
@ExcelProperty(value = "卫生自查状态", index = 8)
private String hygieneStatus;
}

42
hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/dto/HygienePlanDTO.java

@ -0,0 +1,42 @@
package com.hnac.hzims.safeproduct.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.hnac.hzims.safeproduct.entity.HygieneZoneEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;
/**
* @author liwen
* @date 2024-01-02
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "卫生自查计划DTO类")
public class HygienePlanDTO extends BaseEntity {
@ApiModelProperty("编码")
private String code;
@ApiModelProperty("标准总分值")
private Integer standardScore;
@NotNull
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty("计划开始时间")
private Date scheduledStartTime;
@NotNull
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty("计划结束时间")
private Date scheduledEndTime;
@ApiModelProperty("责任区数据列表")
private List<HygieneZoneEntity> zoneList;
}

58
hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/dto/HygieneRecordDTO.java

@ -0,0 +1,58 @@
package com.hnac.hzims.safeproduct.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.Date;
/**
* @author liwen
* @date 2024-01-02
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "卫生自查记录DTO类")
public class HygieneRecordDTO extends BaseEntity {
@ApiModelProperty("卫生自查计划id")
private Long hygienePlanId;
@NotNull
@Size(max = 50, message = "单位字段长度不能超过50")
@ApiModelProperty("单位")
private String unit;
@Size(max = 50, message = "编码字段长度不能超过50")
@ApiModelProperty("编码")
private String code;
@ApiModelProperty("实际开始时间")
private Date actualStartTime;
@ApiModelProperty("实际结束时间")
private Date actualEndTime;
@ApiModelProperty("检查人")
private String checkUser;
@ApiModelProperty("责任区id")
private String hygieneZoneIds;
@ApiModelProperty("检查结果")
private String checkResult;
@ApiModelProperty("综合评分")
private String comprehensiveScore;
@ApiModelProperty("周数")
private Integer weekNum;
@Size(max = 1000, message = "检查图片字段长度不能超过1000")
@ApiModelProperty("检查图片")
private String imgPath;
}

18
hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/HygienePlanEntity.java

@ -22,22 +22,8 @@ import java.util.Date;
@ApiModel(value = "卫生自查计划实体类")
public class HygienePlanEntity extends BaseEntity {
@NotNull
@Size(max = 50, message = "单位字段长度不能超过50")
@ApiModelProperty("单位")
private String unit;
@ApiModelProperty("责任区")
private String zone;
@ApiModelProperty("责任人")
private String principal;
@ApiModelProperty("检查项")
private String checkItem;
@ApiModelProperty("检查项分值")
private String checkItemScore;
@ApiModelProperty("编码")
private String code;
@ApiModelProperty("标准总分值")
private Integer standardScore;

12
hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/HygieneRecordEntity.java

@ -7,6 +7,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.Date;
@ -23,6 +24,11 @@ public class HygieneRecordEntity extends BaseEntity {
@ApiModelProperty("卫生自查计划id")
private Long hygienePlanId;
@NotNull
@Size(max = 50, message = "单位字段长度不能超过50")
@ApiModelProperty("单位")
private String unit;
@Size(max = 50, message = "编码字段长度不能超过50")
@ApiModelProperty("编码")
private String code;
@ -36,11 +42,15 @@ public class HygieneRecordEntity extends BaseEntity {
@ApiModelProperty("检查人")
private String checkUser;
@ApiModelProperty("责任区id")
private String hygieneZoneIds;
@ApiModelProperty("检查结果")
private String checkResult;
@NotNull
@ApiModelProperty("综合评分")
private Integer comprehensiveScore;
private String comprehensiveScore;
@ApiModelProperty("周数")
private Integer weekNum;

34
hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/entity/HygieneZoneEntity.java

@ -0,0 +1,34 @@
package com.hnac.hzims.safeproduct.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
/**
* @author liwen
* @date 2024-01-02
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("hzims_hygiene_zone")
@ApiModel(value = "卫生自查区域实体类")
public class HygieneZoneEntity extends BaseEntity {
@ApiModelProperty("卫生自查计划id")
private Long hygienePlanId;
@ApiModelProperty("责任区")
private String zone;
@ApiModelProperty("责任人")
private String principal;
@ApiModelProperty("检查项")
private String checkItem;
@ApiModelProperty("检查项分值")
private String checkItemScore;
}

8
hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/HygieneMonthVO.java

@ -1,5 +1,7 @@
package com.hnac.hzims.safeproduct.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -11,21 +13,27 @@ import java.math.BigDecimal;
* @date 2023-12-27
*/
@Data
@ExcelIgnoreUnannotated
@ApiModel(value = "卫生自查月度统计VO类")
public class HygieneMonthVO {
@ApiModelProperty("单位")
@ExcelProperty(value = "单位", index = 0)
private String unit;
@ApiModelProperty("应检查次数")
@ExcelProperty(value = "应检查次数", index = 1)
private Long scheduledCheckNum;
@ApiModelProperty("已检查次数")
@ExcelProperty(value = "已检查次数", index = 2)
private Long finishedCheckNum;
@ApiModelProperty("未检查次数")
@ExcelProperty(value = "未检查次数", index = 3)
private Long unfinishedCheckNum;
@ApiModelProperty("完成率")
@ExcelProperty(value = "完成率/%", index = 4)
private BigDecimal completionRate;
}

39
hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/HygienePlanDetailVO.java

@ -0,0 +1,39 @@
package com.hnac.hzims.safeproduct.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.hnac.hzims.safeproduct.entity.HygieneZoneEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;
/**
* @author liwen
* @date 2024-01-02
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "卫生自查计划详情VO类")
public class HygienePlanDetailVO extends BaseEntity {
@ApiModelProperty("标准总分值")
private Integer standardScore;
@NotNull
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty("计划开始时间")
private Date scheduledStartTime;
@NotNull
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty("计划结束时间")
private Date scheduledEndTime;
@ApiModelProperty("责任区数据列表")
private List<HygieneZoneEntity> zoneList;
}

31
hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/HygieneRecordDetailVO.java

@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* @author liwen
@ -14,33 +15,33 @@ import java.util.Date;
@ApiModel(value = "卫生自查记录详情VO类")
public class HygieneRecordDetailVO {
@ApiModelProperty("责任区")
private String zone;
@ApiModelProperty("责任人")
private String principal;
@ApiModelProperty("检查项")
private String checkItem;
@ApiModelProperty("检查项分值")
private String checkItemScore;
@ApiModelProperty("编码")
private String code;
@ApiModelProperty("检查时间")
private Date checkTime;
@ApiModelProperty("实际结束时间")
private Date actualEndTime;
@ApiModelProperty("检查人")
private String checkUser;
@ApiModelProperty("责任区id")
private String hygieneZoneIds;
@ApiModelProperty("检查结果")
private String checkResult;
@ApiModelProperty("综合评分")
private Integer comprehensiveScore;
private String comprehensiveScore;
@ApiModelProperty("周数")
private Integer weekNum;
@ApiModelProperty("检查图片")
private String imgPath;
@ApiModelProperty("卫生自查计划id")
private Long hygienePlanId;
@ApiModelProperty("检查信息列表")
private List<HygieneZoneDetailVO> checkList;
}

34
hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/HygieneRecordPageVO.java

@ -0,0 +1,34 @@
package com.hnac.hzims.safeproduct.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @author liwen
* @date 2024-01-03
*/
@Data
@ApiModel(value = "卫生自查记录页面VO类")
public class HygieneRecordPageVO {
@ApiModelProperty("卫生自查记录id")
private Long id;
@ApiModelProperty("单位")
private String unit;
@ApiModelProperty("实际开始时间")
private Date actualStartTime;
@ApiModelProperty("实际结束时间")
private Date actualEndTime;
@ApiModelProperty("检查人")
private String checkUser;
@ApiModelProperty("周数")
private Integer weekNum;
}

41
hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/HygieneZoneDetailVO.java

@ -0,0 +1,41 @@
package com.hnac.hzims.safeproduct.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author liwen
* @date 2024-01-02
*/
@Data
@ExcelIgnoreUnannotated
@ApiModel(value = "卫生自查详情VO类")
public class HygieneZoneDetailVO {
@ApiModelProperty("责任区")
@ExcelProperty(value = "责任区", index = 0)
private String zone;
@ApiModelProperty("责任人")
@ExcelProperty(value = "责任人", index = 1)
private String principal;
@ApiModelProperty("检查项")
@ExcelProperty(value = "检查项", index = 2)
private String checkItem;
@ApiModelProperty("检查项分值")
@ExcelProperty(value = "检查项分值", index = 3)
private String checkItemScore;
@ApiModelProperty("检查结果")
@ExcelProperty(value = "检查结果", index = 4)
private String result;
@ApiModelProperty("综合评分")
@ExcelProperty(value = "综合评分", index = 5)
private Integer score;
}

55
hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/HygieneController.java

@ -3,12 +3,16 @@ package com.hnac.hzims.safeproduct.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.hnac.hzims.common.utils.Condition;
import com.hnac.hzims.safeproduct.dto.HygienePlanDTO;
import com.hnac.hzims.safeproduct.dto.HygieneRecordDTO;
import com.hnac.hzims.safeproduct.entity.HygienePlanEntity;
import com.hnac.hzims.safeproduct.entity.HygieneRecordEntity;
import com.hnac.hzims.safeproduct.service.IHygienePlanService;
import com.hnac.hzims.safeproduct.service.IHygieneRecordService;
import com.hnac.hzims.safeproduct.vo.HygienePlanDetailVO;
import com.hnac.hzims.safeproduct.vo.HygieneMonthVO;
import com.hnac.hzims.safeproduct.vo.HygieneRecordDetailVO;
import com.hnac.hzims.safeproduct.vo.HygieneRecordPageVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@ -43,15 +47,15 @@ public class HygieneController extends BladeController {
@PostMapping("/savePlan")
@ApiOperation(value = "新增卫生自查计划")
@ApiOperationSupport(order = 1)
public R savePlan(@Valid @RequestBody HygienePlanEntity hygienePlanEntity) {
return hygienePlanService.savePlan(hygienePlanEntity);
public R savePlan(@Valid @RequestBody HygienePlanDTO hygienePlanDTO) {
return hygienePlanService.savePlan(hygienePlanDTO);
}
@PostMapping("/updatePlan")
@ApiOperation(value = "修改卫生自查计划")
@ApiOperationSupport(order = 2)
public R updatePlan(@Valid @RequestBody HygienePlanEntity hygienePlanEntity) {
return hygienePlanService.updatePlan(hygienePlanEntity);
public R updatePlan(@Valid @RequestBody HygienePlanDTO hygienePlanDTO) {
return hygienePlanService.updatePlan(hygienePlanDTO);
}
@PostMapping("/removePlan")
@ -64,14 +68,14 @@ public class HygieneController extends BladeController {
@GetMapping("/planDetail")
@ApiOperation(value = "卫生自查计划详情")
@ApiOperationSupport(order = 4)
public R<HygienePlanEntity> planDetail(@RequestParam Long id) {
return R.data(hygienePlanService.getById(id));
public R<HygienePlanDetailVO> planDetail(@RequestParam Long id) {
return R.data(hygienePlanService.getPlan(id));
}
@GetMapping("/planPage")
@ApiImplicitParams({
@ApiImplicitParam(name = "zone", value = "责任区", dataType = "query", paramType = "string"),
@ApiImplicitParam(name = "principal", value = "责任人", dataType = "query", paramType = "string")
@ApiImplicitParam(name = "scheduledStartTime", value = "计划开始时间", dataType = "query", paramType = "string"),
@ApiImplicitParam(name = "scheduledEndTime", value = "计划结束时间", dataType = "query", paramType = "string")
})
@ApiOperation(value = "卫生自查计划分页")
@ApiOperationSupport(order = 5)
@ -83,15 +87,15 @@ public class HygieneController extends BladeController {
@PostMapping("/saveRecord")
@ApiOperation(value = "新增卫生自查记录")
@ApiOperationSupport(order = 6)
public R saveRecord(@Valid @RequestBody HygieneRecordEntity hygieneRecordEntity) {
return hygieneRecordService.saveRecord(hygieneRecordEntity);
public R saveRecord(@Valid @RequestBody HygieneRecordDTO hygieneRecordDTO) {
return hygieneRecordService.saveRecord(hygieneRecordDTO);
}
@PostMapping("/updateRecord")
@ApiOperation(value = "修改卫生自查记录")
@ApiOperationSupport(order = 7)
public R updateRecord(@Valid @RequestBody HygieneRecordEntity hygieneRecordEntity) {
return hygieneRecordService.updateRecord(hygieneRecordEntity);
public R updateRecord(@Valid @RequestBody HygieneRecordDTO hygieneRecordDTO) {
return hygieneRecordService.updateRecord(hygieneRecordDTO);
}
@PostMapping("/removeRecord")
@ -114,29 +118,34 @@ public class HygieneController extends BladeController {
})
@ApiOperation(value = "卫生自查记录分页")
@ApiOperationSupport(order = 10)
public R<IPage<HygieneRecordEntity>> recordPage(@ApiIgnore @RequestParam Map<String, Object> param, Query query) {
IPage<HygieneRecordEntity> page = hygieneRecordService.page(Condition.getPage(query), Condition.getQueryWrapper(param,
HygieneRecordEntity.class));
public R<IPage<HygieneRecordPageVO>> recordPage(@ApiIgnore @RequestParam Map<String, Object> param, Query query) {
IPage<HygieneRecordPageVO> page = hygieneRecordService.recordPage(param, query);
return R.data(page);
}
@GetMapping("/dataByMonth")
@ApiOperation(value = "月度统计表")
@ApiOperationSupport(order = 11)
public R<IPage<HygieneMonthVO>> dataByMonth(@RequestParam String month, Query query) {
IPage<HygieneMonthVO> page = hygienePlanService.dataByMonth(month, query);
public R<IPage<HygieneMonthVO>> dataByMonth(@RequestParam String month, String unit, Query query) {
IPage<HygieneMonthVO> page = hygienePlanService.dataByMonth(month, unit, query);
return R.data(page);
}
@GetMapping("/exportHygieneData")
@ApiOperation(value = "卫生自查数据导出")
@ApiOperationSupport(order = 12)
public void exportHygieneData(@RequestParam Long hygieneRecordId, HttpServletResponse response) {
hygieneRecordService.exportHygieneData(hygieneRecordId, response);
}
@GetMapping("/exportMonthData")
@ApiImplicitParams({
@ApiImplicitParam(name = "unit", value = "单位", dataType = "query", paramType = "string"),
@ApiImplicitParam(name = "scheduledStartTime", value = "计划开始时间", dataType = "query", paramType = "string"),
@ApiImplicitParam(name = "scheduledEndTime", value = "计划结束时间", dataType = "query", paramType = "string")
@ApiImplicitParam(name = "month", value = "月份", dataType = "query", paramType = "string"),
@ApiImplicitParam(name = "unit", value = "单位", dataType = "query", paramType = "string")
})
@ApiOperation(value = "卫生自查数据导出")
@ApiOperation(value = "月度数据导出")
@ApiOperationSupport(order = 13)
public void exportHygieneData(@ApiIgnore @RequestParam Map<String, Object> param, HttpServletResponse response) {
hygienePlanService.exportHygieneData(param, response);
public void exportMonthData(@ApiIgnore @RequestParam Map<String, Object> param, Query query, HttpServletResponse response) {
hygienePlanService.exportMonthData(param, query, response);
}
}

17
hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/HygienePlanMapper.java

@ -2,12 +2,10 @@ package com.hnac.hzims.safeproduct.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.hnac.hzims.safeproduct.dto.HygieneExportDTO;
import com.hnac.hzims.safeproduct.entity.HygienePlanEntity;
import com.hnac.hzims.safeproduct.vo.HygieneMonthVO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 卫生自查计划Mapper类
@ -21,25 +19,18 @@ public interface HygienePlanMapper extends BaseMapper<HygienePlanEntity> {
/**
* 查询当月各单位的卫生自查总数
* @param page 分页类
* @param unit 单位
* @param month 月份
* @return 当月的卫生自查总数据
*/
IPage<HygieneMonthVO> selectByMonth(IPage<HygieneMonthVO> page, String month);
IPage<HygieneMonthVO> selectByMonth(IPage<HygieneMonthVO> page, String unit, String month);
/**
* 查询当月各单位已完成的卫生自查数据
* @param page 分页类
* @param unit 单位
* @param month 月份
* @return 当月的已完成数据
*/
IPage<HygieneMonthVO> selectFinishedDataByMonth(IPage<HygieneMonthVO> page, String month);
/**
* 根据单位和计划时间查询卫生自查记录
* @param unit 单位
* @param startTime 计划开始时间
* @param endTime 计划结束时间
* @return 卫生自查记录
*/
List<HygieneExportDTO> getHygieneByUnitAndDate(String unit, String startTime, String endTime);
IPage<HygieneMonthVO> selectFinishedDataByMonth(IPage<HygieneMonthVO> page, String unit, String month);
}

26
hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/HygienePlanMapper.xml

@ -9,6 +9,9 @@
WHERE
is_deleted = 0
AND scheduled_end_time like concat('%', #{month}, '%')
<if test="unit != null and unit != ''">
AND unit like concat('%', #{unit}, '%')
</if>
GROUP BY
unit
ORDER BY
@ -24,29 +27,12 @@
is_deleted = 0
AND scheduled_end_time like concat('%', #{month}, '%')
AND hygiene_status = 'FINISHED'
<if test="unit != null and unit != ''">
AND unit like concat('%', #{unit}, '%')
</if>
GROUP BY
unit
ORDER BY
unit
</select>
<select id="getHygieneByUnitAndDate" resultType="com.hnac.hzims.safeproduct.dto.HygieneExportDTO">
SELECT
t1.unit, t1.zone, t1.principal, t1.check_item, t1.check_item_score, t2.code, t2.check_result, t2.comprehensive_score,
t2.check_user, t2.actual_start_time, t2.actual_end_time, t1.hygiene_status
FROM
hzims_hygiene_plan t1
LEFT JOIN hzims_hygiene_record t2 ON t1.id = t2.hygiene_plan_id
WHERE
t1.is_deleted = 0
<if test="unit != 'null' and unit != ''">
AND t1.unit like concat('%', #{unit}, '%')
</if>
<if test="startTime != 'null' and startTime != ''">
AND t1.scheduled_start_time >= #{startTime}
</if>
<if test="endTime != 'null' and endTime != ''">
AND t1.scheduled_end_time &lt; #{endTime}
</if>
</select>
</mapper>

12
hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/HygieneRecordMapper.java

@ -1,10 +1,14 @@
package com.hnac.hzims.safeproduct.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.hnac.hzims.safeproduct.entity.HygieneRecordEntity;
import com.hnac.hzims.safeproduct.vo.HygieneRecordDetailVO;
import com.hnac.hzims.safeproduct.vo.HygieneRecordPageVO;
import org.apache.ibatis.annotations.Mapper;
import java.util.Map;
/**
* 卫生自查记录Mapper类
*
@ -20,4 +24,12 @@ public interface HygieneRecordMapper extends BaseMapper<HygieneRecordEntity> {
* @return 卫生自查记录详情VO类
*/
HygieneRecordDetailVO getRecordDetail(Long id);
/**
* 卫生自查记录页面
* @param param 入参
* @param page 分页类
* @return 记录数据页
*/
IPage<HygieneRecordPageVO> recordPage(IPage<HygieneRecordPageVO> page, Map<String, Object> param);
}

23
hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/HygieneRecordMapper.xml

@ -3,13 +3,24 @@
<select id="getRecordDetail" resultType="com.hnac.hzims.safeproduct.vo.HygieneRecordDetailVO">
SELECT
t2.zone, t2.principal, t2.check_item, t2.check_item_score, t1.code, t1.check_time, t1.check_user,
t1.check_result, t1.comprehensive_score, t1.week_num
code, actual_end_time, check_user, hygiene_zone_ids, check_result,comprehensive_score, week_num,
img_path, hygiene_plan_id
FROM
hzims_hygiene_record t1
LEFT JOIN hzims_hygiene_plan t2 ON t1.hygiene_plan_id = h2.id
hzims_hygiene_record
WHERE
t1.is_deleted = 0
AND t1.id = #{id}
is_deleted = 0
AND id = #{id}
</select>
<select id="recordPage" resultType="com.hnac.hzims.safeproduct.vo.HygieneRecordPageVO">
SELECT
id, unit, actual_start_time, actual_end_time, check_user, week_num
FROM
hzims_hygiene_record
WHERE
is_deleted = 0
<if test="param.hygienePlanId != null and param.hygienePlanId != ''">
AND hygiene_plan_id = #{hygienePlanId}
</if>
</select>
</mapper>

10
hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/HygieneZoneMapper.java

@ -0,0 +1,10 @@
package com.hnac.hzims.safeproduct.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hnac.hzims.safeproduct.entity.HygieneZoneEntity;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface HygieneZoneMapper extends BaseMapper<HygieneZoneEntity> {
}

4
hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/HygieneZoneMapper.xml

@ -0,0 +1,4 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hnac.hzims.safeproduct.mapper.HygieneZoneMapper">
</mapper>

33
hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/IHygienePlanService.java

@ -2,7 +2,9 @@ package com.hnac.hzims.safeproduct.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hnac.hzims.safeproduct.dto.HygienePlanDTO;
import com.hnac.hzims.safeproduct.entity.HygienePlanEntity;
import com.hnac.hzims.safeproduct.vo.HygienePlanDetailVO;
import com.hnac.hzims.safeproduct.vo.HygieneMonthVO;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
@ -35,30 +37,43 @@ public interface IHygienePlanService extends IService<HygienePlanEntity> {
/**
* 新增卫生自查计划
* @param hygienePlanEntity 卫生自查计划实体
* @param hygienePlanDTO 卫生自查DTO
* @return 结果封装类
*/
R savePlan(HygienePlanEntity hygienePlanEntity);
R savePlan(HygienePlanDTO hygienePlanDTO);
/**
* 修改卫生自查计划
* @param hygienePlanEntity 卫生自查计划实体
* @param hygienePlanDTO 卫生自查DTO
* @return 结果封装类
*/
R updatePlan(HygienePlanEntity hygienePlanEntity);
R updatePlan(HygienePlanDTO hygienePlanDTO);
/**
* 卫生自查月度数据
* @param month 月份
* @param unit 单位
* @param query 分页类
* @return 月度统计分页
*/
IPage<HygieneMonthVO> dataByMonth(String month, Query query);
IPage<HygieneMonthVO> dataByMonth(String month, String unit, Query query);
/**
* 卫生自查数据导出
* @param param 入参
* @param response 响应类
* 卫生自查计划数据详情
* @param id 卫生自查计划id
* @return 卫生自查计划详情VO类
*/
HygienePlanDetailVO getPlan(Long id);
/**
* 根据编码查询卫生自查计划
* @param code 编码
* @return 卫生自查计划实体类
*/
HygienePlanEntity getPlanByCode(String code);
/**
* 月度数据导出
*/
void exportHygieneData(Map<String, Object> param, HttpServletResponse response);
void exportMonthData(Map<String, Object> param, Query query, HttpServletResponse response);
}

32
hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/IHygieneRecordService.java

@ -1,10 +1,17 @@
package com.hnac.hzims.safeproduct.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hnac.hzims.safeproduct.dto.HygieneRecordDTO;
import com.hnac.hzims.safeproduct.entity.HygieneRecordEntity;
import com.hnac.hzims.safeproduct.vo.HygieneRecordDetailVO;
import com.hnac.hzims.safeproduct.vo.HygieneRecordPageVO;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
* 卫生自查记录服务类
*
@ -22,17 +29,17 @@ public interface IHygieneRecordService extends IService<HygieneRecordEntity> {
/**
* 新增卫生自查记录
* @param hygieneRecordEntity 卫生自查记录实体
* @param hygieneRecordDTO 卫生自查记录DTO
* @return 封装结果类
*/
R saveRecord(HygieneRecordEntity hygieneRecordEntity);
R saveRecord(HygieneRecordDTO hygieneRecordDTO);
/**
* 修改卫生自查记录
* @param hygieneRecordEntity 卫生自查记录实体
* @return true-成功false-失败
* @param hygieneRecordDTO 卫生自查记录DTO
* @return 封装结果类
*/
R updateRecord(HygieneRecordEntity hygieneRecordEntity);
R updateRecord(HygieneRecordDTO hygieneRecordDTO);
/**
* 查询卫生自查记录详情
@ -40,4 +47,19 @@ public interface IHygieneRecordService extends IService<HygieneRecordEntity> {
* @return 卫生自查记录详情VO类
*/
HygieneRecordDetailVO getRecordDetail(Long id);
/**
* 卫生自查记录页面
* @param param 入参
* @param query 分页类
* @return 记录数据页
*/
IPage<HygieneRecordPageVO> recordPage(Map<String, Object> param, Query query);
/**
* 卫生自查记录数据导出
* @param hygieneRecordId 卫生自查记录id
* @param response 响应类
*/
void exportHygieneData(Long hygieneRecordId, HttpServletResponse response);
}

23
hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/IHygieneZoneService.java

@ -0,0 +1,23 @@
package com.hnac.hzims.safeproduct.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hnac.hzims.safeproduct.entity.HygieneZoneEntity;
import java.util.List;
public interface IHygieneZoneService extends IService<HygieneZoneEntity> {
/**
* 删除关联责任区数据
* @param hygienePlanId 卫生自查计划id
* @return true-成功false-失败
*/
boolean removeReferenceZone(Long hygienePlanId);
/**
* 查询关联责任区数据
* @param hygienePlanId 卫生自查计划id
* @return 关联责任区数据
*/
List<HygieneZoneEntity> getReferenceZone(Long hygienePlanId);
}

207
hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/HygienePlanServiceImpl.java

@ -10,18 +10,22 @@ 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.hnac.hzims.common.utils.Condition;
import com.hnac.hzims.safeproduct.dto.HygieneExportDTO;
import com.hnac.hzims.safeproduct.dto.HygienePlanDTO;
import com.hnac.hzims.safeproduct.entity.HygienePlanEntity;
import com.hnac.hzims.safeproduct.enums.HygieneStatusEnum;
import com.hnac.hzims.safeproduct.entity.HygieneZoneEntity;
import com.hnac.hzims.safeproduct.mapper.HygienePlanMapper;
import com.hnac.hzims.safeproduct.service.IHygienePlanService;
import com.hnac.hzims.safeproduct.service.IHygieneRecordService;
import com.hnac.hzims.safeproduct.service.IHygieneZoneService;
import com.hnac.hzims.safeproduct.vo.HygienePlanDetailVO;
import com.hnac.hzims.safeproduct.vo.HygieneMonthVO;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
@ -45,14 +49,24 @@ public class HygienePlanServiceImpl extends ServiceImpl<HygienePlanMapper, Hygie
@Autowired
IHygieneRecordService hygieneRecordService;
@Autowired
IHygieneZoneService hygieneZoneService;
/**
* 删除卫生自查计划
*/
@Transactional(rollbackFor = Exception.class)
@Override
public boolean removePlan(Long id) {
// 删除计划数据
boolean remove = this.removeById(id);
if (remove) {
return hygieneRecordService.removeReferenceRecord(id);
// 删除记录数据
boolean removeRecord = hygieneRecordService.removeReferenceRecord(id);
if (removeRecord) {
// 删除责任区数据
return hygieneZoneService.removeReferenceZone(id);
}
}
return false;
}
@ -63,13 +77,13 @@ public class HygienePlanServiceImpl extends ServiceImpl<HygienePlanMapper, Hygie
@Override
public IPage<HygienePlanEntity> planPage(Map<String, Object> param, Query query) {
QueryWrapper<HygienePlanEntity> queryWrapper = new QueryWrapper<>();
String zone = String.valueOf(param.get("zone"));
String principal = String.valueOf(param.get("principal"));
if (!zone.equals("null") && !zone.equals("")) {
queryWrapper.lambda().like(HygienePlanEntity::getZone, zone);
String startTime = String.valueOf(param.get("scheduledStartTime"));
String endTime = String.valueOf(param.get("scheduledEndTime"));
if (!startTime.equals("null") && !startTime.equals("")) {
queryWrapper.lambda().ge(HygienePlanEntity::getScheduledStartTime, startTime);
}
if (!principal.equals("null") && !principal.equals("")) {
queryWrapper.lambda().ge(HygienePlanEntity::getPrincipal, principal);
if (!endTime.equals("null") && !endTime.equals("")) {
queryWrapper.lambda().le(HygienePlanEntity::getScheduledEndTime, endTime);
}
return this.page(Condition.getPage(query), queryWrapper);
}
@ -77,48 +91,84 @@ public class HygienePlanServiceImpl extends ServiceImpl<HygienePlanMapper, Hygie
/**
* 新增卫生自查计划
*/
@Transactional(rollbackFor = Exception.class)
@Override
public R savePlan(HygienePlanEntity hygienePlanEntity) {
String[] scores = hygienePlanEntity.getCheckItemScore().split(",|,");
Integer standardScore = hygienePlanEntity.getStandardScore();
R res = getSumScore(scores, standardScore);
return res.isSuccess() ? R.status(this.save(hygienePlanEntity)) : res;
public R savePlan(HygienePlanDTO hygienePlanDTO) {
// 新增卫生自查计划
HygienePlanEntity hygienePlanEntity = new HygienePlanEntity();
BeanUtils.copyProperties(hygienePlanDTO, hygienePlanEntity);
boolean savePlan = this.save(hygienePlanEntity);
List<HygieneZoneEntity> zoneList = hygienePlanDTO.getZoneList();
// 若计划新增成功,新增关联责任区数据
if (savePlan) {
HygienePlanEntity hygienePlan = getPlanByCode(hygienePlanDTO.getCode());
for (HygieneZoneEntity zone : zoneList) {
// 传计划id
if (hygienePlan != null) {
zone.setHygienePlanId(hygienePlan.getId());
}
String[] scores = zone.getCheckItemScore().split(",|,");
// 校验检查项总成绩是否为标准总成绩
R res = getSumScore(scores, hygienePlanDTO.getStandardScore());
if (!res.isSuccess()) {
return res;
}
}
// 校验通过则批量新增责任区数据
return R.status(hygieneZoneService.saveBatch(zoneList));
}
return R.status(Boolean.FALSE);
}
/**
* 修改卫生自查计划
*/
@Override
public R updatePlan(HygienePlanEntity hygienePlanEntity) {
String[] scores = hygienePlanEntity.getCheckItemScore().split(",|,");
Integer standardScore = hygienePlanEntity.getStandardScore();
R res = getSumScore(scores, standardScore);
return res.isSuccess() ? R.status(this.updateById(hygienePlanEntity)) : res;
public R updatePlan(HygienePlanDTO hygienePlanDTO) {
// 修改卫生自查计划
HygienePlanEntity hygienePlanEntity = new HygienePlanEntity();
BeanUtils.copyProperties(hygienePlanDTO, hygienePlanEntity);
boolean updatePlan = this.updateById(hygienePlanEntity);
List<HygieneZoneEntity> zoneList = hygienePlanDTO.getZoneList();
// 若计划修改成功,修改关联责任区数据
if (updatePlan) {
for (HygieneZoneEntity zone : zoneList) {
String[] scores = zone.getCheckItemScore().split(",|,");
// 校验检查项总成绩是否为标准总成绩
R res = getSumScore(scores, hygienePlanDTO.getStandardScore());
if (!res.isSuccess()) {
return res;
}
}
// 校验通过则批量修改责任区数据
return R.status(hygieneZoneService.updateBatchById(zoneList));
}
return R.status(Boolean.FALSE);
}
/**
* 卫生自查月度数据
*/
@Override
public IPage<HygieneMonthVO> dataByMonth(String month, Query query) {
public IPage<HygieneMonthVO> dataByMonth(String month, String unit, Query query) {
// 查询当月各单位的卫生自查总数
IPage<HygieneMonthVO> page = new Page<>(query.getCurrent(), query.getSize());
IPage<HygieneMonthVO> unitPage = baseMapper.selectByMonth(page, month);
IPage<HygieneMonthVO> unitPage = baseMapper.selectByMonth(page, unit, month);
List<HygieneMonthVO> unitList = unitPage.getRecords();
// 查询当月各单位已完成的卫生自查数据
IPage<HygieneMonthVO> page1 = new Page<>(query.getCurrent(), query.getSize());
IPage<HygieneMonthVO> finishedPage = baseMapper.selectFinishedDataByMonth(page1, month);
IPage<HygieneMonthVO> finishedPage = baseMapper.selectFinishedDataByMonth(page1, unit, month);
List<HygieneMonthVO> finishedList = finishedPage.getRecords();
// 处理统计数据
for (HygieneMonthVO unit : unitList) {
Long taskNum = unit.getScheduledCheckNum();
Optional<HygieneMonthVO> finishedHygiene = finishedList.stream().filter(x -> x.getUnit().equals(unit.getUnit())).findFirst();
for (HygieneMonthVO u : unitList) {
Long taskNum = u.getScheduledCheckNum();
Optional<HygieneMonthVO> finishedHygiene = finishedList.stream().filter(x -> x.getUnit().equals(u.getUnit())).findFirst();
Long finishedTaskNum = finishedHygiene.isPresent() ? finishedHygiene.get().getFinishedCheckNum() : 0L;
unit.setFinishedCheckNum(finishedTaskNum);
unit.setUnfinishedCheckNum(taskNum - finishedTaskNum);
u.setFinishedCheckNum(finishedTaskNum);
u.setUnfinishedCheckNum(taskNum - finishedTaskNum);
BigDecimal taskDecimal = new BigDecimal(taskNum);
BigDecimal finishedDecimal = new BigDecimal(finishedTaskNum);
unit.setCompletionRate(finishedDecimal.divide(taskDecimal, 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100"))
u.setCompletionRate(finishedDecimal.divide(taskDecimal, 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100"))
.setScale(2, RoundingMode.HALF_UP));
}
unitPage.setRecords(unitList);
@ -126,32 +176,61 @@ public class HygienePlanServiceImpl extends ServiceImpl<HygienePlanMapper, Hygie
}
/**
* 卫生自查数据导出
* 卫生自查计划数据详情
*/
@Override
public HygienePlanDetailVO getPlan(Long id) {
HygienePlanEntity hygienePlanEntity = this.getById(id);
HygienePlanDetailVO hygienePlanDetailVO = new HygienePlanDetailVO();
BeanUtils.copyProperties(hygienePlanEntity, hygienePlanDetailVO);
// 查询关联责任区数据
List<HygieneZoneEntity> zoneList = hygieneZoneService.getReferenceZone(id);
hygienePlanDetailVO.setZoneList(zoneList);
return hygienePlanDetailVO;
}
/**
* 计算累计分值
* @param scores 各项分值
* @param standardScore 标准总分值
* @return 累计分值等于标准总分值时返回数据否则返回错误信息
*/
private R getSumScore(String[] scores, Integer standardScore) {
int sum = 0;
for (String score : scores) {
sum += Integer.parseInt(score);
if (sum > standardScore) {
return R.fail("累计分值已超过标准总分值");
}
}
return sum < standardScore ? R.fail("标准总分值未全部分配") : R.data(sum);
}
/**
* 根据编码查询卫生自查计划
*/
@Override
public HygienePlanEntity getPlanByCode(String code) {
QueryWrapper<HygienePlanEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(HygienePlanEntity::getCode, code);
return this.getOne(queryWrapper);
}
/**
* 月度数据导出
*/
@Override
public void exportHygieneData(Map<String, Object> param, HttpServletResponse response) {
public void exportMonthData(Map<String, Object> param, Query query, HttpServletResponse response) {
ServletOutputStream outputStream = null;
try {
outputStream = response.getOutputStream();
String unit = String.valueOf(param.get("unit"));
String startTime = String.valueOf(param.get("scheduledStartTime"));
String endTime = String.valueOf(param.get("scheduledEndTime"));
List<HygieneExportDTO> rehearsalList = getHygieneByUnitAndDate(unit, startTime, endTime);
// 处理卫生自查状态信息
rehearsalList.forEach(record -> {
String status;
if (record.getHygieneStatus().equals(HygieneStatusEnum.WAITING.getValue())) {
status = HygieneStatusEnum.WAITING.getDesc();
} else if (record.getHygieneStatus().equals(HygieneStatusEnum.UNFINISHED.getValue())) {
status = HygieneStatusEnum.UNFINISHED.getDesc();
} else {
status = HygieneStatusEnum.FINISHED.getDesc();
}
record.setHygieneStatus(status);
});
String month = String.valueOf(param.get("month"));
IPage<HygieneMonthVO> monthPage = dataByMonth(month, unit, query);
List<HygieneMonthVO> records = monthPage.getRecords();
// 设置响应头
// URLEncoder.encode防止中文乱码
String fileName = URLEncoder.encode("卫生自查数据表", "UTF-8");
String fileName = URLEncoder.encode("卫生自查月度统计表", "UTF-8");
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("UTF-8");
@ -162,52 +241,24 @@ public class HygienePlanServiceImpl extends ServiceImpl<HygienePlanMapper, Hygie
.registerConverter(new LongStringConverter())
.registerWriteHandler(new SimpleColumnWidthStyleStrategy(25))
.build();
WriteSheet writeSheet = EasyExcel.writerSheet(1, "卫生自查数据表").head(HygieneExportDTO.class)
WriteSheet writeSheet = EasyExcel.writerSheet(1, "卫生自查月度统计表").head(HygieneMonthVO.class)
.build();
excelWriter.write(rehearsalList, writeSheet);
excelWriter.write(records, writeSheet);
excelWriter.finish();
} catch (Exception e) {
// 重置response
response.reset();
response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
throw new ServiceException("卫生自查数据导出异常: " + e.getMessage());
throw new ServiceException("卫生自查月度数据导出异常: " + e.getMessage());
} finally {
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException e) {
log.error("卫生自查导出响应头输出流关闭异常: " + e.getMessage());
log.error("卫生自查月度数据导出输出流关闭异常: " + e.getMessage());
}
}
}
}
/**
* 计算累计分值
* @param scores 各项分值
* @param standardScore 标准总分值
* @return 累计分值等于标准总分值时返回数据否则返回错误信息
*/
private R getSumScore(String[] scores, Integer standardScore) {
int sum = 0;
for (String score : scores) {
sum += Integer.parseInt(score);
if (sum > standardScore) {
return R.fail("累计分值已超过标准总分值");
}
}
return sum < standardScore ? R.fail("标准总分值未全部分配") : R.data(sum);
}
/**
* 根据单位和计划时间查询卫生自查记录
* @param unit 单位
* @param startTime 计划开始时间
* @param endTime 计划结束时间
* @return 卫生自查记录
*/
public List<HygieneExportDTO> getHygieneByUnitAndDate(String unit, String startTime, String endTime) {
return baseMapper.getHygieneByUnitAndDate(unit, startTime, endTime);
}
}

148
hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/HygieneRecordServiceImpl.java

@ -1,26 +1,48 @@
package com.hnac.hzims.safeproduct.service.impl;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.converters.longconverter.LongStringConverter;
import com.alibaba.excel.util.CollectionUtils;
import com.alibaba.excel.write.merge.LoopMergeStrategy;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.hnac.hzims.common.logs.utils.StringUtils;
import com.hnac.hzims.safeproduct.dto.HygieneRecordDTO;
import com.hnac.hzims.safeproduct.entity.HygienePlanEntity;
import com.hnac.hzims.safeproduct.entity.HygieneRecordEntity;
import com.hnac.hzims.safeproduct.entity.HygieneZoneEntity;
import com.hnac.hzims.safeproduct.mapper.HygienePlanMapper;
import com.hnac.hzims.safeproduct.mapper.HygieneRecordMapper;
import com.hnac.hzims.safeproduct.service.IHygieneRecordService;
import com.hnac.hzims.safeproduct.service.IHygieneZoneService;
import com.hnac.hzims.safeproduct.utils.BaseUtil;
import com.hnac.hzims.safeproduct.vo.HygieneRecordPageVO;
import com.hnac.hzims.safeproduct.vo.HygieneZoneDetailVO;
import com.hnac.hzims.safeproduct.vo.HygieneRecordDetailVO;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.ss.usermodel.CellStyle;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.temporal.WeekFields;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -35,6 +57,9 @@ public class HygieneRecordServiceImpl extends ServiceImpl<HygieneRecordMapper, H
@Resource
HygienePlanMapper hygienePlanMapper;
@Autowired
IHygieneZoneService hygieneZoneService;
/**
* 删除关联卫生自查记录
*/
@ -56,36 +81,28 @@ public class HygieneRecordServiceImpl extends ServiceImpl<HygieneRecordMapper, H
* 新增卫生自查记录
*/
@Override
public R saveRecord(HygieneRecordEntity hygieneRecordEntity) {
public R saveRecord(HygieneRecordDTO hygieneRecordDTO) {
HygieneRecordEntity hygieneRecordEntity = new HygieneRecordEntity();
BeanUtils.copyProperties(hygieneRecordDTO, hygieneRecordEntity);
// 编码生成
// 获取当月时间(yyyymm)
String currentMonth = DatePattern.SIMPLE_MONTH_FORMAT.format(new Date());
// 查询是否存在同月编号
String lastCode = getLastCode(currentMonth);
// 若不存在,新增编号
String code;
if (StringUtils.isNull(lastCode)) {
code = "WSZC" + currentMonth + "001";
} else { // 若存在,编号递增
String oldNum = lastCode.substring(lastCode.length() - 3);
int value = Integer.parseInt(oldNum) + 1;
// 根据数位拼接编号
if (value < 10) {
code = "WSZC" + currentMonth + "00" + value;
} else if (value < 100) {
code = "WSZC" + currentMonth + "0" + value;
} else {
code = "WSZC" + currentMonth + value;
}
}
String code = BaseUtil.getUniqueCode("WSZC", lastCode, currentMonth);
hygieneRecordEntity.setCode(code);
// 周数计算
int weekNum = getWeekNum(hygieneRecordEntity.getActualEndTime());
hygieneRecordEntity.setWeekNum(weekNum);
// 综合评分判断
HygienePlanEntity hygienePlanEntity = hygienePlanMapper.selectById(hygieneRecordEntity.getHygienePlanId());
if (hygieneRecordEntity.getComprehensiveScore().compareTo(hygienePlanEntity.getStandardScore()) > 0) {
return R.fail("评分不能大于标准总分值");
String[] scores = hygieneRecordEntity.getComprehensiveScore().split(",|,");
for (String score : scores) {
int sc = Integer.parseInt(score);
if (sc > hygienePlanEntity.getStandardScore()) {
return R.fail("评分不能大于标准总分值");
}
}
return R.status(this.save(hygieneRecordEntity));
}
@ -94,14 +111,20 @@ public class HygieneRecordServiceImpl extends ServiceImpl<HygieneRecordMapper, H
* 修改卫生自查记录
*/
@Override
public R updateRecord(HygieneRecordEntity hygieneRecordEntity) {
public R updateRecord(HygieneRecordDTO hygieneRecordDTO) {
HygieneRecordEntity hygieneRecordEntity = new HygieneRecordEntity();
BeanUtils.copyProperties(hygieneRecordDTO, hygieneRecordEntity);
// 周数计算
int weekNum = getWeekNum(hygieneRecordEntity.getActualEndTime());
hygieneRecordEntity.setWeekNum(weekNum);
// 综合评分判断
HygienePlanEntity hygienePlanEntity = hygienePlanMapper.selectById(hygieneRecordEntity.getHygienePlanId());
if (hygieneRecordEntity.getComprehensiveScore().compareTo(hygienePlanEntity.getStandardScore()) > 0) {
return R.fail("评分不能大于标准总分值");
String[] scores = hygieneRecordEntity.getComprehensiveScore().split(",|,");
for (String score : scores) {
int sc = Integer.parseInt(score);
if (sc > hygienePlanEntity.getStandardScore()) {
return R.fail("评分不能大于标准总分值");
}
}
return R.status(this.updateById(hygieneRecordEntity));
}
@ -111,7 +134,80 @@ public class HygieneRecordServiceImpl extends ServiceImpl<HygieneRecordMapper, H
*/
@Override
public HygieneRecordDetailVO getRecordDetail(Long id) {
return baseMapper.getRecordDetail(id);
HygieneRecordDetailVO recordDetailVO = baseMapper.getRecordDetail(id);
String[] zoneIds = recordDetailVO.getHygieneZoneIds().split(",|,");
String[] results = recordDetailVO.getCheckResult().split(",|,");
String[] scores = recordDetailVO.getComprehensiveScore().split(",|,");
List<HygieneZoneDetailVO> checkDetailVOList = new ArrayList<>();
for (int i = 0; i < zoneIds.length ; i++) {
HygieneZoneDetailVO zoneDetailVO = new HygieneZoneDetailVO();
HygieneZoneEntity hygieneZoneEntity = hygieneZoneService.getById(zoneIds[i]);
BeanUtils.copyProperties(hygieneZoneEntity, zoneDetailVO);
zoneDetailVO.setResult(results[i]);
zoneDetailVO.setScore(Integer.parseInt(scores[i]));
checkDetailVOList.add(zoneDetailVO);
}
recordDetailVO.setCheckList(checkDetailVOList);
return recordDetailVO;
}
/**
* 卫生自查记录页面
*/
@Override
public IPage<HygieneRecordPageVO> recordPage(Map<String, Object> param, Query query) {
IPage<HygieneRecordPageVO> page = new Page<>(query.getCurrent(), query.getSize());
return baseMapper.recordPage(page, param);
}
/**
* 卫生自查数据导出
*/
@Override
public void exportHygieneData(Long hygieneRecordId, HttpServletResponse response) {
ServletOutputStream outputStream = null;
try {
outputStream = response.getOutputStream();
HygieneRecordDetailVO recordDetailVO = getRecordDetail(hygieneRecordId);
List<HygieneZoneDetailVO> records = recordDetailVO.getCheckList();
// 设置响应头
// URLEncoder.encode防止中文乱码
String fileName = URLEncoder.encode("卫生自查记录数据表", "UTF-8");
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("UTF-8");
// ExcelWriter初始化
ExcelWriter excelWriter = EasyExcel
.write(response.getOutputStream())
.autoCloseStream(Boolean.TRUE)
.registerConverter(new LongStringConverter())
.registerWriteHandler(new SimpleColumnWidthStyleStrategy(25))
.build();
Date endTime = recordDetailVO.getActualEndTime();
String name = DateUtil.format(endTime, "yyyy年mm月") + "第" + recordDetailVO.getWeekNum() + "周卫生自查表";
List<String> head = new ArrayList<>();
head.add(name);
WriteSheet writeSheet = EasyExcel.writerSheet(1, "卫生自查记录数据表")
.head(Collections.singletonList(head))
.head(HygieneZoneDetailVO.class)
.build();
excelWriter.write(records, writeSheet);
excelWriter.finish();
} catch (Exception e) {
// 重置response
response.reset();
response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
throw new ServiceException("卫生自查记录数据导出异常: " + e.getMessage());
} finally {
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException e) {
log.error("卫生自查记录数据导出输出流关闭异常: " + e.getMessage());
}
}
}
}
/**

42
hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/HygieneZoneServiceImpl.java

@ -0,0 +1,42 @@
package com.hnac.hzims.safeproduct.service.impl;
import com.alibaba.excel.util.CollectionUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hnac.hzims.safeproduct.entity.HygieneZoneEntity;
import com.hnac.hzims.safeproduct.mapper.HygieneZoneMapper;
import com.hnac.hzims.safeproduct.service.IHygieneZoneService;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class HygieneZoneServiceImpl extends ServiceImpl<HygieneZoneMapper, HygieneZoneEntity> implements IHygieneZoneService {
/**
* 删除关联责任区数据
*/
@Override
public boolean removeReferenceZone(Long hygienePlanId) {
QueryWrapper<HygieneZoneEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(HygieneZoneEntity::getHygienePlanId, hygienePlanId);
List<HygieneZoneEntity> zoneList = this.list(queryWrapper);
// 若无关联卫生自查责任区,直接返回true
if (CollectionUtils.isEmpty(zoneList)) {
return true;
}
List<Long> ids = zoneList.stream().map(HygieneZoneEntity::getId).collect(Collectors.toList());
return this.removeByIds(ids);
}
/**
* 查询关联责任区数据
*/
@Override
public List<HygieneZoneEntity> getReferenceZone(Long hygienePlanId) {
QueryWrapper<HygieneZoneEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(HygieneZoneEntity::getHygienePlanId, hygienePlanId);
return this.list(queryWrapper);
}
}

31
hzims-service/safeproduct/src/main/resources/db/1.0.1.sql

@ -80,7 +80,7 @@ CREATE TABLE `hzims_train_record` (
`train_record_name` varchar(50) NOT NULL DEFAULT '' COMMENT '培训记录名称',
`code` varchar(50) NOT NULL COMMENT '编号',
`people_name` varchar(5000) DEFAULT '' COMMENT '培训学员',
`content` varchar(5000) DEFAULT '' COMMENT '培训内容',
`content` mediumtext DEFAULT '' COMMENT '培训内容',
`actual_start_time` datetime DEFAULT NULL COMMENT '实际培训开始时间',
`actual_end_time` datetime DEFAULT NULL COMMENT '实际培训结束时间',
`command` varchar(250) DEFAULT NULL COMMENT '培训评价',
@ -164,7 +164,7 @@ CREATE TABLE `hzims_conference_record` (
`actual_start_time` datetime DEFAULT NULL COMMENT '会议实际开始时间',
`actual_end_time` datetime DEFAULT NULL COMMENT '会议实际结束时间',
`recorder` varchar(20) DEFAULT '' COMMENT '记录人',
`content` varchar(250) DEFAULT '' DEFAULT '' COMMENT '会议内容',
`content` mediumtext DEFAULT '' DEFAULT '' COMMENT '会议内容',
`img_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '会议图片',
`file_path` varchar(1000) NOT NULL DEFAULT '' COMMENT '会议附件',
`create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人',
@ -179,15 +179,27 @@ CREATE TABLE `hzims_conference_record` (
CREATE TABLE `hzims_hygiene_plan` (
`id` bigint(20) NOT NULL COMMENT '主键id',
`unit` varchar(50) NOT NULL COMMENT '单位',
`code` varchar(50) NOT NULL COMMENT '编码',
`standard_score` int(10) NOT NULL DEFAULT '100' COMMENT '标准总分值',
`scheduled_start_time` date NOT NULL COMMENT '计划开始时间',
`scheduled_end_time` date NOT NULL COMMENT '计划结束时间',
`create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人',
`create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_user` bigint(20) DEFAULT '-1' COMMENT '更新人',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间',
`status` int(2) NOT NULL DEFAULT '1' COMMENT '状态',
`is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='卫生自查计划表' ROW_FORMAT=Dynamic;
CREATE TABLE `hzims_hygiene_zone` (
`id` bigint(20) NOT NULL COMMENT '主键id',
`hygiene_plan_id` bigint(20) NOT NULL COMMENT '卫生自查计划id',
`zone` varchar(50) NOT NULL COMMENT '责任区',
`principal` varchar(20) NOT NULL COMMENT '责任人',
`check_item` mediumtext NOT NULL COMMENT '检查项',
`check_item_score` varchar(255) NOT NULL COMMENT '检查项分值',
`standard_score` int(10) NOT NULL DEFAULT '100' COMMENT '标准总分值',
`scheduled_start_time` date NOT NULL COMMENT '计划开始时间',
`scheduled_end_time` date NOT NULL COMMENT '计划结束时间',
`hygiene_status` varchar(20) NOT NULL DEFAULT 'WAITING' COMMENT '卫生自查状态',
`create_user` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建人',
`create_dept` bigint(20) NOT NULL DEFAULT '-1' COMMENT '创建部门',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
@ -196,14 +208,17 @@ CREATE TABLE `hzims_hygiene_plan` (
`status` int(2) NOT NULL DEFAULT '1' COMMENT '状态',
`is_deleted` int(2) NOT NULL DEFAULT '0' COMMENT '逻辑删除状态:0-未删除,1-删除',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='卫生自查表' ROW_FORMAT=Dynamic;
) ENGINE=INNODB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='卫生自查区域' ROW_FORMAT=Dynamic;
CREATE TABLE `hzims_hygiene_record` (
`id` bigint(20) NOT NULL COMMENT '主键id',
`hygiene_plan_id` bigint(20) NOT NULL COMMENT '卫生自查计划id',
`unit` varchar(50) NOT NULL COMMENT '单位',
`code` varchar(50) NOT NULL COMMENT '编号',
`actual_start_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '实际开始时间',
`actual_end_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '实际结束时间',
`check_user` varchar(20) NOT NULL DEFAULT '' COMMENT '检查人',
`hygiene_zone_ids` varchar(1000) NOT NULL COMMENT '卫生自查区域id',
`check_result` mediumtext NOT NULL COMMENT '检查结果',
`comprehensive_score` int(10) NOT NULL COMMENT '综合评分',
`week_num` int(10) NOT NULL COMMENT '周数',

Loading…
Cancel
Save