From 99b53c056b309b935c8eb23a0ddf244bd4f4df96 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期日, 01 九月 2024 21:54:32 +0800 Subject: [PATCH] 报备功能优化 --- ycl-server/src/main/java/com/ycl/platform/service/ReportAuditingRecordService.java | 11 + ycl-server/src/main/java/com/ycl/task/ContractTask.java | 14 - ycl-pojo/src/main/java/com/ycl/platform/domain/vo/YwPointVO.java | 3 ycl-server/src/main/java/com/ycl/platform/mapper/ReportErrorTypeMapper.java | 16 + ycl-server/src/main/java/com/ycl/platform/service/ReportErrorTypeService.java | 11 + ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java | 177 +++++++++++++---- ycl-pojo/src/main/java/com/ycl/platform/domain/form/ReportForm.java | 7 /dev/null | 53 ----- ycl-server/src/main/java/com/ycl/platform/service/impl/ReportErrorTypeServiceImpl.java | 15 + ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml | 27 ++ ycl-pojo/src/main/java/com/ycl/platform/domain/entity/Report.java | 10 ycl-pojo/src/main/java/com/ycl/platform/domain/query/ReportQuery.java | 3 ycl-server/src/main/java/com/ycl/platform/service/impl/ReportAuditingRecordServiceImpl.java | 18 + ycl-server/src/main/java/com/ycl/platform/mapper/YwPointMapper.java | 16 + ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml | 40 ++- ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ReportAuditingRecord.java | 54 +++++ ycl-server/src/main/java/com/ycl/platform/mapper/ReportAuditingRecordMapper.java | 13 + ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ReportErrorType.java | 41 ++++ ycl-server/src/main/java/com/ycl/platform/service/impl/YwPointServiceImpl.java | 3 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/ReportVO.java | 19 + 20 files changed, 415 insertions(+), 136 deletions(-) diff --git a/ycl-common/src/main/java/enumeration/general/ErrorTypeEnum.java b/ycl-common/src/main/java/enumeration/general/ErrorTypeEnum.java deleted file mode 100644 index 9ba2459..0000000 --- a/ycl-common/src/main/java/enumeration/general/ErrorTypeEnum.java +++ /dev/null @@ -1,53 +0,0 @@ -package enumeration.general; - -import lombok.Getter; - -/** - * @author gonghl - * @since 2024/8/22 涓嬪崍 2:44 - */ -@Getter -public enum ErrorTypeEnum { - - VIDEOMISS("褰曞儚缂哄け"), - NOVIDEO("鏃犲綍鍍�"), - PLATFORMOFFLINE("骞冲彴绂荤嚎"), - SEVERINTERRUPT("鏈嶅姟涓柇"), - POINTINFOERRO("鐐逛綅淇℃伅閿欒"), - POINTINFOMISS("鐐逛綅淇℃伅涓嶅叏"), - SIGNALMISS("淇″彿缂哄け"), - SCREENCOLOR("鐢婚潰鍋忚壊"), - SCREENSNOW("闆姳骞叉壈"), - SCREENSTRIP("鏉$汗骞叉壈,"), - SCREENSHADE("鐢婚潰閬尅"), - SCREENBLUR("娓呮櫚搴﹀紓甯�"), - SCREENLIGHT("浜害寮傚父"), - DEVICEOFFLINE("璁惧绂荤嚎"), - UNKNOWN("鏈煡"), - CLOCKSKEW("鏃堕挓鍋忓樊"), - OSD("OSD寮傚父"), - MONITORUNQUALIFY("涓�鏈轰竴妗d笉鍚堟牸"), - VIDEOORPICUNNORMAL("瑙嗛鎷夋祦銆佸浘鐗囪幏鍙栧紓甯�"), - PICUNUSEFUL("澶у浘涓嶅彲鐢�"), - PICURLABNORMAL("鍥剧墖璁块棶寮傚父"); - - private final String value; - - ErrorTypeEnum(String value) { - this.value = value; - } - - public static String getEnumValue(String value) { - String[] values = value.split(","); - StringBuilder sb = new StringBuilder(); - for (int i = 0; i < values.length; i++) { - sb.append(ErrorTypeEnum.valueOf(values[i]).getValue()); - if (i != values.length - 1) { - sb.append(","); - } - } - return sb.toString(); - } - - -} diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/Report.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/Report.java index 93d08bb..55800aa 100644 --- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/Report.java +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/Report.java @@ -39,10 +39,6 @@ @TableField("report_type") private String reportType; - @ApiModelProperty("瀹℃牳鏃堕棿") - @TableField("auditing_time") - private Date auditingTime; - @ApiModelProperty("鎶ュ鍐呭") @TableField("report_content") private String reportContent; @@ -55,13 +51,9 @@ @TableField("error_type") private String errorType; - @ApiModelProperty("鐘舵��") + @ApiModelProperty("鐘舵��: 0锛氭湭瀹℃牳锛�1锛氬鏍搁�氳繃锛�2锛氬鏍搁┏鍥�") @TableField("status") private Integer status; - - @ApiModelProperty("瀹℃牳鎰忚") - @TableField("audit_opinion") - private String auditOpinion; @ApiModelProperty("鐢熸晥鏃堕棿") @TableField("begin_create_time") diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ReportAuditingRecord.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ReportAuditingRecord.java new file mode 100644 index 0000000..2d561b5 --- /dev/null +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ReportAuditingRecord.java @@ -0,0 +1,54 @@ +package com.ycl.platform.domain.entity; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; + +/** + * 鎶ュ瀹℃牳璁板綍 + * + * @author锛歺p + * @date锛�2024/9/1 21:03 + */ +@Data +@TableName("t_report_auditing_record") +public class ReportAuditingRecord { + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 鎶ュid + */ + @TableField("report_id") + private Integer reportId; + + /** + * 瀹℃牳缁撴灉 + */ + @TableField("result") + private Boolean result; + + /** + * 瀹℃牳鎰忚 + */ + @TableField("result_remark") + private String resultRemark; + + + /** + * 鍒涘缓鏃堕棿 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @TableField(value = "create_time",fill = FieldFill.INSERT) + private Date createTime; + + /** + * 閫昏緫鍒犻櫎 + */ + @TableField(value = "deleted", fill = FieldFill.INSERT) + private Integer deleted; + +} diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ReportErrorType.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ReportErrorType.java new file mode 100644 index 0000000..c7a9ba7 --- /dev/null +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ReportErrorType.java @@ -0,0 +1,41 @@ +package com.ycl.platform.domain.entity; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ycl.platform.base.AbsEntity; +import lombok.Data; + +import java.util.Date; + +/** + * 鎶ュ鏁呴殰绫诲瀷 + * + * @author锛歺p + * @date锛�2024/9/1 15:42 + */ +@Data +@TableName("t_report_error_type") +public class ReportErrorType { + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 鍒涘缓鏃堕棿 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @TableField(value = "create_time",fill = FieldFill.INSERT) + private Date createTime; + + @TableField("report_id") + private Integer reportId; + + @TableField("error_type") + private String errorType; + + /** + * 閫昏緫鍒犻櫎 + */ + @TableField(value = "deleted", fill = FieldFill.INSERT) + private Integer deleted; +} diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/form/ReportForm.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/form/ReportForm.java index c5029f2..6be0198 100644 --- a/ycl-pojo/src/main/java/com/ycl/platform/domain/form/ReportForm.java +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/form/ReportForm.java @@ -15,6 +15,7 @@ import org.springframework.web.multipart.MultipartFile; import java.util.Date; +import java.util.List; /** * 鎶ュ琛ㄥ崟 @@ -31,7 +32,7 @@ private Integer peopleId; - @ApiModelProperty("鐐逛綅") + @ApiModelProperty("鐐逛綅鍥芥爣鐮�") private String pointId; @ApiModelProperty("瀵煎叆鐐逛綅") @@ -45,7 +46,7 @@ @JsonFormat(pattern = "yyyy-MM-dd") private Date endCreateTime; - @ApiModelProperty("瀹℃牳绫诲瀷") + @ApiModelProperty("鎶ュ绫诲瀷") private String reportType; @NotBlank(message = "鎶ュ鍐呭涓嶈兘涓虹┖", groups = {Add.class, Update.class}) @@ -57,7 +58,7 @@ private String reportMaterials; @ApiModelProperty("鏁呴殰绫诲瀷") - private String errorType; + private List<String> errorTypeList; public static Report getEntityByForm(@NonNull ReportForm form, Report entity) { if(entity == null) { diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/ReportQuery.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/ReportQuery.java index 50b9caf..6f954c5 100644 --- a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/ReportQuery.java +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/ReportQuery.java @@ -38,5 +38,8 @@ @ApiModelProperty("鐘舵��") private Integer status; + @ApiModelProperty("鏁呴殰绫诲瀷") + private List<String> errorTypeList; + } diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/ReportVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/ReportVO.java index 1be1ae5..ef49b3d 100644 --- a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/ReportVO.java +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/ReportVO.java @@ -10,6 +10,7 @@ import org.springframework.lang.NonNull; import java.util.Date; +import java.util.List; /** * 鎶ュ灞曠ず @@ -34,6 +35,8 @@ /** 璁惧缂栫爜 */ private String serialNumber; + private String pointId; + @Excel(name = "鐐逛綅") private String pointName; @@ -53,6 +56,18 @@ @Excel(name = "鏁呴殰绫诲瀷") private String errorType; + private List<String> errorTypeList; + + /** + * 瀹℃牳缁撴灉 + */ + private Boolean result; + + /** + * 瀹℃牳鎰忚 + */ + private String resultRemark; + /** 瀹℃牳鏃堕棿 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Excel(name = "瀹℃牳鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd") @@ -61,13 +76,13 @@ /** * 鐢熸晥鏃堕棿 */ - @JsonFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date beginCreateTime; /** * 澶辨晥鏃堕棿 */ - @JsonFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date endCreateTime; /** diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/YwPointVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/YwPointVO.java index 402e102..42ae6e1 100644 --- a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/YwPointVO.java +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/YwPointVO.java @@ -58,6 +58,9 @@ /** 閮ㄧ骇鏍囩 */ private Boolean deptTag; + /** 鍥芥爣鐮� */ + private String serialNumber; + public static YwPointVO getVoByEntity(@NonNull YwPoint entity, YwPointVO vo) { if(vo == null) { vo = new YwPointVO(); diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/ReportAuditingRecordMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/ReportAuditingRecordMapper.java new file mode 100644 index 0000000..bc9d908 --- /dev/null +++ b/ycl-server/src/main/java/com/ycl/platform/mapper/ReportAuditingRecordMapper.java @@ -0,0 +1,13 @@ +package com.ycl.platform.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ycl.platform.domain.entity.ReportAuditingRecord; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author锛歺p + * @date锛�2024/9/1 21:07 + */ +@Mapper +public interface ReportAuditingRecordMapper extends BaseMapper<ReportAuditingRecord> { +} diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/ReportErrorTypeMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/ReportErrorTypeMapper.java new file mode 100644 index 0000000..9808d22 --- /dev/null +++ b/ycl-server/src/main/java/com/ycl/platform/mapper/ReportErrorTypeMapper.java @@ -0,0 +1,16 @@ +package com.ycl.platform.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ycl.platform.domain.entity.ReportErrorType; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author锛歺p + * @date锛�2024/9/1 15:44 + */ +@Mapper +public interface ReportErrorTypeMapper extends BaseMapper<ReportErrorType> { + + + +} diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/YwPointMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/YwPointMapper.java index 32860fa..14afa13 100644 --- a/ycl-server/src/main/java/com/ycl/platform/mapper/YwPointMapper.java +++ b/ycl-server/src/main/java/com/ycl/platform/mapper/YwPointMapper.java @@ -61,4 +61,20 @@ * @param pointList */ int updatePoint(List<YwPoint> pointList); + + /** + * 缁熻鏌愮偣浣嶅搴旂殑鏈畬鎴愬伐鍗曟暟閲忥紝鐞嗚涓婃渶澶у�间负1涓伐鍗� + * + * @param pointId + * @return + */ + YwPointVO countNotFinishedWorkOrderByPointId(@Param("pointId") Integer pointId); + + /** + * 缁熻鏌愮偣浣嶅搴旂殑鏈畬鎴愬伐鍗曟暟閲忥紝鐞嗚涓婃渶澶у�间负1涓伐鍗� + * + * @param serialNumber + * @return + */ + YwPointVO countNotFinishedWorkOrderByGb(@Param("serialNumber") String serialNumber); } diff --git a/ycl-server/src/main/java/com/ycl/platform/service/ReportAuditingRecordService.java b/ycl-server/src/main/java/com/ycl/platform/service/ReportAuditingRecordService.java new file mode 100644 index 0000000..cf6b929 --- /dev/null +++ b/ycl-server/src/main/java/com/ycl/platform/service/ReportAuditingRecordService.java @@ -0,0 +1,11 @@ +package com.ycl.platform.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ycl.platform.domain.entity.ReportAuditingRecord; + +/** + * @author锛歺p + * @date锛�2024/9/1 21:07 + */ +public interface ReportAuditingRecordService extends IService<ReportAuditingRecord> { +} diff --git a/ycl-server/src/main/java/com/ycl/platform/service/ReportErrorTypeService.java b/ycl-server/src/main/java/com/ycl/platform/service/ReportErrorTypeService.java new file mode 100644 index 0000000..65bc5de --- /dev/null +++ b/ycl-server/src/main/java/com/ycl/platform/service/ReportErrorTypeService.java @@ -0,0 +1,11 @@ +package com.ycl.platform.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ycl.platform.domain.entity.ReportErrorType; + +/** + * @author锛歺p + * @date锛�2024/9/1 15:48 + */ +public interface ReportErrorTypeService extends IService<ReportErrorType> { +} diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/ReportAuditingRecordServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/ReportAuditingRecordServiceImpl.java new file mode 100644 index 0000000..ea59c9d --- /dev/null +++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/ReportAuditingRecordServiceImpl.java @@ -0,0 +1,18 @@ +package com.ycl.platform.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ycl.platform.domain.entity.ReportAuditingRecord; +import com.ycl.platform.mapper.ReportAuditingRecordMapper; +import com.ycl.platform.service.ReportAuditingRecordService; +import org.springframework.stereotype.Service; + +/** + * @author锛歺p + * @date锛�2024/9/1 21:08 + */ +@Service +public class ReportAuditingRecordServiceImpl extends ServiceImpl<ReportAuditingRecordMapper, ReportAuditingRecord> implements ReportAuditingRecordService { + + + +} diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/ReportErrorTypeServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/ReportErrorTypeServiceImpl.java new file mode 100644 index 0000000..41ec91f --- /dev/null +++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/ReportErrorTypeServiceImpl.java @@ -0,0 +1,15 @@ +package com.ycl.platform.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ycl.platform.domain.entity.ReportErrorType; +import com.ycl.platform.mapper.ReportErrorTypeMapper; +import com.ycl.platform.service.ReportErrorTypeService; +import org.springframework.stereotype.Service; + +/** + * @author锛歺p + * @date锛�2024/9/1 15:49 + */ +@Service +public class ReportErrorTypeServiceImpl extends ServiceImpl<ReportErrorTypeMapper, ReportErrorType> implements ReportErrorTypeService { +} diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java index 2ccf8e2..7ad031e 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java @@ -2,27 +2,32 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; +import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.platform.domain.dto.ReportImportDTO; -import com.ycl.platform.domain.entity.Report; -import com.ycl.platform.domain.entity.YwPeople; +import com.ycl.platform.domain.entity.*; import com.ycl.platform.domain.form.ReportAuditingForm; import com.ycl.platform.domain.form.ReportForm; import com.ycl.platform.domain.query.ReportQuery; import com.ycl.platform.domain.vo.ReportVO; +import com.ycl.platform.domain.vo.YwPointVO; import com.ycl.platform.mapper.ReportMapper; import com.ycl.platform.mapper.YwPeopleMapper; import com.ycl.platform.mapper.YwPointMapper; import com.ycl.platform.mapper.YwUnitMapper; +import com.ycl.platform.service.ReportAuditingRecordService; +import com.ycl.platform.service.ReportErrorTypeService; import com.ycl.platform.service.ReportService; import com.ycl.system.Result; +import com.ycl.system.entity.SysDictData; import com.ycl.system.page.PageUtil; +import com.ycl.system.service.ISysDictTypeService; import com.ycl.utils.DateUtils; import com.ycl.utils.SecurityUtils; +import com.ycl.utils.StringUtils; import com.ycl.utils.html.EscapeUtil; import com.ycl.utils.poi.ExcelUtil; import com.ycl.utils.uuid.IdUtils; -import enumeration.general.ErrorTypeEnum; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; @@ -31,9 +36,9 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; -import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; @@ -50,6 +55,9 @@ private final YwUnitMapper unitMapper; private final YwPointMapper ywpointMapper; private final YwPeopleMapper peopleMapper; + private final ReportErrorTypeService reportErrorTypeService; + private final ISysDictTypeService dictTypeService; + private final ReportAuditingRecordService reportAuditingRecordService; /** * 娣诲姞 @@ -57,6 +65,7 @@ * @return */ @Override + @Transactional(rollbackFor = Exception.class) public Result add(ReportForm form) { if (Objects.isNull(form.getPointId())) { throw new RuntimeException("鐐逛綅涓嶈兘涓虹┖"); @@ -65,18 +74,37 @@ YwPeople people = new LambdaQueryChainWrapper<>(peopleMapper).eq(YwPeople::getUserId, userId).one(); form.setPeopleId(people.getId()); form.setUnitId(people.getBelongUnit()); + if ("浜嬪墠鎶ュ".equals(form.getReportType())) { + // 濡傛灉鏄簨鍓嶆姤澶囬渶瑕佹楠屾槸鍚﹀凡缁忕敓鎴愪笅鍙戝伐鍗� + YwPointVO point = ywpointMapper.countNotFinishedWorkOrderByGb(form.getPointId()); + if (Objects.nonNull(point)) { + throw new RuntimeException(String.format("鐐逛綅銆�%s銆戝凡缁忓瓨鍦ㄤ笅鍙戝伐鍗曪紝鏃犳硶浜嬪墠鎶ュ", point.getPointName())); + } + } + YwPoint point = new LambdaQueryChainWrapper<>(ywpointMapper) + .eq(YwPoint::getSerialNumber, form.getPointId()) + .one(); + if (Objects.isNull(point)) { + throw new RuntimeException("鐐逛綅涓嶅瓨鍦�"); + } Report entity = ReportForm.getEntityByForm(form, null); - entity.setSerialNumber(form.getPointId()); - entity.setErrorType(String.join(",", form.getErrorType())); + entity.setSerialNumber(point.getSerialNumber()); entity.setStatus(0); entity.setIdentify(IdUtils.randomNO()); Date now = new Date(); entity.setCreateTime(now); entity.setUpdateTime(now); - if(baseMapper.insert(entity) > 0) { - return Result.ok("娣诲姞鎴愬姛"); - } - return Result.error("娣诲姞澶辫触"); + baseMapper.insert(entity); + List<ReportErrorType> errorTypeList = form.getErrorTypeList().stream().map(item -> { + ReportErrorType reportErrorType = new ReportErrorType(); + reportErrorType.setErrorType(item); + reportErrorType.setDeleted(0); + reportErrorType.setCreateTime(now); + reportErrorType.setReportId(entity.getId()); + return reportErrorType; + }).collect(Collectors.toList()); + reportErrorTypeService.saveBatch(errorTypeList); + return Result.ok("鎶ュ鎴愬姛"); } @Override @@ -90,9 +118,6 @@ @SneakyThrows @Transactional public Result importData(ReportForm form) { - if (Objects.isNull(form.getImportPointId())) { - throw new RuntimeException("鐐逛綅涓嶈兘涓虹┖"); - } Long userId = SecurityUtils.getUserId(); YwPeople people = new LambdaQueryChainWrapper<>(peopleMapper).eq(YwPeople::getUserId, userId).one(); form.setPeopleId(people.getId()); @@ -101,22 +126,43 @@ ExcelUtil<ReportImportDTO> excelUtil = new ExcelUtil<>(ReportImportDTO.class); List<ReportImportDTO> list = excelUtil.importExcel(form.getImportPointId().getInputStream()); // 鎵归噺鎻掑叆 - ArrayList<Report> reports = new ArrayList<>(); - long l = System.currentTimeMillis(); - list.forEach( item -> { + String pid = IdUtils.randomNO(); + Integer success = 0; + for (ReportImportDTO item : list) { + if ("浜嬪墠鎶ュ".equals(form.getReportType())) { + // 濡傛灉鏄簨鍓嶆姤澶囬渶瑕佹楠屾槸鍚﹀凡缁忕敓鎴愪笅鍙戝伐鍗� + YwPointVO point = ywpointMapper.countNotFinishedWorkOrderByGb(item.getSerialNumber()); + if (Objects.nonNull(point)) { + throw new RuntimeException(String.format("鐐逛綅銆�%s銆戝凡缁忓瓨鍦ㄤ笅鍙戝伐鍗曪紝鏃犳硶浜嬪墠鎶ュ", point.getPointName())); + } + } + YwPoint point = new LambdaQueryChainWrapper<>(ywpointMapper) + .eq(YwPoint::getSerialNumber, form.getPointId()) + .one(); + if (Objects.isNull(point)) { + continue; + } Report entity = ReportForm.getEntityByForm(form, null); - entity.setImportBatchNumber(String.valueOf(l)); + entity.setImportBatchNumber(pid); entity.setSerialNumber(item.getSerialNumber()); entity.setStatus(0); entity.setIdentify(IdUtils.randomNO()); - entity.setCreateTime(DateUtils.getNowDate()); - entity.setUpdateTime(DateUtils.getNowDate()); - reports.add(entity); - }); - if (saveBatch(reports)) { - return Result.ok("鎴愬姛瀵煎叆" + list.size() + "鏉℃暟鎹�"); + Date now = DateUtils.getNowDate(); + entity.setCreateTime(now); + entity.setUpdateTime(now); + baseMapper.insert(entity); + List<ReportErrorType> errorTypeList = form.getErrorTypeList().stream().map(err -> { + ReportErrorType reportErrorType = new ReportErrorType(); + reportErrorType.setErrorType(err); + reportErrorType.setDeleted(0); + reportErrorType.setCreateTime(now); + reportErrorType.setReportId(entity.getId()); + return reportErrorType; + }).collect(Collectors.toList()); + reportErrorTypeService.saveBatch(errorTypeList); + success++; } - return Result.error("瀵煎叆澶辫触"); + return Result.ok("鎶ュ鐐逛綅鏁帮細" + list.size() + "锛屽鍏ユ垚鍔熸暟锛�" + success); } /** @@ -125,6 +171,7 @@ * @return */ @Override + @Transactional(rollbackFor = Exception.class) public Result update(ReportForm form) { Report entity = baseMapper.selectById(form.getId()); @@ -132,21 +179,36 @@ Assert.notNull(entity, "璁板綍涓嶅瓨鍦�"); Date now = new Date(); entity.setUpdateTime(now); - if (0 == entity.getStatus()) { - // 寰呭鏍哥殑鐩存帴鏀� - BeanUtils.copyProperties(form, entity); - baseMapper.updateById(entity); - } else if (2 == entity.getStatus()) { - // 濡傛灉鏄湭瀹℃牳閫氳繃锛岃繘琛屼慨鏀癸紝閭d箞鐩存帴鏂板锛堜负浜嗕繚瀛樺鏍歌褰曪級 - Report report = new Report(); - BeanUtils.copyProperties(entity, report); - BeanUtils.copyProperties(form, report); - report.setId(null); - report.setStatus(0); - report.setAuditingTime(null); - report.setAuditOpinion(null); - baseMapper.insert(report); + if ("浜嬪墠鎶ュ".equals(form.getReportType())) { + // 濡傛灉鏄簨鍓嶆姤澶囬渶瑕佹楠屾槸鍚﹀凡缁忕敓鎴愪笅鍙戝伐鍗� + YwPointVO point = ywpointMapper.countNotFinishedWorkOrderByGb(form.getPointId()); + if (Objects.nonNull(point)) { + throw new RuntimeException(String.format("鐐逛綅銆�%s銆戝凡缁忓瓨鍦ㄤ笅鍙戝伐鍗曪紝鏃犳硶浜嬪墠鎶ュ", point.getPointName())); + } } + YwPoint point = new LambdaQueryChainWrapper<>(ywpointMapper) + .eq(YwPoint::getSerialNumber, form.getPointId()) + .one(); + if (Objects.isNull(point)) { + throw new RuntimeException("鐐逛綅涓嶅瓨鍦�"); + } + BeanUtils.copyProperties(form, entity); + entity.setSerialNumber(form.getPointId()); + // 閲嶇疆涓哄緟瀹℃牳 + entity.setStatus(0); + baseMapper.updateById(entity); + new LambdaUpdateChainWrapper<>(reportErrorTypeService.getBaseMapper()) + .eq(ReportErrorType::getReportId, form.getId()) + .remove(); + List<ReportErrorType> errorTypeList = form.getErrorTypeList().stream().map(err -> { + ReportErrorType reportErrorType = new ReportErrorType(); + reportErrorType.setErrorType(err); + reportErrorType.setDeleted(0); + reportErrorType.setCreateTime(now); + reportErrorType.setReportId(entity.getId()); + return reportErrorType; + }).collect(Collectors.toList()); + reportErrorTypeService.saveBatch(errorTypeList); return Result.ok("淇敼鎴愬姛"); } @@ -185,7 +247,21 @@ public Result page(ReportQuery query) { IPage<ReportVO> page = PageUtil.getPage(query, ReportVO.class); baseMapper.page(page, query); - page.getRecords().forEach(item -> item.setErrorType(ErrorTypeEnum.getEnumValue(item.getErrorType()))); + List<SysDictData> errorTypeList = dictTypeService.selectDictDataByType("report_error_type"); + Map<String, String> dictMap = errorTypeList.stream().collect(Collectors.toMap(SysDictData::getDictValue, SysDictData::getDictLabel)); + page.getRecords().stream().forEach(item -> { + if (StringUtils.hasText(item.getErrorType())) { + item.setErrorTypeList(List.of(item.getErrorType().split(","))); + StringBuilder sb = new StringBuilder(); + item.getErrorTypeList().stream().forEach(err -> { + String s = dictMap.get(err); + if (org.springframework.util.StringUtils.hasText(s)) { + sb.append(s).append("銆�"); + } + }); + item.setErrorType(sb.substring(0, sb.length() - 1)); + } + }); return Result.ok().data(page).total(page.getTotal()); } @@ -196,10 +272,16 @@ */ @Override public Result detail(String id) { - Report entity = baseMapper.selectById(id); Assert.notNull(entity, "璁板綍涓嶅瓨鍦�"); ReportVO vo = ReportVO.getVoByEntity(entity, null); + vo.setPointId(vo.getSerialNumber()); + List<ReportErrorType> errList = new LambdaQueryChainWrapper<>(reportErrorTypeService.getBaseMapper()) + .select(ReportErrorType::getErrorType) + .eq(ReportErrorType::getReportId, id) + .list(); + List<String> list = errList.stream().map(ReportErrorType::getErrorType).collect(Collectors.toList()); + vo.setErrorTypeList(list); return Result.ok().data(vo); } @@ -224,7 +306,6 @@ page.setSize(-1); baseMapper.page(page, query); page.getRecords().forEach(item -> { - item.setErrorType(ErrorTypeEnum.getEnumValue(item.getErrorType())); item.setReportContent(EscapeUtil.clean(item.getReportContent())); }); return page.getRecords(); @@ -238,6 +319,7 @@ } @Override + @Transactional(rollbackFor = Exception.class) public Result auditing(ReportAuditingForm form) { Report report = baseMapper.selectById(form.getId()); if (Objects.isNull(report)) { @@ -248,9 +330,18 @@ } else { report.setStatus(2); } - report.setAuditOpinion(form.getAuditOpinion()); - report.setAuditingTime(new Date()); + Date now = new Date(); + report.setUpdateTime(now); baseMapper.updateById(report); + + // 娣诲姞涓�鏉″鏍歌褰� + ReportAuditingRecord reportAuditingRecord = new ReportAuditingRecord(); + reportAuditingRecord.setReportId(form.getId()); + reportAuditingRecord.setDeleted(0); + reportAuditingRecord.setCreateTime(now); + reportAuditingRecord.setResultRemark(form.getAuditOpinion()); + reportAuditingRecord.setResult(form.getAuditingResult()); + reportAuditingRecordService.save(reportAuditingRecord); return Result.ok("鎿嶄綔鎴愬姛"); } } diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/YwPointServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/YwPointServiceImpl.java index 309b427..019a3c1 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/impl/YwPointServiceImpl.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/YwPointServiceImpl.java @@ -213,6 +213,9 @@ List<YwPoint> list = new LambdaQueryChainWrapper<>(baseMapper) .eq(YwPoint::getUnitId, unitId) .like(YwPoint::getPointName, keyword) + .or() + .eq(YwPoint::getUnitId, unitId) + .like(YwPoint::getSerialNumber, keyword) .list(); List data = list.stream().map(item -> { Map map = new HashMap<String, Object>(); diff --git a/ycl-server/src/main/java/com/ycl/task/ContractTask.java b/ycl-server/src/main/java/com/ycl/task/ContractTask.java index 44d37f2..019cfa5 100644 --- a/ycl-server/src/main/java/com/ycl/task/ContractTask.java +++ b/ycl-server/src/main/java/com/ycl/task/ContractTask.java @@ -3,40 +3,34 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; -import com.mongodb.client.result.DeleteResult; -import com.ycl.platform.domain.entity.*; +import com.ycl.platform.domain.entity.ContractRuleRecord; +import com.ycl.platform.domain.entity.ContractScore; +import com.ycl.platform.domain.entity.WorkOrder; +import com.ycl.platform.domain.entity.YwPoint; import com.ycl.platform.domain.result.HK.PicAccessResult; import com.ycl.platform.domain.result.HK.SnapshotDataMonitorResult; import com.ycl.platform.domain.result.UY.RecordMetaDSumResult; import com.ycl.platform.domain.result.UY.VideoOnlineResult; import com.ycl.platform.domain.vo.CalculateRuleVO; -import com.ycl.platform.domain.vo.ContractVO; -import com.ycl.platform.domain.vo.ReportVO; import com.ycl.platform.domain.vo.WorkOrderVO; import com.ycl.platform.mapper.*; import com.ycl.platform.service.IContractScoreService; import com.ycl.utils.DateUtils; import constant.ApiConstants; -import constant.RedisConstant; import enumeration.ContractRule; import enumeration.ErrorType; import enumeration.general.AuditingStatus; -import enumeration.general.ErrorTypeEnum; -import enumeration.general.RuleDeductCategoryEnum; import enumeration.general.WorkOrderStatusEnum; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; -import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; -import javax.management.monitor.Monitor; import java.math.BigDecimal; import java.math.RoundingMode; -import java.time.LocalDate; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; diff --git a/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml index 3b06197..7ba82e0 100644 --- a/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml +++ b/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml @@ -11,6 +11,8 @@ <result column="people_id" property="peopleId" /> <result column="serial_number" property="serialNumber" /> <result column="auditing_time" property="auditingTime" /> + <result column="result" property="result" /> + <result column="result_remark" property="resultRemark" /> <result column="report_content" property="reportContent" /> <result column="report_materials" property="reportMaterials" /> <result column="error_type" property="errorType" /> @@ -18,18 +20,21 @@ <select id="page" resultType="com.ycl.platform.domain.vo.ReportVO"> SELECT - r.*, u.unit_name, p.yw_person_name as peopleName, pt.point_name + r.id, r.report_materials, r.create_time, r.report_type, r.report_content, r.status, r.serial_number as pointId, + r.begin_create_time, + r.end_create_time, + u.unit_name, + p.yw_person_name as peopleName, + pt.point_name, + GROUP_CONCAT(DISTINCT ret.error_type SEPARATOR ',') AS errorType FROM t_report r LEFT JOIN t_yw_unit u ON r.unit_id = u.id and u.deleted = 0 LEFT JOIN t_yw_people p ON r.people_id = p.id and p.deleted = 0 LEFT JOIN t_yw_point pt ON r.serial_number = pt.serial_number and pt.deleted = 0 - /* INNER JOIN ( - SELECT identify,MAX(create_time) AS create_time - FROM t_report - WHERE deleted = 0 - GROUP BY identify - ) as rr ON r.create_time = rr.create_time*/ + INNER JOIN t_report_error_type ret ON ret.report_id = r.id and ret.deleted = 0 <if test="query.errorTypeList != null and query.errorTypeList.size() > 0"> + AND ret.error_type in <foreach collection="query.errorTypeList" open="(" separator="," close=")" item="errorType">#{errorType}</foreach> + </if> WHERE r.deleted = 0 <if test="query.reportType != null and query.reportType != ''"> @@ -41,24 +46,27 @@ <if test="query.keyword != null and query.keyword != ''"> AND (pt.point_name like concat('%', #{query.keyword}, '%') OR p.yw_person_name like concat('%', #{query.keyword}, '%')) </if> + GROUP BY + r.id, r.report_materials, r.create_time, r.report_type, r.report_content, r.status, r.serial_number, + r.begin_create_time, + r.end_create_time, + u.unit_name, + p.yw_person_name, + pt.point_name ORDER BY r.update_time DESC </select> <select id="examineRecord" resultMap="BaseResultMap"> SELECT - r.*, u.unit_name, p.yw_person_name as peopleName, pt.point_name + r.*, u.unit_name, p.yw_person_name as peopleName, pt.point_name, ar.result, ar.result_remark, ar.create_time as auditing_time FROM - t_report r + t_report_auditing_record ar + INNER JOIN t_report r ON ar.report_id = r.id AND ar.report_id = #{id} AND ar.deleted = 0 LEFT JOIN t_yw_unit u ON r.unit_id = u.id and u.deleted = 0 LEFT JOIN t_yw_people p ON r.people_id = p.id and p.deleted = 0 LEFT JOIN t_yw_point pt ON r.serial_number = pt.serial_number and pt.deleted = 0 - INNER JOIN ( - SELECT identify, create_time - FROM t_report - WHERE id = #{id} AND deleted = 0 - ) as rr ON r.identify = rr.identify AND r.create_time <= rr.create_time ORDER BY - r.create_time DESC + ar.create_time DESC </select> <select id="selectNumberList" resultType="java.lang.String"> @@ -77,7 +85,7 @@ INNER JOIN t_work_order wo ON yo.serial_number = wo.serial_number AND wo.serial_number = #{serialNumber} AND wo.deleted = 0 WHERE r.status = 1 - ORDER BY r.auditing_time DESC + ORDER BY r.update_time DESC LIMIT 1 </select> diff --git a/ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml index 3991a87..70e0166 100644 --- a/ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml +++ b/ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml @@ -136,4 +136,31 @@ WHERE serial_number = #{point.serialNumber} </foreach> </update> + + <select id="countNotFinishedWorkOrderByPointId" resultType="com.ycl.platform.domain.vo.YwPointVO"> + SELECT + yp.id, yp.point_name, wo.serial_number + FROM + t_yw_point yp + INNER JOIN t_work_order wo ON yp.serial_number = wo.serial_number + AND wo.status not in ('AUDITING_SUCCESS','WAIT_DISTRIBUTE') + AND wo.deleted = 0 + AND yp.deleted = 0 + WHERE + yp.id = #{pointId} + </select> + + <select id="countNotFinishedWorkOrderByGb" resultType="com.ycl.platform.domain.vo.YwPointVO"> + SELECT + yp.id, yp.point_name, wo.serial_number + FROM + t_yw_point yp + INNER JOIN t_work_order wo ON yp.serial_number = wo.serial_number + AND wo.status not in ('AUDITING_SUCCESS','WAIT_DISTRIBUTE') + AND wo.deleted = 0 + AND yp.deleted = 0 + AND yp.serial_number = #{serialNumber} + LIMIT 1 + </select> + </mapper> -- Gitblit v1.8.0