diff --git a/cxxm/pom.xml b/cxxm/pom.xml index 68bd7959..5670901b 100644 --- a/cxxm/pom.xml +++ b/cxxm/pom.xml @@ -19,6 +19,11 @@ ruoyi-common + + com.ruoyi + ruoyi-framework + + org.projectlombok lombok diff --git a/cxxm/src/main/java/com/ruoyi/cxxm/domain/Task.java b/cxxm/src/main/java/com/ruoyi/cxxm/domain/Task.java index e57e61a6..5626b419 100644 --- a/cxxm/src/main/java/com/ruoyi/cxxm/domain/Task.java +++ b/cxxm/src/main/java/com/ruoyi/cxxm/domain/Task.java @@ -59,8 +59,8 @@ public class Task extends BaseEntity { /** * 导入时间 */ - @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "导入时间", width = 30, dateFormat = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "导入时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") private Date drsj; @@ -74,8 +74,8 @@ public class Task extends BaseEntity { /** * 下发时间 */ - @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "下发时间", width = 30, dateFormat = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "下发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") private Date xfsj; @@ -120,20 +120,41 @@ public class Task extends BaseEntity { @Excel(name = "县级巡查次数") private Long xjxccs; + /** + * 最后巡查记录id + */ + @Excel(name = "最后巡查记录id") + private Long tcId; + + + /** + * 最后巡查时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "最后巡查时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date xcsj; + + + /** + * 最后巡查人员id + */ + @Excel(name = "最后巡查人员id") + private Long xcryId; + /** * 开始时间 */ - @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") private Date kssj; /** * 结束时间 */ - @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") private Date jssj; diff --git a/cxxm/src/main/java/com/ruoyi/cxxm/domain/TaskCheck.java b/cxxm/src/main/java/com/ruoyi/cxxm/domain/TaskCheck.java index 522a5d42..b09e0e69 100644 --- a/cxxm/src/main/java/com/ruoyi/cxxm/domain/TaskCheck.java +++ b/cxxm/src/main/java/com/ruoyi/cxxm/domain/TaskCheck.java @@ -8,6 +8,7 @@ import com.ruoyi.common.annotation.Excel; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; +import com.ruoyi.common.core.domain.BaseEntity; import lombok.Data; /** @@ -17,10 +18,9 @@ import lombok.Data; * @date 2024-03-28 */ @Data -public class TaskCheck { +public class TaskCheck extends BaseEntity { private static final long serialVersionUID = 1L; - /** * id */ @@ -39,7 +39,21 @@ public class TaskCheck { * 上报情况 */ @Excel(name = "上报情况") - private String sbqk; + private String sfsb; + + /** + * 巡查时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "上报时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date sbsj; + + + /** + * 是否完成 + */ + @Excel(name = "是否完成") + private String sfwc; /** @@ -53,7 +67,7 @@ public class TaskCheck { * 巡查级别 */ @Excel(name = "巡查级别") - private Long xcjb; + private String xcjb; /** @@ -66,8 +80,8 @@ public class TaskCheck { /** * 巡查时间 */ - @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "巡查时间", width = 30, dateFormat = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "巡查时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") private Date xcsj; } diff --git a/cxxm/src/main/java/com/ruoyi/cxxm/domain/TaskCheckAudit.java b/cxxm/src/main/java/com/ruoyi/cxxm/domain/TaskCheckAudit.java index 31841323..150ea86f 100644 --- a/cxxm/src/main/java/com/ruoyi/cxxm/domain/TaskCheckAudit.java +++ b/cxxm/src/main/java/com/ruoyi/cxxm/domain/TaskCheckAudit.java @@ -35,33 +35,31 @@ public class TaskCheckAudit extends BaseEntity { private Long tcId; - /** - * 审核级别 - */ - @Excel(name = "审核级别") - private String shjb; - - /** * 审核结果 */ @Excel(name = "审核结果") private String shjg; + /** + * 审核说明 + */ + @Excel(name = "审核说明") + private String shsm; + /** * 审核时间 */ - @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") private Date shsj; /** * 审核人员id */ - @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "审核人员id", width = 30, dateFormat = "yyyy-MM-dd") - private Date shryId; + @Excel(name = "审核人员id") + private Long shryId; } diff --git a/cxxm/src/main/java/com/ruoyi/cxxm/domain/TaskCheckImage.java b/cxxm/src/main/java/com/ruoyi/cxxm/domain/TaskCheckImage.java index fc892033..80976b66 100644 --- a/cxxm/src/main/java/com/ruoyi/cxxm/domain/TaskCheckImage.java +++ b/cxxm/src/main/java/com/ruoyi/cxxm/domain/TaskCheckImage.java @@ -1,10 +1,12 @@ package com.ruoyi.cxxm.domain; +import com.baomidou.mybatisplus.annotation.TableField; import com.ruoyi.common.annotation.Excel; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; +import com.ruoyi.common.core.domain.BaseEntity; import lombok.Data; import java.util.Date; @@ -16,7 +18,7 @@ import java.util.Date; * @date 2024-03-28 */ @Data -public class TaskCheckImage { +public class TaskCheckImage extends BaseEntity { private static final long serialVersionUID = 1L; @@ -26,6 +28,11 @@ public class TaskCheckImage { @TableId(type = IdType.AUTO) private Long id; + /** + * 源文件名 + */ + @TableField(exist = false) + private String originFileName; /** * 任务巡查记录id diff --git a/cxxm/src/main/java/com/ruoyi/cxxm/domain/TaskCheckVideo.java b/cxxm/src/main/java/com/ruoyi/cxxm/domain/TaskCheckVideo.java index f48bf90f..cc6ed48d 100644 --- a/cxxm/src/main/java/com/ruoyi/cxxm/domain/TaskCheckVideo.java +++ b/cxxm/src/main/java/com/ruoyi/cxxm/domain/TaskCheckVideo.java @@ -1,5 +1,6 @@ package com.ruoyi.cxxm.domain; +import com.baomidou.mybatisplus.annotation.TableField; import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.core.domain.BaseEntity; @@ -31,6 +32,12 @@ public class TaskCheckVideo extends BaseEntity { @Excel(name = "任务巡查记录id") private Long tcId; + /** + * 源文件名 + */ + @TableField(exist = false) + private String originFileName; + /** * 存储路径 diff --git a/cxxm/src/main/java/com/ruoyi/cxxm/domain/dto/TaskCheckSubmit.java b/cxxm/src/main/java/com/ruoyi/cxxm/domain/dto/TaskCheckSubmit.java new file mode 100644 index 00000000..c248542c --- /dev/null +++ b/cxxm/src/main/java/com/ruoyi/cxxm/domain/dto/TaskCheckSubmit.java @@ -0,0 +1,17 @@ +package com.ruoyi.cxxm.domain.dto; + +import com.ruoyi.cxxm.domain.TaskCheck; +import com.ruoyi.cxxm.domain.TaskCheckImage; +import com.ruoyi.cxxm.domain.TaskCheckVideo; +import lombok.Data; + +import java.util.List; + +@Data +public class TaskCheckSubmit extends TaskCheck { + // 任务巡查图片列表 + private List taskCheckImages; + // 任务巡查视频列表 + private List taskCheckVideos; + +} \ No newline at end of file diff --git a/cxxm/src/main/java/com/ruoyi/cxxm/domain/enums/RoleName.java b/cxxm/src/main/java/com/ruoyi/cxxm/domain/enums/RoleName.java new file mode 100644 index 00000000..d7821f98 --- /dev/null +++ b/cxxm/src/main/java/com/ruoyi/cxxm/domain/enums/RoleName.java @@ -0,0 +1,27 @@ +package com.ruoyi.cxxm.domain.enums; + +/** + * 角色名称 + */ +public enum RoleName { + + // 州级管理员 + ZJGLY("州级管理员"), + // 州级调查员 + ZJDCY("州级调查员"), + // 县级管理员 + XJGLY("县级管理员"), + // 县级调查员 + XJDCY("县级调查员"); + + + private final String value; + + RoleName(String value){ + this.value = value; + } + + public String getValue() { + return value; + } +} diff --git a/cxxm/src/main/java/com/ruoyi/cxxm/domain/enums/SFSB.java b/cxxm/src/main/java/com/ruoyi/cxxm/domain/enums/SFSB.java new file mode 100644 index 00000000..54f2e966 --- /dev/null +++ b/cxxm/src/main/java/com/ruoyi/cxxm/domain/enums/SFSB.java @@ -0,0 +1,22 @@ +package com.ruoyi.cxxm.domain.enums; + +/** + * 是否上报 + */ +public enum SFSB { + // 未上报 + WSB("0"), + // 已上报 + YSB("1"); + + + private final String value; + + SFSB(String value) { + this.value = value; + } + + public String getValue() { + return value; + } +} diff --git a/cxxm/src/main/java/com/ruoyi/cxxm/domain/enums/SFWC.java b/cxxm/src/main/java/com/ruoyi/cxxm/domain/enums/SFWC.java new file mode 100644 index 00000000..ce2af05c --- /dev/null +++ b/cxxm/src/main/java/com/ruoyi/cxxm/domain/enums/SFWC.java @@ -0,0 +1,19 @@ +package com.ruoyi.cxxm.domain.enums; + +public enum SFWC { + // 未完成 + WWC("0"), + // 已完成 + YWC("1"); + + + private final String value; + + SFWC(String value) { + this.value = value; + } + + public String getValue() { + return value; + } +} diff --git a/cxxm/src/main/java/com/ruoyi/cxxm/domain/enums/SHJG.java b/cxxm/src/main/java/com/ruoyi/cxxm/domain/enums/SHJG.java new file mode 100644 index 00000000..b4ffe796 --- /dev/null +++ b/cxxm/src/main/java/com/ruoyi/cxxm/domain/enums/SHJG.java @@ -0,0 +1,19 @@ +package com.ruoyi.cxxm.domain.enums; + +public enum SHJG { + // 不通过 + FALSE("2"), + // 通过 + TRUE("1"); + + + private final String value; + + SHJG(String value) { + this.value = value; + } + + public String getValue() { + return value; + } +} diff --git a/cxxm/src/main/java/com/ruoyi/cxxm/domain/enums/XCJB.java b/cxxm/src/main/java/com/ruoyi/cxxm/domain/enums/XCJB.java new file mode 100644 index 00000000..aa62e314 --- /dev/null +++ b/cxxm/src/main/java/com/ruoyi/cxxm/domain/enums/XCJB.java @@ -0,0 +1,19 @@ +package com.ruoyi.cxxm.domain.enums; + +public enum XCJB { + // 州级 + ZJ("1"), + // 县级 + XJ("2"); + + + private final String value; + + XCJB(String value) { + this.value = value; + } + + public String getValue() { + return value; + } +} diff --git a/cxxm/src/main/java/com/ruoyi/cxxm/domain/enums/XCQK.java b/cxxm/src/main/java/com/ruoyi/cxxm/domain/enums/XCQK.java new file mode 100644 index 00000000..30a93f65 --- /dev/null +++ b/cxxm/src/main/java/com/ruoyi/cxxm/domain/enums/XCQK.java @@ -0,0 +1,21 @@ +package com.ruoyi.cxxm.domain.enums; + +/** + * 巡查情况 + */ +public enum XCQK { + // 未巡查 + WXC("0"), + // 已巡查 + YXC("1"); + + private final String value; + + XCQK(String value) { + this.value = value; + } + + public String getValue() { + return value; + } +} diff --git a/cxxm/src/main/java/com/ruoyi/cxxm/domain/enums/XFQK.java b/cxxm/src/main/java/com/ruoyi/cxxm/domain/enums/XFQK.java new file mode 100644 index 00000000..f0043baf --- /dev/null +++ b/cxxm/src/main/java/com/ruoyi/cxxm/domain/enums/XFQK.java @@ -0,0 +1,22 @@ +package com.ruoyi.cxxm.domain.enums; + +/** + * 下发情况 + */ +public enum XFQK { + + // 未下发 + WXF("0"), + // 已下发 + YXF("1"); + + private final String value; + + XFQK(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + } diff --git a/cxxm/src/main/java/com/ruoyi/cxxm/domain/query/TaskQuery.java b/cxxm/src/main/java/com/ruoyi/cxxm/domain/query/TaskQuery.java new file mode 100644 index 00000000..3ac5c42a --- /dev/null +++ b/cxxm/src/main/java/com/ruoyi/cxxm/domain/query/TaskQuery.java @@ -0,0 +1,12 @@ +package com.ruoyi.cxxm.domain.query; + +import com.ruoyi.cxxm.domain.Task; +import lombok.Data; + +import java.util.List; + +@Data +public class TaskQuery extends Task { + // 导入时间区间 + private List drsjQuery; +} diff --git a/cxxm/src/main/java/com/ruoyi/cxxm/domain/vo/AppTypeVo.java b/cxxm/src/main/java/com/ruoyi/cxxm/domain/vo/AppTypeVo.java new file mode 100644 index 00000000..6ab3b8e0 --- /dev/null +++ b/cxxm/src/main/java/com/ruoyi/cxxm/domain/vo/AppTypeVo.java @@ -0,0 +1,30 @@ +package com.ruoyi.cxxm.domain.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +@Data +@TableName("sys_dict_data") +public class AppTypeVo { + // 名称 + @TableField(value = "dict_label") + private String name; + // 图标地址 + @TableField(value = "remark") + private String icon; + // 颜色 + @TableField(value = "css_class") + private String color; + // 排序 + @TableField(value = "dict_sort") + private Integer sort; + // 类型 + @TableField(value = "dict_type") + @JsonIgnore + private String dictType; + // 值 + @TableField(value = "dict_value") + private String value; +} diff --git a/cxxm/src/main/java/com/ruoyi/cxxm/domain/vo/TaskCheckLog.java b/cxxm/src/main/java/com/ruoyi/cxxm/domain/vo/TaskCheckLog.java new file mode 100644 index 00000000..8a90bfd8 --- /dev/null +++ b/cxxm/src/main/java/com/ruoyi/cxxm/domain/vo/TaskCheckLog.java @@ -0,0 +1,38 @@ +package com.ruoyi.cxxm.domain.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.cxxm.domain.TaskCheckAudit; +import com.ruoyi.cxxm.domain.TaskCheckImage; +import com.ruoyi.cxxm.domain.TaskCheckVideo; +import lombok.Data; + + +import java.util.Date; +import java.util.List; + +/** + * 巡查记录 + */ +@Data +public class TaskCheckLog { + + // 任务巡查记录id + private Long tcId; + // 任务id + private Long taskId; + // 整改情况 + private String zgqk; + // 巡查人 + private String createBy; + // 巡查时间 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date xcsj; + // 备注 + private String remark; + // 图片列表 + private List taskCheckImages; + // 视频列表 + private List taskCheckVideos; + // 审核情况 + private TaskCheckAudit taskCheckAudit; +} diff --git a/cxxm/src/main/java/com/ruoyi/cxxm/domain/vo/TaskCheckSubmitVo.java b/cxxm/src/main/java/com/ruoyi/cxxm/domain/vo/TaskCheckSubmitVo.java new file mode 100644 index 00000000..f5b6655f --- /dev/null +++ b/cxxm/src/main/java/com/ruoyi/cxxm/domain/vo/TaskCheckSubmitVo.java @@ -0,0 +1,20 @@ +package com.ruoyi.cxxm.domain.vo; + +import com.ruoyi.cxxm.domain.Tbxx; +import com.ruoyi.cxxm.domain.dto.TaskCheckSubmit; +import lombok.Data; + +import java.util.List; + +/** + * 任务巡查填报详情 + */ +@Data +public class TaskCheckSubmitVo extends TaskCheckSubmit { + // 巡查记录 + private List taskCheckLogs; + // 图斑信息 + private Tbxx tbxx; +} + + diff --git a/cxxm/src/main/java/com/ruoyi/cxxm/domain/vo/TaskDetailVo.java b/cxxm/src/main/java/com/ruoyi/cxxm/domain/vo/TaskDetailVo.java new file mode 100644 index 00000000..cf3ea9da --- /dev/null +++ b/cxxm/src/main/java/com/ruoyi/cxxm/domain/vo/TaskDetailVo.java @@ -0,0 +1,14 @@ +package com.ruoyi.cxxm.domain.vo; + +import com.ruoyi.cxxm.domain.Task; +import com.ruoyi.cxxm.domain.Tbxx; +import lombok.Data; + +@Data +public class TaskDetailVo extends Task { + + // 图斑信息 + private Tbxx tbxx; +// // 巡查提交信息 +// private TaskCheckSubmit taskCheckSubmit; +} diff --git a/cxxm/src/main/java/com/ruoyi/cxxm/mapper/AppTypeMapper.java b/cxxm/src/main/java/com/ruoyi/cxxm/mapper/AppTypeMapper.java new file mode 100644 index 00000000..9953088d --- /dev/null +++ b/cxxm/src/main/java/com/ruoyi/cxxm/mapper/AppTypeMapper.java @@ -0,0 +1,7 @@ +package com.ruoyi.cxxm.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.cxxm.domain.vo.AppTypeVo; + +public interface AppTypeMapper extends BaseMapper { +} diff --git a/cxxm/src/main/java/com/ruoyi/cxxm/mapper/DeptMapper.java b/cxxm/src/main/java/com/ruoyi/cxxm/mapper/DeptMapper.java new file mode 100644 index 00000000..4b1a8b48 --- /dev/null +++ b/cxxm/src/main/java/com/ruoyi/cxxm/mapper/DeptMapper.java @@ -0,0 +1,11 @@ +package com.ruoyi.cxxm.mapper; + +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +public interface DeptMapper { + + @Select("SELECT dept_id FROM sys_dept WHERE dept_id = #{deptId} or find_in_set(#{deptId} , ancestors)") + public List getAllAncestorsByDeptId(Long deptId); +} diff --git a/cxxm/src/main/java/com/ruoyi/cxxm/mapper/TaskMapper.java b/cxxm/src/main/java/com/ruoyi/cxxm/mapper/TaskMapper.java index 9309d218..c3c26230 100644 --- a/cxxm/src/main/java/com/ruoyi/cxxm/mapper/TaskMapper.java +++ b/cxxm/src/main/java/com/ruoyi/cxxm/mapper/TaskMapper.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.common.annotation.DataScope; import com.ruoyi.cxxm.domain.Task; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Update; import java.util.List; @@ -17,5 +18,11 @@ import java.util.List; public interface TaskMapper extends BaseMapper { @DataScope(deptAlias = "task") List selectList(@Param("ew") Wrapper queryWrapper); + + /** + * 设置tcId,xcsj和xcry_id字段为null + */ + @Update("update task set tc_id=null,xcsj=null,xcry_id=null where id=#{id}") + void setLastTcInfoFieldToNullById(Long id); } diff --git a/cxxm/src/main/java/com/ruoyi/cxxm/mapper/TbxxMapper.java b/cxxm/src/main/java/com/ruoyi/cxxm/mapper/TbxxMapper.java index 58cbf9e7..0daf409d 100644 --- a/cxxm/src/main/java/com/ruoyi/cxxm/mapper/TbxxMapper.java +++ b/cxxm/src/main/java/com/ruoyi/cxxm/mapper/TbxxMapper.java @@ -1,15 +1,73 @@ package com.ruoyi.cxxm.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.github.yulichang.base.MPJBaseMapper; import com.ruoyi.cxxm.domain.Tbxx; +import java.util.List; + /** * 图斑信息Mapper接口 * * @author ruoyi * @date 2024-03-28 */ -public interface TbxxMapper extends BaseMapper { +public interface TbxxMapper extends MPJBaseMapper { + + /** + * 查询图斑信息 + * + * @param id 图斑信息主键 + * @return 图斑信息 + */ + public Tbxx selectTbxxById(Long id); + + /** + * 查询图斑信息列表 + * + * @param tbxx 图斑信息 + * @return 图斑信息集合 + */ + public List selectTbxxList(Tbxx tbxx); + + /** + * 新增图斑信息 + * + * @param tbxx 图斑信息 + * @return 结果 + */ + public int insertTbxx(Tbxx tbxx); + + /** + * 修改图斑信息 + * + * @param tbxx 图斑信息 + * @return 结果 + */ + public int updateTbxx(Tbxx tbxx); + + /** + * 删除图斑信息 + * + * @param id 图斑信息主键 + * @return 结果 + */ + public int deleteTbxxById(Long id); + + /** + * 批量删除图斑信息 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteTbxxByIds(Long[] ids); + + /** + * 根据图斑编号查询图斑信息 + * @param tbbh + * @return + */ + public Tbxx selectTbxxByTbbh(String tbbh); } diff --git a/cxxm/src/main/java/com/ruoyi/cxxm/service/ITaskCheckAuditService.java b/cxxm/src/main/java/com/ruoyi/cxxm/service/ITaskCheckAuditService.java index fe593eef..890de4bf 100644 --- a/cxxm/src/main/java/com/ruoyi/cxxm/service/ITaskCheckAuditService.java +++ b/cxxm/src/main/java/com/ruoyi/cxxm/service/ITaskCheckAuditService.java @@ -11,6 +11,11 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface ITaskCheckAuditService extends IService { - + /** + * 提交和修改审核结果 + * @param taskCheckAudit + * @return + */ + public boolean saveOrUpdateTaskCheckAudit(TaskCheckAudit taskCheckAudit); } diff --git a/cxxm/src/main/java/com/ruoyi/cxxm/service/ITaskCheckService.java b/cxxm/src/main/java/com/ruoyi/cxxm/service/ITaskCheckService.java index 7f807084..dd4cc341 100644 --- a/cxxm/src/main/java/com/ruoyi/cxxm/service/ITaskCheckService.java +++ b/cxxm/src/main/java/com/ruoyi/cxxm/service/ITaskCheckService.java @@ -1,8 +1,12 @@ package com.ruoyi.cxxm.service; +import java.io.IOException; import java.util.List; import com.ruoyi.cxxm.domain.TaskCheck; import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.cxxm.domain.dto.TaskCheckSubmit; +import org.springframework.web.multipart.MultipartFile; + /** * 任务巡查记录Service接口 * @@ -11,6 +15,27 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface ITaskCheckService extends IService { + /** + * 保存任务提交记录和文件 + * @param taskCheckSubmit + * @param files + * @return + * @throws IOException + */ + public boolean saveTaskCheckSubmitAndFiles(TaskCheckSubmit taskCheckSubmit, List files) throws IOException; + /** + * 上报填报记录 + * @param tcId + * @return + */ + public boolean reportTaskCheckInfo(Long tcId); + + /** + * 取消上报填报记录 + * @param tcId + * @return + */ + public boolean cancelReportTaskCheckInfo(Long tcId); } diff --git a/cxxm/src/main/java/com/ruoyi/cxxm/service/ITaskService.java b/cxxm/src/main/java/com/ruoyi/cxxm/service/ITaskService.java index e0c3ec6c..5beaf985 100644 --- a/cxxm/src/main/java/com/ruoyi/cxxm/service/ITaskService.java +++ b/cxxm/src/main/java/com/ruoyi/cxxm/service/ITaskService.java @@ -3,6 +3,9 @@ package com.ruoyi.cxxm.service; import java.util.List; import com.ruoyi.cxxm.domain.Task; import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.cxxm.domain.Tbxx; +import org.springframework.transaction.annotation.Transactional; + /** * 任务Service接口 * @@ -12,5 +15,18 @@ import com.baomidou.mybatisplus.extension.service.IService; public interface ITaskService extends IService { + /** + * 导入任务 + * @param tbxx + * @return + */ + public int importTaskByTbxx(Tbxx tbxx,String rwlx); + + /** + * 根据taskIds删除任务和图斑信息 + * @param taskIds + * @return + */ + public int removeTaskAndTbxxByTaskIds(List taskIds); } diff --git a/cxxm/src/main/java/com/ruoyi/cxxm/service/ITbxxService.java b/cxxm/src/main/java/com/ruoyi/cxxm/service/ITbxxService.java index bb4ae24a..4ec837a7 100644 --- a/cxxm/src/main/java/com/ruoyi/cxxm/service/ITbxxService.java +++ b/cxxm/src/main/java/com/ruoyi/cxxm/service/ITbxxService.java @@ -1,16 +1,71 @@ package com.ruoyi.cxxm.service; import java.util.List; + import com.ruoyi.cxxm.domain.Tbxx; import com.baomidou.mybatisplus.extension.service.IService; + /** * 图斑信息Service接口 * * @author ruoyi * @date 2024-03-28 */ -public interface ITbxxService extends IService -{ +public interface ITbxxService extends IService { + /** + * 查询图斑信息 + * + * @param id 图斑信息主键 + * @return 图斑信息 + */ + public Tbxx selectTbxxById(Long id); + /** + * 查询图斑信息列表 + * + * @param tbxx 图斑信息 + * @return 图斑信息集合 + */ + public List selectTbxxList(Tbxx tbxx); + + /** + * 新增图斑信息 + * + * @param tbxx 图斑信息 + * @return 结果 + */ + public int insertTbxx(Tbxx tbxx); + + /** + * 修改图斑信息 + * + * @param tbxx 图斑信息 + * @return 结果 + */ + public int updateTbxx(Tbxx tbxx); + + /** + * 批量删除图斑信息 + * + * @param ids 需要删除的图斑信息主键集合 + * @return 结果 + */ + public int deleteTbxxByIds(Long[] ids); + + /** + * 删除图斑信息信息 + * + * @param id 图斑信息主键 + * @return 结果 + */ + public int deleteTbxxById(Long id); + + /** + * 根据图斑编号查询图斑信息 + * + * @param tbbh + * @return + */ + public Tbxx selectTbxxByTbbh(String tbbh); } diff --git a/cxxm/src/main/java/com/ruoyi/cxxm/service/impl/TaskCheckAuditServiceImpl.java b/cxxm/src/main/java/com/ruoyi/cxxm/service/impl/TaskCheckAuditServiceImpl.java index ad02270f..79a78ea0 100644 --- a/cxxm/src/main/java/com/ruoyi/cxxm/service/impl/TaskCheckAuditServiceImpl.java +++ b/cxxm/src/main/java/com/ruoyi/cxxm/service/impl/TaskCheckAuditServiceImpl.java @@ -1,10 +1,20 @@ package com.ruoyi.cxxm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.cxxm.domain.TaskCheck; +import com.ruoyi.cxxm.domain.enums.SFWC; +import com.ruoyi.cxxm.domain.enums.SHJG; import com.ruoyi.cxxm.mapper.TaskCheckAuditMapper; import com.ruoyi.cxxm.domain.TaskCheckAudit; +import com.ruoyi.cxxm.mapper.TaskCheckMapper; import com.ruoyi.cxxm.service.ITaskCheckAuditService; +import com.ruoyi.cxxm.service.ITaskCheckService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Objects; /** @@ -16,5 +26,34 @@ import org.springframework.stereotype.Service; @Service public class TaskCheckAuditServiceImpl extends ServiceImpl implements ITaskCheckAuditService{ + @Autowired + private ITaskCheckService taskCheckService; + + /** + * 提交和修改审核结果 + * @param taskCheckAudit + * @return + */ + @Override + @Transactional + public boolean saveOrUpdateTaskCheckAudit(TaskCheckAudit taskCheckAudit) { + Long tcId = taskCheckAudit.getTcId(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(TaskCheck::getId,tcId); + queryWrapper.last("limit 1"); + TaskCheck taskCheck = taskCheckService.getOne(queryWrapper); + // 审核通过,巡查已完成 + if (Objects.equals(taskCheckAudit.getShjg(), SHJG.TRUE.getValue())){ + taskCheck.setSfwc(SFWC.YWC.getValue()); + taskCheckService.saveOrUpdate(taskCheck); + } + // 审核不通过,巡查未完成 + if (Objects.equals(taskCheckAudit.getShjg(), SHJG.FALSE.getValue())){ + taskCheck.setSfwc(SFWC.WWC.getValue()); + taskCheckService.saveOrUpdate(taskCheck); + } + this.saveOrUpdate(taskCheckAudit); + return true; + } } diff --git a/cxxm/src/main/java/com/ruoyi/cxxm/service/impl/TaskCheckServiceImpl.java b/cxxm/src/main/java/com/ruoyi/cxxm/service/impl/TaskCheckServiceImpl.java index 0b4e2cdd..07b65e25 100644 --- a/cxxm/src/main/java/com/ruoyi/cxxm/service/impl/TaskCheckServiceImpl.java +++ b/cxxm/src/main/java/com/ruoyi/cxxm/service/impl/TaskCheckServiceImpl.java @@ -1,10 +1,37 @@ package com.ruoyi.cxxm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.config.RuoYiConfig; +import com.ruoyi.common.core.domain.entity.SysRole; +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.common.exception.ServiceException; +import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.utils.file.FileUploadUtils; +import com.ruoyi.cxxm.domain.Task; +import com.ruoyi.cxxm.domain.TaskCheckImage; +import com.ruoyi.cxxm.domain.TaskCheckVideo; +import com.ruoyi.cxxm.domain.dto.TaskCheckSubmit; +import com.ruoyi.cxxm.domain.enums.RoleName; +import com.ruoyi.cxxm.domain.enums.SFSB; +import com.ruoyi.cxxm.domain.enums.XCJB; import com.ruoyi.cxxm.mapper.TaskCheckMapper; import com.ruoyi.cxxm.domain.TaskCheck; +import com.ruoyi.cxxm.mapper.TaskMapper; +import com.ruoyi.cxxm.service.ITaskCheckImageService; import com.ruoyi.cxxm.service.ITaskCheckService; +import com.ruoyi.cxxm.service.ITaskCheckVideoService; +import com.ruoyi.cxxm.service.ITaskService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.List; +import java.util.Objects; /** @@ -14,7 +41,198 @@ import org.springframework.stereotype.Service; * @date 2024-03-28 */ @Service -public class TaskCheckServiceImpl extends ServiceImpl implements ITaskCheckService{ +public class TaskCheckServiceImpl extends ServiceImpl implements ITaskCheckService { + @Autowired + private ITaskCheckService taskCheckService; + @Autowired + private ITaskService taskService; + @Autowired + private ITaskCheckImageService taskCheckImageService; + @Autowired + private ITaskCheckVideoService taskCheckVideoService; + @Autowired + private TaskMapper taskMapper; + + /** + * 保存任务提交记录和文件 + * + * @param taskCheckSubmit + * @param files + * @return + * @throws IOException + */ + @Override + @Transactional + public boolean saveTaskCheckSubmitAndFiles(TaskCheckSubmit taskCheckSubmit, List files) throws IOException { + // 填报数据处理 + Long userId = SecurityUtils.getUserId(); + taskCheckSubmit.setXcryId(userId); + SysUser user = SecurityUtils.getLoginUser().getUser(); + List roles = user.getRoles(); + for (SysRole role : roles) { + if (((Objects.equals(role.getRoleName(), RoleName.XJGLY.getValue())) + || Objects.equals(role.getRoleName(), RoleName.XJDCY.getValue())) + ) { + if (!Objects.equals(taskCheckSubmit.getXcjb(), XCJB.ZJ.getValue())) { + taskCheckSubmit.setXcjb(XCJB.XJ.getValue()); + } + + } + if ((Objects.equals(role.getRoleName(), RoleName.ZJGLY.getValue())) + || Objects.equals(role.getRoleName(), RoleName.ZJDCY.getValue())) { + taskCheckSubmit.setXcjb(XCJB.ZJ.getValue()); + } + } + // 查询任务 + Long taskId = taskCheckSubmit.getTaskId(); + Task task = taskService.getById(taskId); + if (task == null) { + throw new ServiceException(StringUtils.format("id={}的任务不存在!", taskId)); + } + // 填报数据 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(TaskCheck::getTaskId, taskId); + queryWrapper.eq(TaskCheck::getXcryId, userId); + queryWrapper.eq(TaskCheck::getSfsb, SFSB.WSB.getValue()); + queryWrapper.last("limit 1"); + TaskCheck taskCheck = taskCheckService.getOne(queryWrapper); + if (taskCheck == null) { + taskCheckService.saveOrUpdate(taskCheckSubmit); + taskCheck = taskCheckService.getOne(queryWrapper); + + } + Long tcId = taskCheck.getId(); + taskCheckSubmit.setId(tcId); + taskCheckService.saveOrUpdate(taskCheckSubmit); + // 保存图片列表 + List taskCheckImages = taskCheckSubmit.getTaskCheckImages(); + for (TaskCheckImage taskCheckImage : taskCheckImages) { + for (MultipartFile file : files) { + if (Objects.nonNull(taskCheckImage.getOriginFileName()) && Objects.equals(taskCheckImage.getOriginFileName(), file.getOriginalFilename())) { + String cclj = FileUploadUtils.upload(RuoYiConfig.getUploadPath(), file); + taskCheckImage.setCclj(cclj); + } + } + taskCheckImage.setTcId(tcId); + } + taskCheckImageService.saveOrUpdateBatch(taskCheckSubmit.getTaskCheckImages()); + // 保存视频列表 + List taskCheckVideos = taskCheckSubmit.getTaskCheckVideos(); + for (TaskCheckVideo taskCheckVideo : taskCheckVideos) { + for (MultipartFile file : files) { + if (Objects.nonNull(taskCheckVideo.getOriginFileName()) && Objects.equals(taskCheckVideo.getOriginFileName(), file.getOriginalFilename())) { + String cclj = FileUploadUtils.upload(RuoYiConfig.getUploadPath(), file); + taskCheckVideo.setCclj(cclj); + } + } + taskCheckVideo.setTcId(tcId); + } + taskCheckVideoService.saveOrUpdateBatch(taskCheckSubmit.getTaskCheckVideos()); + return true; + } + + + /** + * 上报填报记录 + * + * @param tcId + * @return + */ + @Override + @Transactional + public boolean reportTaskCheckInfo(Long tcId) { + TaskCheck taskCheck = taskCheckService.getById(tcId); + if (Objects.equals(taskCheck.getSfsb(), SFSB.YSB.getValue())) { + return true; + } + // 更新任务巡查表 + taskCheck.setId(tcId); + taskCheck.setSfsb(SFSB.YSB.getValue()); + taskCheck.setSbsj(DateUtils.getNowDate()); + taskCheckService.saveOrUpdate(taskCheck); + // 更新任务表 + Task task = taskService.getById(taskCheck.getTaskId()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(TaskCheck::getTaskId, taskCheck.getTaskId()); + queryWrapper.eq(TaskCheck::getSfsb, SFSB.YSB.getValue()); + queryWrapper.orderByDesc(TaskCheck::getXcsj); + queryWrapper.last("limit 1"); + TaskCheck lastTaskCheck = taskCheckService.getOne(queryWrapper); + if (Objects.nonNull(lastTaskCheck) && taskCheck.getXcsj().compareTo(lastTaskCheck.getXcsj()) >= 0) { + task.setTcId(tcId); + task.setXcsj(lastTaskCheck.getXcsj()); + task.setXcryId(SecurityUtils.getUserId()); + // 修改任务表巡查次数 + task.setYxccs(task.getYxccs() + 1); // 已巡查次数+1 + SysUser user = SecurityUtils.getLoginUser().getUser(); + List roles = user.getRoles(); + for (SysRole role : roles) { + if (((Objects.equals(role.getRoleName(), RoleName.XJGLY.getValue())) + || Objects.equals(role.getRoleName(), RoleName.XJDCY.getValue())) + ) { + task.setZjxccs(task.getZjxccs() + 1); // 州级巡查次数+1 + } + if ((Objects.equals(role.getRoleName(), RoleName.ZJGLY.getValue())) + || Objects.equals(role.getRoleName(), RoleName.ZJDCY.getValue())) { + task.setZjxccs(task.getZjxccs() + 1); // 县级巡查次数+1 + } + } + taskService.saveOrUpdate(task); + } + return true; + } + + /** + * 取消上报 + * + * @param tcId + * @return + */ + @Override + @Transactional + public boolean cancelReportTaskCheckInfo(Long tcId) { + TaskCheck taskCheck = taskCheckService.getById(tcId); + if (Objects.equals(taskCheck.getSfsb(), SFSB.WSB.getValue())) { + return true; + } + // 更新任务巡查表 + taskCheck.setId(tcId); + taskCheck.setSfsb(SFSB.WSB.getValue()); + taskCheck.setSbsj(DateUtils.getNowDate()); + taskCheckService.saveOrUpdate(taskCheck); + // 更新任务表 + Task task = taskService.getById(taskCheck.getTaskId()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(TaskCheck::getTaskId, taskCheck.getTaskId()); + queryWrapper.eq(TaskCheck::getSfsb, SFSB.YSB.getValue()); + queryWrapper.orderByDesc(TaskCheck::getXcsj); + queryWrapper.last("limit 1"); + TaskCheck lastTaskCheck = taskCheckService.getOne(queryWrapper); + // 修改任务表巡查次数 + task.setYxccs(task.getYxccs() - 1); // 已巡查次数-1 + SysUser user = SecurityUtils.getLoginUser().getUser(); + List roles = user.getRoles(); + for (SysRole role : roles) { + if (((Objects.equals(role.getRoleName(), RoleName.XJGLY.getValue())) + || Objects.equals(role.getRoleName(), RoleName.XJDCY.getValue())) + ) { + task.setZjxccs(task.getZjxccs() - 1); // 州级巡查次数-1 + } + if ((Objects.equals(role.getRoleName(), RoleName.ZJGLY.getValue())) + || Objects.equals(role.getRoleName(), RoleName.ZJDCY.getValue())) { + task.setZjxccs(task.getZjxccs() - 1); // 县级巡查次数-1 + } + } + if (Objects.nonNull(lastTaskCheck)) { + task.setTcId(lastTaskCheck.getId()); + task.setXcsj(lastTaskCheck.getXcsj()); + task.setXcryId(lastTaskCheck.getXcryId()); + } else { + taskMapper.setLastTcInfoFieldToNullById(taskCheck.getTaskId()); + } + taskService.saveOrUpdate(task); + return true; + } } diff --git a/cxxm/src/main/java/com/ruoyi/cxxm/service/impl/TaskServiceImpl.java b/cxxm/src/main/java/com/ruoyi/cxxm/service/impl/TaskServiceImpl.java index 6f5df5c6..dbca8d69 100644 --- a/cxxm/src/main/java/com/ruoyi/cxxm/service/impl/TaskServiceImpl.java +++ b/cxxm/src/main/java/com/ruoyi/cxxm/service/impl/TaskServiceImpl.java @@ -1,10 +1,22 @@ package com.ruoyi.cxxm.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.core.domain.entity.SysDept; +import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.cxxm.domain.Tbxx; import com.ruoyi.cxxm.mapper.TaskMapper; import com.ruoyi.cxxm.domain.Task; +import com.ruoyi.cxxm.mapper.TbxxMapper; import com.ruoyi.cxxm.service.ITaskService; +import com.ruoyi.system.mapper.SysDeptMapper; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; /** @@ -14,7 +26,65 @@ import org.springframework.stereotype.Service; * @date 2024-03-28 */ @Service -public class TaskServiceImpl extends ServiceImpl implements ITaskService{ +public class TaskServiceImpl extends ServiceImpl implements ITaskService { + @Autowired + private SysDeptMapper deptMapper; + + @Autowired + private TbxxMapper tbxxMapper; + + @Autowired + private TaskMapper taskMapper; + + + /** + * 导入任务 + * @param tbxx + * @return + */ + @Override + @Transactional + public int importTaskByTbxx(Tbxx tbxx,String rwlx) { + // 新建任务信息 + Task task = new Task(); + task.setRwlx(rwlx); + task.setTbbh(tbxx.getTbbh()); + task.setTbszx(tbxx.getXian()); + task.setDrryId(SecurityUtils.getUserId()); + task.setDrsj(DateUtils.getNowDate()); + // 获取图斑所在县的部门id + String xian = tbxx.getXian(); + SysDept dept = deptMapper.selectDeptByDeptName(xian); + if (dept != null) { + task.setDeptId(dept.getDeptId()); + tbxx.setDeptId(dept.getDeptId()); + } + // 插入图斑信息 + tbxx.setCreateBy(SecurityUtils.getUsername()); + tbxx.setCreateTime(DateUtils.getNowDate()); + tbxxMapper.insertTbxx(tbxx); + // 插入任务 + return taskMapper.insert(task); + } + + /** + * 根据taskIds删除任务和图斑信息 + * @param taskIds + * @return + */ + @Override + @Transactional + public int removeTaskAndTbxxByTaskIds(List taskIds) { + // 删除图斑信息 + for (Long taskId : taskIds) { + Task task = taskMapper.selectById(taskId); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(Tbxx::getTbbh,task.getTbbh()); + tbxxMapper.delete(queryWrapper); + } + // 删除任务信息 + return taskMapper.deleteBatchIds(taskIds); + } } diff --git a/cxxm/src/main/java/com/ruoyi/cxxm/service/impl/TbxxServiceImpl.java b/cxxm/src/main/java/com/ruoyi/cxxm/service/impl/TbxxServiceImpl.java index 701746fd..03f234ff 100644 --- a/cxxm/src/main/java/com/ruoyi/cxxm/service/impl/TbxxServiceImpl.java +++ b/cxxm/src/main/java/com/ruoyi/cxxm/service/impl/TbxxServiceImpl.java @@ -1,11 +1,15 @@ package com.ruoyi.cxxm.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.utils.DateUtils; import com.ruoyi.cxxm.mapper.TbxxMapper; import com.ruoyi.cxxm.domain.Tbxx; import com.ruoyi.cxxm.service.ITbxxService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; + /** * 图斑信息Service业务层处理 @@ -14,7 +18,87 @@ import org.springframework.stereotype.Service; * @date 2024-03-28 */ @Service -public class TbxxServiceImpl extends ServiceImpl implements ITbxxService{ +public class TbxxServiceImpl extends ServiceImpl implements ITbxxService { + @Autowired + private TbxxMapper tbxxMapper; + + /** + * 查询图斑信息 + * + * @param id 图斑信息主键 + * @return 图斑信息 + */ + @Override + public Tbxx selectTbxxById(Long id) { + return tbxxMapper.selectTbxxById(id); + } + + /** + * 查询图斑信息列表 + * + * @param tbxx 图斑信息 + * @return 图斑信息 + */ + @Override + public List selectTbxxList(Tbxx tbxx) { + return tbxxMapper.selectTbxxList(tbxx); + } + + /** + * 新增图斑信息 + * + * @param tbxx 图斑信息 + * @return 结果 + */ + @Override + public int insertTbxx(Tbxx tbxx) { + tbxx.setCreateTime(DateUtils.getNowDate()); + return tbxxMapper.insertTbxx(tbxx); + } + + /** + * 修改图斑信息 + * + * @param tbxx 图斑信息 + * @return 结果 + */ + @Override + public int updateTbxx(Tbxx tbxx) { + tbxx.setUpdateTime(DateUtils.getNowDate()); + return tbxxMapper.updateTbxx(tbxx); + } + + /** + * 批量删除图斑信息 + * + * @param ids 需要删除的图斑信息主键 + * @return 结果 + */ + @Override + public int deleteTbxxByIds(Long[] ids) { + return tbxxMapper.deleteTbxxByIds(ids); + } + + /** + * 删除图斑信息信息 + * + * @param id 图斑信息主键 + * @return 结果 + */ + @Override + public int deleteTbxxById(Long id) { + return tbxxMapper.deleteTbxxById(id); + } + + /** + * 根据图斑编号查询图斑信息 + * + * @param tbbh + * @return + */ + public Tbxx selectTbxxByTbbh(String tbbh) { + return tbxxMapper.selectTbxxByTbbh(tbbh); + } } diff --git a/cxxm/src/main/resources/mapper/cxxm/TbxxMapper.xml b/cxxm/src/main/resources/mapper/cxxm/TbxxMapper.xml index 7d27a27c..172b292e 100644 --- a/cxxm/src/main/resources/mapper/cxxm/TbxxMapper.xml +++ b/cxxm/src/main/resources/mapper/cxxm/TbxxMapper.xml @@ -4,5 +4,268 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + select id, tbbh, ksmc, xkzbh, kqjb, sheng, shi, xian, xdm, xxdz, jjlx, kzlx, kcqtkz, kcfs, kczt, zdmj, wfmj, x, y, czwt, sqtbbh, bxftbbh, bqsjsj, sqsjsj, lsks, zdkqmc, zrbhqmc, gyhpmc, gyhp10, gyhp03, cjgzl10, cjgzmc, cjgz03, fjmsmc, gjgymc, ysydmc, bz, xsly, ST_AsGeoJSON(gis) as gis, create_by, create_time, update_by, update_time, remark, dept_id from tbxx + + + + + + + + insert into tbxx + + tbbh, + ksmc, + xkzbh, + kqjb, + sheng, + shi, + xian, + xdm, + xxdz, + jjlx, + kzlx, + kcqtkz, + kcfs, + kczt, + zdmj, + wfmj, + x, + y, + czwt, + sqtbbh, + bxftbbh, + bqsjsj, + sqsjsj, + lsks, + zdkqmc, + zrbhqmc, + gyhpmc, + gyhp10, + gyhp03, + cjgzl10, + cjgzmc, + cjgz03, + fjmsmc, + gjgymc, + ysydmc, + bz, + xsly, + gis, + create_by, + create_time, + update_by, + update_time, + remark, + dept_id, + + + #{tbbh}, + #{ksmc}, + #{xkzbh}, + #{kqjb}, + #{sheng}, + #{shi}, + #{xian}, + #{xdm}, + #{xxdz}, + #{jjlx}, + #{kzlx}, + #{kcqtkz}, + #{kcfs}, + #{kczt}, + #{zdmj}, + #{wfmj}, + #{x}, + #{y}, + #{czwt}, + #{sqtbbh}, + #{bxftbbh}, + #{bqsjsj}, + #{sqsjsj}, + #{lsks}, + #{zdkqmc}, + #{zrbhqmc}, + #{gyhpmc}, + #{gyhp10}, + #{gyhp03}, + #{cjgzl10}, + #{cjgzmc}, + #{cjgz03}, + #{fjmsmc}, + #{gjgymc}, + #{ysydmc}, + #{bz}, + #{xsly}, + ST_GeomFromGeoJSON(#{gis}), + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + #{deptId}, + + + + + update tbxx + + tbbh = #{tbbh}, + ksmc = #{ksmc}, + xkzbh = #{xkzbh}, + kqjb = #{kqjb}, + sheng = #{sheng}, + shi = #{shi}, + xian = #{xian}, + xdm = #{xdm}, + xxdz = #{xxdz}, + jjlx = #{jjlx}, + kzlx = #{kzlx}, + kcqtkz = #{kcqtkz}, + kcfs = #{kcfs}, + kczt = #{kczt}, + zdmj = #{zdmj}, + wfmj = #{wfmj}, + x = #{x}, + y = #{y}, + czwt = #{czwt}, + sqtbbh = #{sqtbbh}, + bxftbbh = #{bxftbbh}, + bqsjsj = #{bqsjsj}, + sqsjsj = #{sqsjsj}, + lsks = #{lsks}, + zdkqmc = #{zdkqmc}, + zrbhqmc = #{zrbhqmc}, + gyhpmc = #{gyhpmc}, + gyhp10 = #{gyhp10}, + gyhp03 = #{gyhp03}, + cjgzl10 = #{cjgzl10}, + cjgzmc = #{cjgzmc}, + cjgz03 = #{cjgz03}, + fjmsmc = #{fjmsmc}, + gjgymc = #{gjgymc}, + ysydmc = #{ysydmc}, + bz = #{bz}, + xsly = #{xsly}, + gis = ST_GeomFromGeoJSON(#{gis}), + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + dept_id = #{deptId}, + + where id = #{id} + + + + delete from tbxx where id = #{id} + + + + delete from tbxx where id in + + #{id} + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index fa603137..61ffb13d 100644 --- a/pom.xml +++ b/pom.xml @@ -2,8 +2,8 @@ - 4.0.0 - + 4.0.0 + com.ruoyi ruoyi 3.8.7 @@ -11,7 +11,7 @@ ruoyi http://www.ruoyi.vip 若依管理系统 - + 3.8.7 UTF-8 @@ -170,6 +170,11 @@ mybatis-plus-boot-starter ${mybatis-plus.version} + + com.github.yulichang + mybatis-plus-join-boot-starter + 1.4.10 + @@ -179,6 +184,12 @@ provided + + com.ruoyi + cxxm + ${ruoyi.version} + + diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java index d51d61d0..68473ddc 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java @@ -4,14 +4,12 @@ import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.constant.Constants; @@ -23,13 +21,12 @@ import com.ruoyi.framework.config.ServerConfig; /** * 通用请求处理 - * + * * @author ruoyi */ @RestController @RequestMapping("/common") -public class CommonController -{ +public class CommonController { private static final Logger log = LoggerFactory.getLogger(CommonController.class); @Autowired @@ -39,17 +36,14 @@ public class CommonController /** * 通用下载请求 - * + * * @param fileName 文件名称 - * @param delete 是否删除 + * @param delete 是否删除 */ @GetMapping("/download") - public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request) - { - try - { - if (!FileUtils.checkAllowDownload(fileName)) - { + public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request) { + try { + if (!FileUtils.checkAllowDownload(fileName)) { throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", fileName)); } String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1); @@ -58,13 +52,10 @@ public class CommonController response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); FileUtils.setAttachmentResponseHeader(response, realFileName); FileUtils.writeBytes(filePath, response.getOutputStream()); - if (delete) - { + if (delete) { FileUtils.deleteFile(filePath); } - } - catch (Exception e) - { + } catch (Exception e) { log.error("下载文件失败", e); } } @@ -73,10 +64,8 @@ public class CommonController * 通用上传请求(单个) */ @PostMapping("/upload") - public AjaxResult uploadFile(MultipartFile file) throws Exception - { - try - { + public AjaxResult uploadFile(MultipartFile file) throws Exception { + try { // 上传文件路径 String filePath = RuoYiConfig.getUploadPath(); // 上传并返回新文件名称 @@ -88,9 +77,7 @@ public class CommonController ajax.put("newFileName", FileUtils.getName(fileName)); ajax.put("originalFilename", file.getOriginalFilename()); return ajax; - } - catch (Exception e) - { + } catch (Exception e) { return AjaxResult.error(e.getMessage()); } } @@ -99,18 +86,15 @@ public class CommonController * 通用上传请求(多个) */ @PostMapping("/uploads") - public AjaxResult uploadFiles(List files) throws Exception - { - try - { + public AjaxResult uploadFiles(List files) throws Exception { + try { // 上传文件路径 String filePath = RuoYiConfig.getUploadPath(); List urls = new ArrayList(); List fileNames = new ArrayList(); List newFileNames = new ArrayList(); List originalFilenames = new ArrayList(); - for (MultipartFile file : files) - { + for (MultipartFile file : files) { // 上传并返回新文件名称 String fileName = FileUploadUtils.upload(filePath, file); String url = serverConfig.getUrl() + fileName; @@ -125,9 +109,7 @@ public class CommonController ajax.put("newFileNames", StringUtils.join(newFileNames, FILE_DELIMETER)); ajax.put("originalFilenames", StringUtils.join(originalFilenames, FILE_DELIMETER)); return ajax; - } - catch (Exception e) - { + } catch (Exception e) { return AjaxResult.error(e.getMessage()); } } @@ -137,12 +119,9 @@ public class CommonController */ @GetMapping("/download/resource") public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response) - throws Exception - { - try - { - if (!FileUtils.checkAllowDownload(resource)) - { + throws Exception { + try { + if (!FileUtils.checkAllowDownload(resource)) { throw new Exception(StringUtils.format("资源文件({})非法,不允许下载。 ", resource)); } // 本地资源路径 @@ -154,9 +133,7 @@ public class CommonController response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); FileUtils.setAttachmentResponseHeader(response, downloadName); FileUtils.writeBytes(downloadPath, response.getOutputStream()); - } - catch (Exception e) - { + } catch (Exception e) { log.error("下载文件失败", e); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cxxm/AppTypeController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cxxm/AppTypeController.java new file mode 100644 index 00000000..dbabe0cb --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cxxm/AppTypeController.java @@ -0,0 +1,37 @@ +package com.ruoyi.web.controller.cxxm; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.entity.SysDictData; +import com.ruoyi.common.core.domain.entity.SysDictType; +import com.ruoyi.common.core.page.PageDomain; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.cxxm.domain.TaskCheckAudit; +import com.ruoyi.cxxm.domain.vo.AppTypeVo; +import com.ruoyi.cxxm.mapper.AppTypeMapper; +import com.ruoyi.system.service.ISysDictDataService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequestMapping("/cxxm/app/type") +public class AppTypeController extends BaseController { + + @Autowired + private AppTypeMapper appTypeMapper; + + @GetMapping("/list") + public TableDataInfo list() + { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(AppTypeVo::getDictType,"task_lx"); + List appTypeVos = appTypeMapper.selectList(queryWrapper); + return getDataTable(appTypeVos); + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cxxm/CxxmUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cxxm/CxxmUserController.java new file mode 100644 index 00000000..7607361d --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cxxm/CxxmUserController.java @@ -0,0 +1,53 @@ +package com.ruoyi.web.controller.cxxm; + +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; + +import com.ruoyi.system.domain.CxxmUser; +import com.ruoyi.system.domain.CxxmUserXJ; +import com.ruoyi.system.service.ISysUserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +import static com.ruoyi.common.core.domain.AjaxResult.success; +import static com.ruoyi.common.utils.SecurityUtils.getUsername; + +@RestController +@RequestMapping("/cxxm/user") +public class CxxmUserController { + + @Autowired + private ISysUserService userService; + + @Log(title = "用户管理", businessType = BusinessType.IMPORT) + @PreAuthorize("@ss.hasPermi('system:user:import')") + @PostMapping("/importData") + public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception { + ExcelUtil util = new ExcelUtil(CxxmUser.class); + List userList = util.importExcel(file.getInputStream()); + String operName = getUsername(); + String message = userService.importCxxmUser(userList, updateSupport, operName); + return success(message); + } + + @PostMapping("/importTemplate") + public void importTemplate(HttpServletResponse response) { + ExcelUtil util = new ExcelUtil(CxxmUser.class); + util.importTemplateExcel(response, "用户数据"); + } + + @PostMapping("/importTemplateXJ") + public void importTemplateXJ(HttpServletResponse response) { + ExcelUtil util = new ExcelUtil(CxxmUserXJ.class); + util.importTemplateExcel(response, "用户数据"); + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cxxm/TaskCheckAuditController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cxxm/TaskCheckAuditController.java index 8ab3328d..fe960e3b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cxxm/TaskCheckAuditController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cxxm/TaskCheckAuditController.java @@ -4,6 +4,8 @@ import java.util.List; import javax.servlet.http.HttpServletResponse; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.SecurityUtils; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -31,7 +33,7 @@ import com.ruoyi.common.core.page.TableDataInfo; * @date 2024-03-28 */ @RestController -@RequestMapping("/cxxm/audit") +@RequestMapping("/cxxm/taskCheckAudit") public class TaskCheckAuditController extends BaseController { @Autowired @@ -40,7 +42,7 @@ public class TaskCheckAuditController extends BaseController /** * 查询任务巡查审核列表 */ -@PreAuthorize("@ss.hasPermi('cxxm:audit:list')") +@PreAuthorize("@ss.hasPermi('cxxm:taskCheckAudit:list')") @GetMapping("/list") public TableDataInfo list(TaskCheckAudit taskCheckAudit, PageDomain pageDomain) { @@ -52,7 +54,7 @@ public class TaskCheckAuditController extends BaseController /** * 导出任务巡查审核列表 */ - @PreAuthorize("@ss.hasPermi('cxxm:audit:export')") + @PreAuthorize("@ss.hasPermi('cxxm:taskCheckAudit:export')") @Log(title = "任务巡查审核", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, TaskCheckAudit taskCheckAudit) @@ -65,7 +67,7 @@ public class TaskCheckAuditController extends BaseController /** * 获取任务巡查审核详细信息 */ - @PreAuthorize("@ss.hasPermi('cxxm:audit:query')") + @PreAuthorize("@ss.hasPermi('cxxm:taskCheckAudit:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { @@ -75,29 +77,33 @@ public class TaskCheckAuditController extends BaseController /** * 新增任务巡查审核 */ - @PreAuthorize("@ss.hasPermi('cxxm:audit:add')") + @PreAuthorize("@ss.hasPermi('cxxm:taskCheckAudit:add')") @Log(title = "任务巡查审核", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody TaskCheckAudit taskCheckAudit) { - return toAjax(taskCheckAuditService.save(taskCheckAudit)); + taskCheckAudit.setShsj(DateUtils.getNowDate()); + taskCheckAudit.setShryId(SecurityUtils.getUserId()); + return toAjax(taskCheckAuditService.saveOrUpdate(taskCheckAudit)); } /** * 修改任务巡查审核 */ - @PreAuthorize("@ss.hasPermi('cxxm:audit:edit')") + @PreAuthorize("@ss.hasPermi('cxxm:taskCheckAudit:edit')") @Log(title = "任务巡查审核", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody TaskCheckAudit taskCheckAudit) { - return toAjax(taskCheckAuditService.updateById(taskCheckAudit)); + taskCheckAudit.setShsj(DateUtils.getNowDate()); + taskCheckAudit.setShryId(SecurityUtils.getUserId()); + return toAjax(taskCheckAuditService.saveOrUpdate(taskCheckAudit)); } /** * 删除任务巡查审核 */ - @PreAuthorize("@ss.hasPermi('cxxm:audit:remove')") + @PreAuthorize("@ss.hasPermi('cxxm:taskCheckAudit:remove')") @Log(title = "任务巡查审核", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable List ids) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cxxm/TaskCheckController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cxxm/TaskCheckController.java index f4feb966..ef3c7220 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cxxm/TaskCheckController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cxxm/TaskCheckController.java @@ -1,9 +1,23 @@ package com.ruoyi.web.controller.cxxm; +import java.io.IOException; +import java.util.ArrayList; import java.util.List; +import java.util.Objects; import javax.servlet.http.HttpServletResponse; + +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.common.utils.bean.BeanUtils; +import com.ruoyi.cxxm.domain.*; +import com.ruoyi.cxxm.domain.enums.SFSB; +import com.ruoyi.cxxm.domain.dto.TaskCheckSubmit; +import com.ruoyi.cxxm.domain.vo.TaskCheckLog; +import com.ruoyi.cxxm.domain.vo.TaskCheckSubmitVo; +import com.ruoyi.cxxm.service.*; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -11,7 +25,6 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.annotation.Log; @@ -19,10 +32,10 @@ import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.PageDomain; import com.ruoyi.common.enums.BusinessType; -import com.ruoyi.cxxm.domain.TaskCheck; -import com.ruoyi.cxxm.service.ITaskCheckService; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.core.page.TableDataInfo; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; /** * 任务巡查记录Controller @@ -31,19 +44,27 @@ import com.ruoyi.common.core.page.TableDataInfo; * @date 2024-03-28 */ @RestController -@RequestMapping("/cxxm/check") -public class TaskCheckController extends BaseController -{ +@RequestMapping("/cxxm/taskCheck") +public class TaskCheckController extends BaseController { @Autowired private ITaskCheckService taskCheckService; + @Autowired + private ITaskService taskService; + @Autowired + private ITaskCheckImageService taskCheckImageService; + @Autowired + private ITaskCheckVideoService taskCheckVideoService; + @Autowired + private ITbxxService tbxxService; + @Autowired + private ITaskCheckAuditService taskCheckAuditService; -/** - * 查询任务巡查记录列表 - */ -@PreAuthorize("@ss.hasPermi('cxxm:check:list')") -@GetMapping("/list") - public TableDataInfo list(TaskCheck taskCheck, PageDomain pageDomain) - { + /** + * 查询任务巡查记录列表 + */ + @PreAuthorize("@ss.hasPermi('cxxm:taskCheck:list')") + @GetMapping("/list") + public TableDataInfo list(TaskCheck taskCheck, PageDomain pageDomain) { startPage(); List list = taskCheckService.list(new QueryWrapper<>(taskCheck)); return getDataTable(list); @@ -52,57 +73,136 @@ public class TaskCheckController extends BaseController /** * 导出任务巡查记录列表 */ - @PreAuthorize("@ss.hasPermi('cxxm:check:export')") - @Log(title = "任务巡查记录", businessType = BusinessType.EXPORT) + @PreAuthorize("@ss.hasPermi('cxxm:taskCheck:export')") + @Log(title = "任务巡查记录导出", businessType = BusinessType.EXPORT) @PostMapping("/export") - public void export(HttpServletResponse response, TaskCheck taskCheck) - { + public void export(HttpServletResponse response, TaskCheck taskCheck) { List list = taskCheckService.list(new QueryWrapper<>(taskCheck)); ExcelUtil util = new ExcelUtil(TaskCheck.class); util.exportExcel(response, list, "任务巡查记录数据"); } /** - * 获取任务巡查记录详细信息 + * 根据taskId获取任务巡查记录详细信息 */ - @PreAuthorize("@ss.hasPermi('cxxm:check:query')") - @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") Long id) - { - return AjaxResult.success(taskCheckService.getById(id)); + @PreAuthorize("@ss.hasPermi('cxxm:taskCheck:query')") + @GetMapping(value = "/{taskId}") + public AjaxResult getInfoByTaskId(@PathVariable("taskId") Long taskId) { + TaskCheckSubmitVo taskCheckSubmitVo = new TaskCheckSubmitVo(); + // 最后一条填报内容 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(TaskCheck::getTaskId, taskId); + queryWrapper.eq(TaskCheck::getSfsb, SFSB.YSB.getValue()); + queryWrapper.orderByDesc(TaskCheck::getId); + queryWrapper.last("limit 1"); + TaskCheck taskCheck = taskCheckService.getOne(queryWrapper); + if (taskCheck == null) { + return AjaxResult.success(); + } + BeanUtils.copyProperties(taskCheck, taskCheckSubmitVo); + // 图片 + LambdaQueryWrapper tcImagesQueryWrapper = new LambdaQueryWrapper<>(); + tcImagesQueryWrapper.eq(TaskCheckImage::getTcId, taskCheck.getId()); + List taskCheckImages = taskCheckImageService.list(tcImagesQueryWrapper); + taskCheckSubmitVo.setTaskCheckImages(taskCheckImages); + // 视频 + LambdaQueryWrapper tcVideosQueryWrapper = new LambdaQueryWrapper<>(); + tcVideosQueryWrapper.eq(TaskCheckVideo::getTcId, taskCheck.getId()); + List taskCheckVideos = taskCheckVideoService.list(tcVideosQueryWrapper); + taskCheckSubmitVo.setTaskCheckVideos(taskCheckVideos); + // 图斑信息 + Task task = taskService.getById(taskCheck.getTaskId()); + Tbxx tbxx = tbxxService.selectTbxxByTbbh(task.getTbbh()); + taskCheckSubmitVo.setTbxx(tbxx); + // 填报记录列表 + LambdaQueryWrapper tcLogQueryWrapper = new LambdaQueryWrapper<>(); + tcLogQueryWrapper.eq(TaskCheck::getTaskId, taskId); + tcLogQueryWrapper.orderByDesc(TaskCheck::getId); + List tcList = taskCheckService.list(tcLogQueryWrapper); + List tcLogList = new ArrayList<>(); + for (TaskCheck item : tcList) { + // 跳过未上报,且非本人巡查的记录 + if (Objects.equals(item.getSfsb(), SFSB.WSB.getValue()) && !Objects.equals(item.getXcryId(), SecurityUtils.getUserId())) { + continue; + } + TaskCheckLog taskCheckLog = new TaskCheckLog(); + BeanUtils.copyProperties(item, taskCheckLog); + taskCheckLog.setTcId(item.getId()); + // 填报记录图片 + LambdaQueryWrapper tcLogImagesQueryWrapper = new LambdaQueryWrapper<>(); + tcLogImagesQueryWrapper.eq(TaskCheckImage::getTcId, item.getId()); + List tcLogImages = taskCheckImageService.list(tcLogImagesQueryWrapper); + taskCheckLog.setTaskCheckImages(tcLogImages); + // 填报记录视频 + LambdaQueryWrapper tcLogVideosQueryWrapper = new LambdaQueryWrapper<>(); + tcLogVideosQueryWrapper.eq(TaskCheckVideo::getTcId, item.getId()); + List tcLogVideos = taskCheckVideoService.list(tcLogVideosQueryWrapper); + taskCheckLog.setTaskCheckVideos(tcLogVideos); + // 填报记录审核 + LambdaQueryWrapper tcAuditQueryWrapper = new LambdaQueryWrapper<>(); + tcAuditQueryWrapper.eq(TaskCheckAudit::getTcId, item.getId()); + TaskCheckAudit taskCheckAudit = taskCheckAuditService.getOne(tcAuditQueryWrapper); + taskCheckLog.setTaskCheckAudit(taskCheckAudit); + tcLogList.add(taskCheckLog); + } + taskCheckSubmitVo.setTaskCheckLogs(tcLogList); + return AjaxResult.success(taskCheckSubmitVo); } /** * 新增任务巡查记录 */ - @PreAuthorize("@ss.hasPermi('cxxm:check:add')") - @Log(title = "任务巡查记录", businessType = BusinessType.INSERT) + @PreAuthorize("@ss.hasPermi('cxxm:taskCheck:add')") + @Log(title = "任务巡查记录填报", businessType = BusinessType.INSERT) @PostMapping - public AjaxResult add(@RequestBody TaskCheck taskCheck) - { - return toAjax(taskCheckService.save(taskCheck)); + public AjaxResult add(MultipartHttpServletRequest request, List files) throws IOException { + String taskCheckSubmitStr = request.getParameter("taskCheckSubmit"); + TaskCheckSubmit taskCheckSubmit = JSONObject.parseObject(taskCheckSubmitStr, TaskCheckSubmit.class); + taskCheckService.saveTaskCheckSubmitAndFiles(taskCheckSubmit, files); + return AjaxResult.success(); } /** * 修改任务巡查记录 */ - @PreAuthorize("@ss.hasPermi('cxxm:check:edit')") - @Log(title = "任务巡查记录", businessType = BusinessType.UPDATE) + @PreAuthorize("@ss.hasPermi('cxxm:taskCheck:edit')") + @Log(title = "任务巡查记录修改", businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult edit(@RequestBody TaskCheck taskCheck) - { - return toAjax(taskCheckService.updateById(taskCheck)); + public AjaxResult edit(MultipartHttpServletRequest request, List files) throws IOException { + String taskCheckSubmitStr = request.getParameter("taskCheckSubmit"); + TaskCheckSubmit taskCheckSubmit = JSONObject.parseObject(taskCheckSubmitStr, TaskCheckSubmit.class); + taskCheckService.saveTaskCheckSubmitAndFiles(taskCheckSubmit, files); + return AjaxResult.success(); } /** * 删除任务巡查记录 */ - @PreAuthorize("@ss.hasPermi('cxxm:check:remove')") - @Log(title = "任务巡查记录", businessType = BusinessType.DELETE) + @PreAuthorize("@ss.hasPermi('cxxm:taskCheck:remove')") + @Log(title = "任务巡查记录删除", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable List ids) - { + public AjaxResult remove(@PathVariable List ids) { return toAjax(taskCheckService.removeByIds(ids)); } + + /** + * 上报任务巡查记录 + */ + @PreAuthorize("@ss.hasPermi('cxxm:taskCheck:edit')") + @Log(title = "任务巡查记录上报", businessType = BusinessType.UPDATE) + @PutMapping("/report/{tcId}") + public AjaxResult report(@PathVariable Long tcId) { + return toAjax(taskCheckService.reportTaskCheckInfo(tcId)); + } + + /** + * 取消上报任务巡查记录 + */ + @PreAuthorize("@ss.hasPermi('cxxm:taskCheck:edit')") + @Log(title = "任务巡查记录上报", businessType = BusinessType.UPDATE) + @PutMapping("/cancelReport/{tcId}") + public AjaxResult cancelReport(@PathVariable Long tcId) { + return toAjax(taskCheckService.cancelReportTaskCheckInfo(tcId)); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cxxm/TaskCheckImageController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cxxm/TaskCheckImageController.java deleted file mode 100644 index f7907529..00000000 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cxxm/TaskCheckImageController.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.ruoyi.web.controller.cxxm; - -import java.util.List; -import javax.servlet.http.HttpServletResponse; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; - -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.ruoyi.common.annotation.Log; -import com.ruoyi.common.core.controller.BaseController; -import com.ruoyi.common.core.domain.AjaxResult; -import com.ruoyi.common.core.page.PageDomain; -import com.ruoyi.common.enums.BusinessType; -import com.ruoyi.cxxm.domain.TaskCheckImage; -import com.ruoyi.cxxm.service.ITaskCheckImageService; -import com.ruoyi.common.utils.poi.ExcelUtil; -import com.ruoyi.common.core.page.TableDataInfo; - -/** - * 任务巡查图片Controller - * - * @author ruoyi - * @date 2024-03-28 - */ -@RestController -@RequestMapping("/cxxm/image") -public class TaskCheckImageController extends BaseController -{ - @Autowired - private ITaskCheckImageService taskCheckImageService; - -/** - * 查询任务巡查图片列表 - */ -@PreAuthorize("@ss.hasPermi('cxxm:image:list')") -@GetMapping("/list") - public TableDataInfo list(TaskCheckImage taskCheckImage, PageDomain pageDomain) - { - startPage(); - List list = taskCheckImageService.list(new QueryWrapper<>(taskCheckImage)); - return getDataTable(list); - } - - /** - * 导出任务巡查图片列表 - */ - @PreAuthorize("@ss.hasPermi('cxxm:image:export')") - @Log(title = "任务巡查图片", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(HttpServletResponse response, TaskCheckImage taskCheckImage) - { - List list = taskCheckImageService.list(new QueryWrapper<>(taskCheckImage)); - ExcelUtil util = new ExcelUtil(TaskCheckImage.class); - util.exportExcel(response, list, "任务巡查图片数据"); - } - - /** - * 获取任务巡查图片详细信息 - */ - @PreAuthorize("@ss.hasPermi('cxxm:image:query')") - @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") Long id) - { - return AjaxResult.success(taskCheckImageService.getById(id)); - } - - /** - * 新增任务巡查图片 - */ - @PreAuthorize("@ss.hasPermi('cxxm:image:add')") - @Log(title = "任务巡查图片", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@RequestBody TaskCheckImage taskCheckImage) - { - return toAjax(taskCheckImageService.save(taskCheckImage)); - } - - /** - * 修改任务巡查图片 - */ - @PreAuthorize("@ss.hasPermi('cxxm:image:edit')") - @Log(title = "任务巡查图片", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@RequestBody TaskCheckImage taskCheckImage) - { - return toAjax(taskCheckImageService.updateById(taskCheckImage)); - } - - /** - * 删除任务巡查图片 - */ - @PreAuthorize("@ss.hasPermi('cxxm:image:remove')") - @Log(title = "任务巡查图片", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable List ids) - { - return toAjax(taskCheckImageService.removeByIds(ids)); - } -} - diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cxxm/TaskCheckVideoController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cxxm/TaskCheckVideoController.java deleted file mode 100644 index 01475c53..00000000 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cxxm/TaskCheckVideoController.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.ruoyi.web.controller.cxxm; - -import java.util.List; -import javax.servlet.http.HttpServletResponse; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; - -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.ruoyi.common.annotation.Log; -import com.ruoyi.common.core.controller.BaseController; -import com.ruoyi.common.core.domain.AjaxResult; -import com.ruoyi.common.core.page.PageDomain; -import com.ruoyi.common.enums.BusinessType; -import com.ruoyi.cxxm.domain.TaskCheckVideo; -import com.ruoyi.cxxm.service.ITaskCheckVideoService; -import com.ruoyi.common.utils.poi.ExcelUtil; -import com.ruoyi.common.core.page.TableDataInfo; - -/** - * 任务巡查视频Controller - * - * @author ruoyi - * @date 2024-03-28 - */ -@RestController -@RequestMapping("/cxxm/video") -public class TaskCheckVideoController extends BaseController -{ - @Autowired - private ITaskCheckVideoService taskCheckVideoService; - -/** - * 查询任务巡查视频列表 - */ -@PreAuthorize("@ss.hasPermi('cxxm:video:list')") -@GetMapping("/list") - public TableDataInfo list(TaskCheckVideo taskCheckVideo, PageDomain pageDomain) - { - startPage(); - List list = taskCheckVideoService.list(new QueryWrapper<>(taskCheckVideo)); - return getDataTable(list); - } - - /** - * 导出任务巡查视频列表 - */ - @PreAuthorize("@ss.hasPermi('cxxm:video:export')") - @Log(title = "任务巡查视频", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(HttpServletResponse response, TaskCheckVideo taskCheckVideo) - { - List list = taskCheckVideoService.list(new QueryWrapper<>(taskCheckVideo)); - ExcelUtil util = new ExcelUtil(TaskCheckVideo.class); - util.exportExcel(response, list, "任务巡查视频数据"); - } - - /** - * 获取任务巡查视频详细信息 - */ - @PreAuthorize("@ss.hasPermi('cxxm:video:query')") - @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") Long id) - { - return AjaxResult.success(taskCheckVideoService.getById(id)); - } - - /** - * 新增任务巡查视频 - */ - @PreAuthorize("@ss.hasPermi('cxxm:video:add')") - @Log(title = "任务巡查视频", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@RequestBody TaskCheckVideo taskCheckVideo) - { - return toAjax(taskCheckVideoService.save(taskCheckVideo)); - } - - /** - * 修改任务巡查视频 - */ - @PreAuthorize("@ss.hasPermi('cxxm:video:edit')") - @Log(title = "任务巡查视频", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@RequestBody TaskCheckVideo taskCheckVideo) - { - return toAjax(taskCheckVideoService.updateById(taskCheckVideo)); - } - - /** - * 删除任务巡查视频 - */ - @PreAuthorize("@ss.hasPermi('cxxm:video:remove')") - @Log(title = "任务巡查视频", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable List ids) - { - return toAjax(taskCheckVideoService.removeByIds(ids)); - } -} - diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cxxm/TaskController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cxxm/TaskController.java index 7e243186..da738f88 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cxxm/TaskController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cxxm/TaskController.java @@ -1,9 +1,26 @@ package com.ruoyi.web.controller.cxxm; -import java.util.List; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.*; import javax.servlet.http.HttpServletResponse; + +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.utils.bean.BeanUtils; +import com.ruoyi.cxxm.domain.Tbxx; +import com.ruoyi.cxxm.domain.enums.XFQK; +import com.ruoyi.cxxm.domain.query.TaskQuery; +import com.ruoyi.cxxm.domain.vo.TaskDetailVo; +import com.ruoyi.cxxm.mapper.DeptMapper; +import com.ruoyi.cxxm.service.ITbxxService; +import io.swagger.annotations.ApiOperation; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -23,6 +40,7 @@ import com.ruoyi.cxxm.domain.Task; import com.ruoyi.cxxm.service.ITaskService; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.core.page.TableDataInfo; +import org.springframework.web.multipart.MultipartFile; /** * 任务Controller @@ -32,20 +50,35 @@ import com.ruoyi.common.core.page.TableDataInfo; */ @RestController @RequestMapping("/cxxm/task") -public class TaskController extends BaseController -{ +public class TaskController extends BaseController { @Autowired private ITaskService taskService; + @Autowired + private ITbxxService tbxxService; + @Autowired + private DeptMapper deptMapper; -/** - * 查询任务列表 - */ -@PreAuthorize("@ss.hasPermi('cxxm:task:list')") -@GetMapping("/list") - public TableDataInfo list(Task task, PageDomain pageDomain) - { + /** + * 查询任务列表 + */ + @PreAuthorize("@ss.hasPermi('cxxm:task:list')") + @GetMapping("/list") + public TableDataInfo list(TaskQuery task, PageDomain pageDomain) { startPage(); - List list = taskService.list(new QueryWrapper<>(task)); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.like(Objects.nonNull(task.getTbbh()), Task::getTbbh, task.getTbbh()); + queryWrapper.eq(Objects.nonNull(task.getXfqk()), Task::getXfqk, task.getXfqk()); + queryWrapper.eq(Objects.nonNull(task.getRwlx()), Task::getRwlx, task.getRwlx()); + queryWrapper.in(Objects.nonNull(task.getDeptId()), Task::getDeptId, deptMapper.getAllAncestorsByDeptId(task.getDeptId())); + List drsjQuery = task.getDrsjQuery(); + if (drsjQuery != null && drsjQuery.size() == 2) { + queryWrapper.apply(StringUtils.format("DATE_FORMAT(drsj, '%Y-%m') between '{}' and '{}'", + drsjQuery.get(0), drsjQuery.get(1))); + } + queryWrapper.orderByAsc(Task::getXfqk); + queryWrapper.orderByDesc(Task::getXfsj); + queryWrapper.orderByDesc(Task::getDrsj); + List list = taskService.list(queryWrapper); return getDataTable(list); } @@ -55,8 +88,7 @@ public class TaskController extends BaseController @PreAuthorize("@ss.hasPermi('cxxm:task:export')") @Log(title = "任务", businessType = BusinessType.EXPORT) @PostMapping("/export") - public void export(HttpServletResponse response, Task task) - { + public void export(HttpServletResponse response, Task task) { List list = taskService.list(new QueryWrapper<>(task)); ExcelUtil util = new ExcelUtil(Task.class); util.exportExcel(response, list, "任务数据"); @@ -67,9 +99,13 @@ public class TaskController extends BaseController */ @PreAuthorize("@ss.hasPermi('cxxm:task:query')") @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") Long id) - { - return AjaxResult.success(taskService.getById(id)); + public AjaxResult getInfo(@PathVariable("id") Long id) { + Task task = taskService.getById(id); + Tbxx tbxx = tbxxService.selectTbxxByTbbh(task.getTbbh()); + TaskDetailVo taskDetailVo = new TaskDetailVo(); + BeanUtils.copyProperties(task, taskDetailVo); + taskDetailVo.setTbxx(tbxx); + return AjaxResult.success(taskDetailVo); } /** @@ -78,8 +114,7 @@ public class TaskController extends BaseController @PreAuthorize("@ss.hasPermi('cxxm:task:add')") @Log(title = "任务", businessType = BusinessType.INSERT) @PostMapping - public AjaxResult add(@RequestBody Task task) - { + public AjaxResult add(@RequestBody Task task) { return toAjax(taskService.save(task)); } @@ -89,8 +124,7 @@ public class TaskController extends BaseController @PreAuthorize("@ss.hasPermi('cxxm:task:edit')") @Log(title = "任务", businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult edit(@RequestBody Task task) - { + public AjaxResult edit(@RequestBody Task task) { return toAjax(taskService.updateById(task)); } @@ -100,9 +134,151 @@ public class TaskController extends BaseController @PreAuthorize("@ss.hasPermi('cxxm:task:remove')") @Log(title = "任务", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable List ids) - { - return toAjax(taskService.removeByIds(ids)); + public AjaxResult remove(@PathVariable List ids) { + return toAjax(taskService.removeTaskAndTbxxByTaskIds(ids)); + } + + /** + * 导入任务 + * + * @param file + * @param rwlx + * @return + * @throws Exception + */ + @Log(title = "导入任务", businessType = BusinessType.IMPORT) + @PreAuthorize("@ss.hasPermi('cxxm:task:import')") + @PostMapping("/importData") + public AjaxResult importData(MultipartFile file, String rwlx) throws Exception { + try (InputStream inputStream = file.getInputStream()) { + // 读取数据 + BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); + StringBuilder content = new StringBuilder(); + String line; + while ((line = reader.readLine()) != null) { + content.append(line); + } + // 解析数据 + Map map = JSONObject.parseObject(content.toString(), Map.class); + Object features = map.get("features"); + List importData = JSONObject.parseObject(features.toString(), List.class); + List failTbbhList = new ArrayList<>(); + for (Object data : importData) { + Map item = JSONObject.parseObject(data.toString(), Map.class); + Tbxx tbxx = new Tbxx(); + // 图斑空间数据 + Object geometry = item.get("geometry"); + tbxx.setGis(geometry.toString()); + // 图斑信息 + Object properties = item.get("properties"); + Map tbxxMap = JSONObject.parseObject(properties.toString(), Map.class); + tbxx.setTbbh(tbxxMap.get("KCTBBH") != null ? tbxxMap.get("KCTBBH").toString() : ""); + tbxx.setKsmc(tbxxMap.get("KMMC") != null ? tbxxMap.get("KMMC").toString() : ""); + tbxx.setXkzbh(tbxxMap.get("KMXKZ") != null ? tbxxMap.get("KMXKZ").toString() : ""); + tbxx.setKqjb(tbxxMap.get("KQJB") != null ? tbxxMap.get("KQJB").toString() : ""); + tbxx.setSheng(tbxxMap.get("SHENG") != null ? tbxxMap.get("SHENG").toString() : ""); + tbxx.setShi(tbxxMap.get("SHI") != null ? tbxxMap.get("SHI").toString() : ""); + tbxx.setXian(tbxxMap.get("XIAN") != null ? tbxxMap.get("XIAN").toString() : ""); + tbxx.setXdm(tbxxMap.get("XDM") != null ? tbxxMap.get("XDM").toString() : ""); + tbxx.setXxdz(tbxxMap.get("KMDZ") != null ? tbxxMap.get("KMDZ").toString() : ""); + tbxx.setJjlx(tbxxMap.get("KMJJLX") != null ? tbxxMap.get("KMJJLX").toString() : ""); + tbxx.setKzlx(tbxxMap.get("KMLX") != null ? tbxxMap.get("KMLX").toString() : ""); + tbxx.setKcqtkz(tbxxMap.get("KMQTKZ") != null ? tbxxMap.get("KMQTKZ").toString() : ""); + tbxx.setKcfs(tbxxMap.get("KMKCFS") != null ? tbxxMap.get("KMKCFS").toString() : ""); + tbxx.setKczt(tbxxMap.get("KMKCZT") != null ? tbxxMap.get("KMKCZT").toString() : ""); + tbxx.setZdmj(tbxxMap.get("KMZDMJ") != null ? tbxxMap.get("KMZDMJ").toString() : ""); + tbxx.setWfmj(tbxxMap.get("KMWFMJ") != null ? tbxxMap.get("KMWFMJ").toString() : ""); + tbxx.setX(tbxxMap.get("KMX") != null ? tbxxMap.get("KMX").toString() : ""); + tbxx.setY(tbxxMap.get("KMY") != null ? tbxxMap.get("KMY").toString() : ""); + tbxx.setCzwt(tbxxMap.get("KMCZWT") != null ? tbxxMap.get("KMCZWT").toString() : ""); + tbxx.setSqtbbh(tbxxMap.get("SQTBBH") != null ? tbxxMap.get("SQTBBH").toString() : ""); + tbxx.setBxftbbh(tbxxMap.get("BFTBBH") != null ? tbxxMap.get("BFTBBH").toString() : ""); + tbxx.setBqsjsj(tbxxMap.get("BQSJSJ") != null ? tbxxMap.get("BQSJSJ").toString() : ""); + tbxx.setSqsjsj(tbxxMap.get("SQSJSJ") != null ? tbxxMap.get("SQSJSJ").toString() : ""); + tbxx.setLsks(tbxxMap.get("LKBH") != null ? tbxxMap.get("LKBH").toString() : ""); + tbxx.setZdkqmc(tbxxMap.get("ZDKQMC") != null ? tbxxMap.get("ZDKQMC").toString() : ""); + tbxx.setZrbhqmc(tbxxMap.get("BHQMC") != null ? tbxxMap.get("BHQMC").toString() : ""); + tbxx.setGyhpmc(tbxxMap.get("GYHPMC") != null ? tbxxMap.get("GYHPMC").toString() : ""); + tbxx.setGyhp03(tbxxMap.get("GYHP03") != null ? tbxxMap.get("GYHP03").toString() : ""); + tbxx.setGyhp10(tbxxMap.get("GYHP10") != null ? tbxxMap.get("GYHP10").toString() : ""); + tbxx.setCjgzmc(tbxxMap.get("CJGZMC") != null ? tbxxMap.get("CJGZMC").toString() : ""); + tbxx.setCjgz03(tbxxMap.get("CJGZ03") != null ? tbxxMap.get("CJGZ03").toString() : ""); + tbxx.setCjgzl10(tbxxMap.get("CJGZ10") != null ? tbxxMap.get("CJGZ10").toString() : ""); + tbxx.setFjmsmc(tbxxMap.get("FJMSMC") != null ? tbxxMap.get("FJMSMC").toString() : ""); + tbxx.setGjgymc(tbxxMap.get("GJGYMC") != null ? tbxxMap.get("GJGYMC").toString() : ""); + tbxx.setYsydmc(tbxxMap.get("YSYDMC") != null ? tbxxMap.get("YSYDMC").toString() : ""); + tbxx.setBz(tbxxMap.get("KFBZ") != null ? tbxxMap.get("KFBZ").toString() : ""); + tbxx.setXsly(tbxxMap.get("XSLY") != null ? tbxxMap.get("XSLY").toString() : ""); + // 导入图斑信息 + // 判断图斑数据是否已经存在 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(Tbxx::getTbbh, tbxx.getTbbh()); + if (tbxxService.count(queryWrapper) == 0) { + taskService.importTaskByTbxx(tbxx, rwlx); + } else { + failTbbhList.add(tbxx.getTbbh()); + } + } + // 统计导入结果 + int total = importData.size(); + int fail = failTbbhList.size(); + int success = total - fail; + Map res = new HashMap(); + res.put("total", total); + res.put("successCount", success); + res.put("failCount", fail); + res.put("failTbbhList", failTbbhList); + return success(res); + } catch (IOException e) { + // 处理异常 + throw new IOException("文件上传失败"); + } + } + + /** + * 下发任务 + * + * @param ids + * @return + */ + @ApiOperation("下发任务") + @PreAuthorize("@ss.hasPermi('cxxm:task:distribute')") + @Log(title = "任务", businessType = BusinessType.UPDATE) + @PutMapping("/distribute/{ids}") + public AjaxResult distribute(@PathVariable Long[] ids) { + List taskList = new ArrayList<>(); + for (Long id : ids) { + Task task = new Task(); + task.setId(id); + task.setXfqk(XFQK.YXF.getValue()); + task.setXfsj(DateUtils.getNowDate()); + taskList.add(task); + } + return toAjax(taskService.updateBatchById(taskList)); + } + + /** + * 查询任务巡查情况列表 + */ + @PreAuthorize("@ss.hasPermi('cxxm:task:list')") + @GetMapping("/distributed/list") + public TableDataInfo distributedList(TaskQuery task, PageDomain pageDomain) { + startPage(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.like(Objects.nonNull(task.getTbbh()), Task::getTbbh, task.getTbbh()); + queryWrapper.eq(Task::getXfqk, XFQK.YXF.getValue()); + queryWrapper.eq(Objects.nonNull(task.getRwlx()), Task::getRwlx, task.getRwlx()); + queryWrapper.in(Objects.nonNull(task.getDeptId()), Task::getDeptId, deptMapper.getAllAncestorsByDeptId(task.getDeptId())); + List drsjQuery = task.getDrsjQuery(); + if (drsjQuery != null && drsjQuery.size() == 2) { + queryWrapper.apply(StringUtils.format("DATE_FORMAT(drsj, '%Y-%m') between '{}' and '{}'", + drsjQuery.get(0), drsjQuery.get(1))); + } + queryWrapper.orderByAsc(Task::getXfqk); + queryWrapper.orderByDesc(Task::getXfsj); + queryWrapper.orderByDesc(Task::getDrsj); + List list = taskService.list(queryWrapper); + return getDataTable(list); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cxxm/TbxxController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cxxm/TbxxController.java deleted file mode 100644 index 0ab0b2d9..00000000 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cxxm/TbxxController.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.ruoyi.web.controller.cxxm; - -import java.util.List; -import javax.servlet.http.HttpServletResponse; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; - -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.ruoyi.common.annotation.Log; -import com.ruoyi.common.core.controller.BaseController; -import com.ruoyi.common.core.domain.AjaxResult; -import com.ruoyi.common.core.page.PageDomain; -import com.ruoyi.common.enums.BusinessType; -import com.ruoyi.cxxm.domain.Tbxx; -import com.ruoyi.cxxm.service.ITbxxService; -import com.ruoyi.common.utils.poi.ExcelUtil; -import com.ruoyi.common.core.page.TableDataInfo; - -/** - * 图斑信息Controller - * - * @author ruoyi - * @date 2024-03-28 - */ -@RestController -@RequestMapping("/cxxm/tbxx") -public class TbxxController extends BaseController -{ - @Autowired - private ITbxxService tbxxService; - -/** - * 查询图斑信息列表 - */ -@PreAuthorize("@ss.hasPermi('cxxm:tbxx:list')") -@GetMapping("/list") - public TableDataInfo list(Tbxx tbxx, PageDomain pageDomain) - { - startPage(); - List list = tbxxService.list(new QueryWrapper<>(tbxx)); - return getDataTable(list); - } - - /** - * 导出图斑信息列表 - */ - @PreAuthorize("@ss.hasPermi('cxxm:tbxx:export')") - @Log(title = "图斑信息", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(HttpServletResponse response, Tbxx tbxx) - { - List list = tbxxService.list(new QueryWrapper<>(tbxx)); - ExcelUtil util = new ExcelUtil(Tbxx.class); - util.exportExcel(response, list, "图斑信息数据"); - } - - /** - * 获取图斑信息详细信息 - */ - @PreAuthorize("@ss.hasPermi('cxxm:tbxx:query')") - @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") Long id) - { - return AjaxResult.success(tbxxService.getById(id)); - } - - /** - * 新增图斑信息 - */ - @PreAuthorize("@ss.hasPermi('cxxm:tbxx:add')") - @Log(title = "图斑信息", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@RequestBody Tbxx tbxx) - { - return toAjax(tbxxService.save(tbxx)); - } - - /** - * 修改图斑信息 - */ - @PreAuthorize("@ss.hasPermi('cxxm:tbxx:edit')") - @Log(title = "图斑信息", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@RequestBody Tbxx tbxx) - { - return toAjax(tbxxService.updateById(tbxx)); - } - - /** - * 删除图斑信息 - */ - @PreAuthorize("@ss.hasPermi('cxxm:tbxx:remove')") - @Log(title = "图斑信息", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable List ids) - { - return toAjax(tbxxService.removeByIds(ids)); - } -} - diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml index b37f9b3f..110164a6 100644 --- a/ruoyi-common/pom.xml +++ b/ruoyi-common/pom.xml @@ -131,6 +131,11 @@ mybatis-plus-boot-starter + + com.github.yulichang + mybatis-plus-join-boot-starter + + \ No newline at end of file diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java index 5a5f12f2..407c484b 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java @@ -61,7 +61,6 @@ public class BaseEntity implements Serializable { /** * 部门id */ - @Excel(name = "部门id") @TableField(value = "dept_id", fill = FieldFill.INSERT) private Long deptId; diff --git a/ruoyi-framework/pom.xml b/ruoyi-framework/pom.xml index e53f6873..635f4c47 100644 --- a/ruoyi-framework/pom.xml +++ b/ruoyi-framework/pom.xml @@ -18,7 +18,7 @@ - + org.springframework.boot spring-boot-starter-web diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/CxxmUser.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/CxxmUser.java new file mode 100644 index 00000000..65195974 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/CxxmUser.java @@ -0,0 +1,347 @@ +package com.ruoyi.system.domain; + +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.annotation.Excels; +import com.ruoyi.common.core.domain.BaseEntity; +import com.ruoyi.common.core.domain.entity.SysDept; +import com.ruoyi.common.core.domain.entity.SysRole; +import com.ruoyi.common.xss.Xss; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import javax.validation.constraints.Email; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; +import java.util.Date; +import java.util.List; + + +public class CxxmUser extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * 用户ID + */ + private Long userId; + + /** + * 部门ID + */ + private Long deptId; + + /** + * 部门名称 + */ + @Excel(name = "部门名称", type = Excel.Type.IMPORT, combo = {"楚雄彝族自治州", "楚雄市", "禄丰市", "大姚县", "姚安县", "武定县", "双柏县", "牟定县", "南华县", "永仁县", "元谋县"}) + private String deptName; + + /** + * 部门名称 + */ + @Excel(name = "角色类型", type = Excel.Type.IMPORT, combo = {"州级管理员", "县级管理员", "县级调查员"}) + private String roleName; + + /** + * 用户账号 + */ + @Excel(name = "登录名称") + private String userName; + + /** + * 用户昵称 + */ + @Excel(name = "用户名称") + private String nickName; + + /** + * 用户邮箱 + */ + @Excel(name = "用户邮箱",type = Excel.Type.EXPORT) + private String email; + + /** + * 手机号码 + */ + @Excel(name = "手机号码",type = Excel.Type.EXPORT) + private String phonenumber; + + /** + * 用户性别 + */ + @Excel(name = "用户性别", readConverterExp = "0=男,1=女,2=未知",type = Excel.Type.EXPORT) + private String sex; + + /** + * 用户头像 + */ + private String avatar; + + /** + * 密码 + */ + private String password; + + /** + * 帐号状态(0正常 1停用) + */ + @Excel(name = "帐号状态", readConverterExp = "0=正常,1=停用",type = Excel.Type.EXPORT) + private String status; + + /** + * 删除标志(0代表存在 2代表删除) + */ + private String delFlag; + + /** + * 最后登录IP + */ + @Excel(name = "最后登录IP", type = Excel.Type.EXPORT) + private String loginIp; + + /** + * 最后登录时间 + */ + @Excel(name = "最后登录时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Excel.Type.EXPORT) + private Date loginDate; + + /** + * 部门对象 + */ + @Excels({ + @Excel(name = "部门名称", targetAttr = "deptName", type = Excel.Type.EXPORT), + @Excel(name = "部门负责人", targetAttr = "leader", type = Excel.Type.EXPORT) + }) + private SysDept dept; + + /** + * 角色对象 + */ + private List roles; + + /** + * 角色组 + */ + private Long[] roleIds; + + /** + * 岗位组 + */ + private Long[] postIds; + + /** + * 角色ID + */ + private Long roleId; + + public CxxmUser() { + + } + + public CxxmUser(Long userId) { + this.userId = userId; + } + + public Long getUserId() { + return userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + public boolean isAdmin() { + return isAdmin(this.userId); + } + + public static boolean isAdmin(Long userId) { + return userId != null && 1L == userId; + } + + public Long getDeptId() { + return deptId; + } + + public void setDeptId(Long deptId) { + this.deptId = deptId; + } + + @NotBlank(message = "部门名称不能为空") + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + @NotBlank(message = "角色类型不能为空") + public String getRoleName() { + return roleName; + } + + public void setRoleName(String roleName) { + this.roleName = roleName; + } + + @Xss(message = "用户昵称不能包含脚本字符") + @Size(min = 0, max = 30, message = "用户昵称长度不能超过30个字符") + public String getNickName() { + return nickName; + } + + public void setNickName(String nickName) { + this.nickName = nickName; + } + + @Xss(message = "用户账号不能包含脚本字符") + @NotBlank(message = "用户账号不能为空") + @Size(min = 0, max = 30, message = "用户账号长度不能超过30个字符") + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + @Email(message = "邮箱格式不正确") + @Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符") + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + @Size(min = 0, max = 11, message = "手机号码长度不能超过11个字符") + public String getPhonenumber() { + return phonenumber; + } + + public void setPhonenumber(String phonenumber) { + this.phonenumber = phonenumber; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public String getAvatar() { + return avatar; + } + + public void setAvatar(String avatar) { + this.avatar = avatar; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getDelFlag() { + return delFlag; + } + + public void setDelFlag(String delFlag) { + this.delFlag = delFlag; + } + + public String getLoginIp() { + return loginIp; + } + + public void setLoginIp(String loginIp) { + this.loginIp = loginIp; + } + + public Date getLoginDate() { + return loginDate; + } + + public void setLoginDate(Date loginDate) { + this.loginDate = loginDate; + } + + public SysDept getDept() { + return dept; + } + + public void setDept(SysDept dept) { + this.dept = dept; + } + + public List getRoles() { + return roles; + } + + public void setRoles(List roles) { + this.roles = roles; + } + + public Long[] getRoleIds() { + return roleIds; + } + + public void setRoleIds(Long[] roleIds) { + this.roleIds = roleIds; + } + + public Long[] getPostIds() { + return postIds; + } + + public void setPostIds(Long[] postIds) { + this.postIds = postIds; + } + + public Long getRoleId() { + return roleId; + } + + public void setRoleId(Long roleId) { + this.roleId = roleId; + } + + @Override + public String toString() { + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) + .append("userId", getUserId()) + .append("deptId", getDeptId()) + .append("roleId", getRoleId()) + .append("userName", getUserName()) + .append("nickName", getNickName()) + .append("email", getEmail()) + .append("phonenumber", getPhonenumber()) + .append("sex", getSex()) + .append("avatar", getAvatar()) + .append("password", getPassword()) + .append("status", getStatus()) + .append("delFlag", getDelFlag()) + .append("loginIp", getLoginIp()) + .append("loginDate", getLoginDate()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .append("dept", getDept()) + .toString(); + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/CxxmUserXJ.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/CxxmUserXJ.java new file mode 100644 index 00000000..be3ff84f --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/CxxmUserXJ.java @@ -0,0 +1,347 @@ +package com.ruoyi.system.domain; + +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.annotation.Excels; +import com.ruoyi.common.core.domain.BaseEntity; +import com.ruoyi.common.core.domain.entity.SysDept; +import com.ruoyi.common.core.domain.entity.SysRole; +import com.ruoyi.common.xss.Xss; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import javax.validation.constraints.Email; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; +import java.util.Date; +import java.util.List; + + +public class CxxmUserXJ extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * 用户ID + */ + private Long userId; + + /** + * 部门ID + */ + private Long deptId; + + /** + * 部门名称 + */ + @Excel(name = "部门名称", type = Excel.Type.IMPORT, combo = {"楚雄市", "禄丰市", "大姚县", "姚安县", "武定县", "双柏县", "牟定县", "南华县", "永仁县", "元谋县"}) + private String deptName; + + /** + * 部门名称 + */ + @Excel(name = "角色类型", type = Excel.Type.IMPORT, combo = {"县级管理员", "县级调查员"}) + private String roleName; + + /** + * 用户账号 + */ + @Excel(name = "登录名称") + private String userName; + + /** + * 用户昵称 + */ + @Excel(name = "用户名称") + private String nickName; + + /** + * 用户邮箱 + */ + @Excel(name = "用户邮箱",type = Excel.Type.EXPORT) + private String email; + + /** + * 手机号码 + */ + @Excel(name = "手机号码",type = Excel.Type.EXPORT) + private String phonenumber; + + /** + * 用户性别 + */ + @Excel(name = "用户性别", readConverterExp = "0=男,1=女,2=未知",type = Excel.Type.EXPORT) + private String sex; + + /** + * 用户头像 + */ + private String avatar; + + /** + * 密码 + */ + private String password; + + /** + * 帐号状态(0正常 1停用) + */ + @Excel(name = "帐号状态", readConverterExp = "0=正常,1=停用",type = Excel.Type.EXPORT) + private String status; + + /** + * 删除标志(0代表存在 2代表删除) + */ + private String delFlag; + + /** + * 最后登录IP + */ + @Excel(name = "最后登录IP", type = Excel.Type.EXPORT) + private String loginIp; + + /** + * 最后登录时间 + */ + @Excel(name = "最后登录时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Excel.Type.EXPORT) + private Date loginDate; + + /** + * 部门对象 + */ + @Excels({ + @Excel(name = "部门名称", targetAttr = "deptName", type = Excel.Type.EXPORT), + @Excel(name = "部门负责人", targetAttr = "leader", type = Excel.Type.EXPORT) + }) + private SysDept dept; + + /** + * 角色对象 + */ + private List roles; + + /** + * 角色组 + */ + private Long[] roleIds; + + /** + * 岗位组 + */ + private Long[] postIds; + + /** + * 角色ID + */ + private Long roleId; + + public CxxmUserXJ() { + + } + + public CxxmUserXJ(Long userId) { + this.userId = userId; + } + + public Long getUserId() { + return userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + public boolean isAdmin() { + return isAdmin(this.userId); + } + + public static boolean isAdmin(Long userId) { + return userId != null && 1L == userId; + } + + public Long getDeptId() { + return deptId; + } + + public void setDeptId(Long deptId) { + this.deptId = deptId; + } + + @NotBlank(message = "部门名称不能为空") + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + @NotBlank(message = "角色类型不能为空") + public String getRoleName() { + return roleName; + } + + public void setRoleName(String roleName) { + this.roleName = roleName; + } + + @Xss(message = "用户昵称不能包含脚本字符") + @Size(min = 0, max = 30, message = "用户昵称长度不能超过30个字符") + public String getNickName() { + return nickName; + } + + public void setNickName(String nickName) { + this.nickName = nickName; + } + + @Xss(message = "用户账号不能包含脚本字符") + @NotBlank(message = "用户账号不能为空") + @Size(min = 0, max = 30, message = "用户账号长度不能超过30个字符") + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + @Email(message = "邮箱格式不正确") + @Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符") + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + @Size(min = 0, max = 11, message = "手机号码长度不能超过11个字符") + public String getPhonenumber() { + return phonenumber; + } + + public void setPhonenumber(String phonenumber) { + this.phonenumber = phonenumber; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public String getAvatar() { + return avatar; + } + + public void setAvatar(String avatar) { + this.avatar = avatar; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getDelFlag() { + return delFlag; + } + + public void setDelFlag(String delFlag) { + this.delFlag = delFlag; + } + + public String getLoginIp() { + return loginIp; + } + + public void setLoginIp(String loginIp) { + this.loginIp = loginIp; + } + + public Date getLoginDate() { + return loginDate; + } + + public void setLoginDate(Date loginDate) { + this.loginDate = loginDate; + } + + public SysDept getDept() { + return dept; + } + + public void setDept(SysDept dept) { + this.dept = dept; + } + + public List getRoles() { + return roles; + } + + public void setRoles(List roles) { + this.roles = roles; + } + + public Long[] getRoleIds() { + return roleIds; + } + + public void setRoleIds(Long[] roleIds) { + this.roleIds = roleIds; + } + + public Long[] getPostIds() { + return postIds; + } + + public void setPostIds(Long[] postIds) { + this.postIds = postIds; + } + + public Long getRoleId() { + return roleId; + } + + public void setRoleId(Long roleId) { + this.roleId = roleId; + } + + @Override + public String toString() { + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) + .append("userId", getUserId()) + .append("deptId", getDeptId()) + .append("roleId", getRoleId()) + .append("userName", getUserName()) + .append("nickName", getNickName()) + .append("email", getEmail()) + .append("phonenumber", getPhonenumber()) + .append("sex", getSex()) + .append("avatar", getAvatar()) + .append("password", getPassword()) + .append("status", getStatus()) + .append("delFlag", getDelFlag()) + .append("loginIp", getLoginIp()) + .append("loginDate", getLoginDate()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .append("dept", getDept()) + .toString(); + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java index f3b58474..b475f88c 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java @@ -115,4 +115,11 @@ public interface SysDeptMapper * @return 结果 */ public int deleteDeptById(Long deptId); + + /** + * 根据部门名称查找部门 + * @param xian + * @return + */ + public SysDept selectDeptByDeptName(String xian); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java index 58ede18e..c78b8e46 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java @@ -104,4 +104,13 @@ public interface SysRoleMapper * @return 结果 */ public int deleteRoleByIds(Long[] roleIds); + + + + /** + * 根据角色名称查询角色 + * @param roleName + * @return + */ + public SysRole selectRoleByRoleName(String roleName); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java index ad3fe62c..0f636870 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserRoleMapper.java @@ -1,6 +1,8 @@ package com.ruoyi.system.mapper; import java.util.List; + +import com.ruoyi.common.core.domain.entity.SysRole; import org.apache.ibatis.annotations.Param; import com.ruoyi.system.domain.SysUserRole; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java index e438b577..6e73a88a 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java @@ -2,6 +2,7 @@ package com.ruoyi.system.service; import java.util.List; import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.system.domain.CxxmUser; /** * 用户 业务层 @@ -203,4 +204,13 @@ public interface ISysUserService * @return 结果 */ public String importUser(List userList, Boolean isUpdateSupport, String operName); + + /** + * 导入楚雄项目用户数据 + * @param userList + * @param isUpdateSupport + * @param operName + * @return + */ + public String importCxxmUser(List userList, Boolean isUpdateSupport, String operName); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java index 09f3fb93..3d73d81f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java @@ -4,6 +4,11 @@ import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; import javax.validation.Validator; + +import com.ruoyi.common.core.domain.entity.SysDept; +import com.ruoyi.common.utils.bean.BeanUtils; +import com.ruoyi.system.domain.CxxmUser; +import com.ruoyi.system.mapper.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -22,22 +27,16 @@ import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.system.domain.SysPost; import com.ruoyi.system.domain.SysUserPost; import com.ruoyi.system.domain.SysUserRole; -import com.ruoyi.system.mapper.SysPostMapper; -import com.ruoyi.system.mapper.SysRoleMapper; -import com.ruoyi.system.mapper.SysUserMapper; -import com.ruoyi.system.mapper.SysUserPostMapper; -import com.ruoyi.system.mapper.SysUserRoleMapper; import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysUserService; /** * 用户 业务层处理 - * + * * @author ruoyi */ @Service -public class SysUserServiceImpl implements ISysUserService -{ +public class SysUserServiceImpl implements ISysUserService { private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class); @Autowired @@ -61,81 +60,77 @@ public class SysUserServiceImpl implements ISysUserService @Autowired protected Validator validator; + @Autowired + private SysDeptMapper deptMapper; + /** * 根据条件分页查询用户列表 - * + * * @param user 用户信息 * @return 用户信息集合信息 */ @Override @DataScope(deptAlias = "d", userAlias = "u") - public List selectUserList(SysUser user) - { + public List selectUserList(SysUser user) { return userMapper.selectUserList(user); } /** * 根据条件分页查询已分配用户角色列表 - * + * * @param user 用户信息 * @return 用户信息集合信息 */ @Override @DataScope(deptAlias = "d", userAlias = "u") - public List selectAllocatedList(SysUser user) - { + public List selectAllocatedList(SysUser user) { return userMapper.selectAllocatedList(user); } /** * 根据条件分页查询未分配用户角色列表 - * + * * @param user 用户信息 * @return 用户信息集合信息 */ @Override @DataScope(deptAlias = "d", userAlias = "u") - public List selectUnallocatedList(SysUser user) - { + public List selectUnallocatedList(SysUser user) { return userMapper.selectUnallocatedList(user); } /** * 通过用户名查询用户 - * + * * @param userName 用户名 * @return 用户对象信息 */ @Override - public SysUser selectUserByUserName(String userName) - { + public SysUser selectUserByUserName(String userName) { return userMapper.selectUserByUserName(userName); } /** * 通过用户ID查询用户 - * + * * @param userId 用户ID * @return 用户对象信息 */ @Override - public SysUser selectUserById(Long userId) - { + public SysUser selectUserById(Long userId) { return userMapper.selectUserById(userId); } /** * 查询用户所属角色组 - * + * * @param userName 用户名 * @return 结果 */ @Override - public String selectUserRoleGroup(String userName) - { + public String selectUserRoleGroup(String userName) { List list = roleMapper.selectRolesByUserName(userName); - if (CollectionUtils.isEmpty(list)) - { + if (CollectionUtils.isEmpty(list)) { return StringUtils.EMPTY; } return list.stream().map(SysRole::getRoleName).collect(Collectors.joining(",")); @@ -143,16 +138,14 @@ public class SysUserServiceImpl implements ISysUserService /** * 查询用户所属岗位组 - * + * * @param userName 用户名 * @return 结果 */ @Override - public String selectUserPostGroup(String userName) - { + public String selectUserPostGroup(String userName) { List list = postMapper.selectPostsByUserName(userName); - if (CollectionUtils.isEmpty(list)) - { + if (CollectionUtils.isEmpty(list)) { return StringUtils.EMPTY; } return list.stream().map(SysPost::getPostName).collect(Collectors.joining(",")); @@ -160,17 +153,15 @@ public class SysUserServiceImpl implements ISysUserService /** * 校验用户名称是否唯一 - * + * * @param user 用户信息 * @return 结果 */ @Override - public boolean checkUserNameUnique(SysUser user) - { + public boolean checkUserNameUnique(SysUser user) { Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); SysUser info = userMapper.checkUserNameUnique(user.getUserName()); - if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) - { + if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; @@ -183,12 +174,10 @@ public class SysUserServiceImpl implements ISysUserService * @return */ @Override - public boolean checkPhoneUnique(SysUser user) - { + public boolean checkPhoneUnique(SysUser user) { Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); SysUser info = userMapper.checkPhoneUnique(user.getPhonenumber()); - if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) - { + if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; @@ -201,12 +190,10 @@ public class SysUserServiceImpl implements ISysUserService * @return */ @Override - public boolean checkEmailUnique(SysUser user) - { + public boolean checkEmailUnique(SysUser user) { Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); SysUser info = userMapper.checkEmailUnique(user.getEmail()); - if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) - { + if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) { return UserConstants.NOT_UNIQUE; } return UserConstants.UNIQUE; @@ -214,33 +201,28 @@ public class SysUserServiceImpl implements ISysUserService /** * 校验用户是否允许操作 - * + * * @param user 用户信息 */ @Override - public void checkUserAllowed(SysUser user) - { - if (StringUtils.isNotNull(user.getUserId()) && user.isAdmin()) - { + public void checkUserAllowed(SysUser user) { + if (StringUtils.isNotNull(user.getUserId()) && user.isAdmin()) { throw new ServiceException("不允许操作超级管理员用户"); } } /** * 校验用户是否有数据权限 - * + * * @param userId 用户id */ @Override - public void checkUserDataScope(Long userId) - { - if (!SysUser.isAdmin(SecurityUtils.getUserId())) - { + public void checkUserDataScope(Long userId) { + if (!SysUser.isAdmin(SecurityUtils.getUserId())) { SysUser user = new SysUser(); user.setUserId(userId); List users = SpringUtils.getAopProxy(this).selectUserList(user); - if (StringUtils.isEmpty(users)) - { + if (StringUtils.isEmpty(users)) { throw new ServiceException("没有权限访问用户数据!"); } } @@ -248,14 +230,13 @@ public class SysUserServiceImpl implements ISysUserService /** * 新增保存用户信息 - * + * * @param user 用户信息 * @return 结果 */ @Override @Transactional - public int insertUser(SysUser user) - { + public int insertUser(SysUser user) { // 新增用户信息 int rows = userMapper.insertUser(user); // 新增用户岗位关联 @@ -267,26 +248,24 @@ public class SysUserServiceImpl implements ISysUserService /** * 注册用户信息 - * + * * @param user 用户信息 * @return 结果 */ @Override - public boolean registerUser(SysUser user) - { + public boolean registerUser(SysUser user) { return userMapper.insertUser(user) > 0; } /** * 修改保存用户信息 - * + * * @param user 用户信息 * @return 结果 */ @Override @Transactional - public int updateUser(SysUser user) - { + public int updateUser(SysUser user) { Long userId = user.getUserId(); // 删除用户与角色关联 userRoleMapper.deleteUserRoleByUserId(userId); @@ -301,104 +280,94 @@ public class SysUserServiceImpl implements ISysUserService /** * 用户授权角色 - * - * @param userId 用户ID + * + * @param userId 用户ID * @param roleIds 角色组 */ @Override @Transactional - public void insertUserAuth(Long userId, Long[] roleIds) - { + public void insertUserAuth(Long userId, Long[] roleIds) { userRoleMapper.deleteUserRoleByUserId(userId); insertUserRole(userId, roleIds); } /** * 修改用户状态 - * + * * @param user 用户信息 * @return 结果 */ @Override - public int updateUserStatus(SysUser user) - { + public int updateUserStatus(SysUser user) { return userMapper.updateUser(user); } /** * 修改用户基本信息 - * + * * @param user 用户信息 * @return 结果 */ @Override - public int updateUserProfile(SysUser user) - { + public int updateUserProfile(SysUser user) { return userMapper.updateUser(user); } /** * 修改用户头像 - * + * * @param userName 用户名 - * @param avatar 头像地址 + * @param avatar 头像地址 * @return 结果 */ @Override - public boolean updateUserAvatar(String userName, String avatar) - { + public boolean updateUserAvatar(String userName, String avatar) { return userMapper.updateUserAvatar(userName, avatar) > 0; } /** * 重置用户密码 - * + * * @param user 用户信息 * @return 结果 */ @Override - public int resetPwd(SysUser user) - { + public int resetPwd(SysUser user) { return userMapper.updateUser(user); } /** * 重置用户密码 - * + * * @param userName 用户名 * @param password 密码 * @return 结果 */ @Override - public int resetUserPwd(String userName, String password) - { + public int resetUserPwd(String userName, String password) { return userMapper.resetUserPwd(userName, password); } /** * 新增用户角色信息 - * + * * @param user 用户对象 */ - public void insertUserRole(SysUser user) - { + public void insertUserRole(SysUser user) { this.insertUserRole(user.getUserId(), user.getRoleIds()); } /** * 新增用户岗位信息 - * + * * @param user 用户对象 */ - public void insertUserPost(SysUser user) - { + public void insertUserPost(SysUser user) { Long[] posts = user.getPostIds(); - if (StringUtils.isNotEmpty(posts)) - { + if (StringUtils.isNotEmpty(posts)) { // 新增用户与岗位管理 List list = new ArrayList(posts.length); - for (Long postId : posts) - { + for (Long postId : posts) { SysUserPost up = new SysUserPost(); up.setUserId(user.getUserId()); up.setPostId(postId); @@ -410,18 +379,15 @@ public class SysUserServiceImpl implements ISysUserService /** * 新增用户角色信息 - * - * @param userId 用户ID + * + * @param userId 用户ID * @param roleIds 角色组 */ - public void insertUserRole(Long userId, Long[] roleIds) - { - if (StringUtils.isNotEmpty(roleIds)) - { + public void insertUserRole(Long userId, Long[] roleIds) { + if (StringUtils.isNotEmpty(roleIds)) { // 新增用户与角色管理 List list = new ArrayList(roleIds.length); - for (Long roleId : roleIds) - { + for (Long roleId : roleIds) { SysUserRole ur = new SysUserRole(); ur.setUserId(userId); ur.setRoleId(roleId); @@ -433,14 +399,13 @@ public class SysUserServiceImpl implements ISysUserService /** * 通过用户ID删除用户 - * + * * @param userId 用户ID * @return 结果 */ @Override @Transactional - public int deleteUserById(Long userId) - { + public int deleteUserById(Long userId) { // 删除用户与角色关联 userRoleMapper.deleteUserRoleByUserId(userId); // 删除用户与岗位表 @@ -450,16 +415,14 @@ public class SysUserServiceImpl implements ISysUserService /** * 批量删除用户信息 - * + * * @param userIds 需要删除的用户ID * @return 结果 */ @Override @Transactional - public int deleteUserByIds(Long[] userIds) - { - for (Long userId : userIds) - { + public int deleteUserByIds(Long[] userIds) { + for (Long userId : userIds) { checkUserAllowed(new SysUser(userId)); checkUserDataScope(userId); } @@ -472,17 +435,15 @@ public class SysUserServiceImpl implements ISysUserService /** * 导入用户数据 - * - * @param userList 用户数据列表 + * + * @param userList 用户数据列表 * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据 - * @param operName 操作用户 + * @param operName 操作用户 * @return 结果 */ @Override - public String importUser(List userList, Boolean isUpdateSupport, String operName) - { - if (StringUtils.isNull(userList) || userList.size() == 0) - { + public String importUser(List userList, Boolean isUpdateSupport, String operName) { + if (StringUtils.isNull(userList) || userList.size() == 0) { throw new ServiceException("导入用户数据不能为空!"); } int successNum = 0; @@ -490,23 +451,18 @@ public class SysUserServiceImpl implements ISysUserService StringBuilder successMsg = new StringBuilder(); StringBuilder failureMsg = new StringBuilder(); String password = configService.selectConfigByKey("sys.user.initPassword"); - for (SysUser user : userList) - { - try - { + for (SysUser user : userList) { + try { // 验证是否存在这个用户 SysUser u = userMapper.selectUserByUserName(user.getUserName()); - if (StringUtils.isNull(u)) - { + if (StringUtils.isNull(u)) { BeanValidators.validateWithException(validator, user); user.setPassword(SecurityUtils.encryptPassword(password)); user.setCreateBy(operName); userMapper.insertUser(user); successNum++; successMsg.append("
" + successNum + "、账号 " + user.getUserName() + " 导入成功"); - } - else if (isUpdateSupport) - { + } else if (isUpdateSupport) { BeanValidators.validateWithException(validator, user); checkUserAllowed(u); checkUserDataScope(u.getUserId()); @@ -515,30 +471,101 @@ public class SysUserServiceImpl implements ISysUserService userMapper.updateUser(user); successNum++; successMsg.append("
" + successNum + "、账号 " + user.getUserName() + " 更新成功"); - } - else - { + } else { failureNum++; failureMsg.append("
" + failureNum + "、账号 " + user.getUserName() + " 已存在"); } - } - catch (Exception e) - { + } catch (Exception e) { failureNum++; String msg = "
" + failureNum + "、账号 " + user.getUserName() + " 导入失败:"; failureMsg.append(msg + e.getMessage()); log.error(msg, e); } } - if (failureNum > 0) - { + if (failureNum > 0) { failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:"); throw new ServiceException(failureMsg.toString()); - } - else - { + } else { successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:"); } return successMsg.toString(); } + + /** + * 导入用户数据 + * + * @param userList 用户数据列表 + * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据 + * @param operName 操作用户 + * @return 结果 + */ + @Override + @Transactional + public String importCxxmUser(List userList, Boolean isUpdateSupport, String operName) { + if (StringUtils.isNull(userList) || userList.size() == 0) { + throw new ServiceException("导入用户数据不能为空!"); + } + int successNum = 0; + int failureNum = 0; + StringBuilder successMsg = new StringBuilder(); + StringBuilder failureMsg = new StringBuilder(); + String password = configService.selectConfigByKey("sys.user.initPassword"); + for (CxxmUser user : userList) { + try { + // 验证是否存在这个用户 + SysUser u = userMapper.selectUserByUserName(user.getUserName()); + if (StringUtils.isNull(u)) { + BeanValidators.validateWithException(validator, user); + user.setPassword(SecurityUtils.encryptPassword(password)); + user.setCreateBy(operName); + SysUser newUser = createNewSysUserByCxxmUser(user); + this.insertUser(newUser); + successNum++; + successMsg.append("
" + successNum + "、账号 " + user.getUserName() + " 导入成功"); + } else if (isUpdateSupport) { + BeanValidators.validateWithException(validator, user); + checkUserAllowed(u); + checkUserDataScope(u.getUserId()); + user.setUserId(u.getUserId()); + user.setUpdateBy(operName); + SysUser newUser = createNewSysUserByCxxmUser(user); + this.updateUser(newUser); + successNum++; + successMsg.append("
" + successNum + "、账号 " + user.getUserName() + " 更新成功"); + } else { + failureNum++; + failureMsg.append("
" + failureNum + "、账号 " + user.getUserName() + " 已存在"); + } + } catch (Exception e) { + failureNum++; + String msg = "
" + failureNum + "、账号 " + user.getUserName() + " 导入失败:"; + failureMsg.append(msg + e.getMessage()); + log.error(msg, e); + } + } + if (failureNum > 0) { + failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:"); + throw new ServiceException(failureMsg.toString()); + } else { + successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:"); + } + return successMsg.toString(); + } + + private SysUser createNewSysUserByCxxmUser(CxxmUser user) { + // 获取用户部门id + String deptName = user.getDeptName(); + SysDept userDept = deptMapper.selectDeptByDeptName(deptName); + Long deptId = userDept.getDeptId(); + // 获取用户角色id + String roleName = user.getRoleName(); + SysRole userRole = roleMapper.selectRoleByRoleName(roleName); + Long[] roleIds = {userRole.getRoleId()}; + // 构建新的用户对象 + SysUser sysUser = new SysUser(); + BeanUtils.copyProperties(user, sysUser); + sysUser.setDeptId(deptId); + sysUser.setRoleIds(roleIds); + return sysUser; + } } diff --git a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml index 7a6fc158..f282af6e 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml @@ -156,4 +156,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update sys_dept set del_flag = '2' where dept_id = #{deptId} + + \ No newline at end of file diff --git a/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml index ab601e4b..9771d780 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml @@ -92,8 +92,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where r.role_key=#{roleKey} and r.del_flag = '0' limit 1 - - + + insert into sys_role( role_id, role_name, @@ -148,5 +148,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{roleId} + + \ No newline at end of file diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml index 95e07adb..7dea859b 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml @@ -16,8 +16,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - + + delete from sys_user_role where user_id in #{userId} diff --git a/ruoyi-ui/src/api/cxxm/task.js b/ruoyi-ui/src/api/cxxm/task.js index a78527e5..1106405d 100644 --- a/ruoyi-ui/src/api/cxxm/task.js +++ b/ruoyi-ui/src/api/cxxm/task.js @@ -51,45 +51,15 @@ export function distributeTask(ids) { }) } -// 指派任务 -export function assignTask(ids, data) { +// 已下发任务列表 +export function listDistributedTask(query) { return request({ - url: '/cxxm/task/assign/' + ids, - method: 'put', - params: data - }) -} - -// 撤回指派任务 -export function disAssignTask(ids) { - return request({ - url: '/cxxm/task/disAssign/' + ids, - method: 'put', - }) -} - -export function getTaskingCount(id) { - return request({ - url: '/cxxm/task/taskingCount/' + id, - method: 'get' - }) -} - -export function listAssignTask(query) { - return request({ - url: '/cxxm/task/assign/list', + url: '/cxxm/task/distributed/list', method: 'get', params: query }) } -export function listAssignedTask(query) { - return request({ - url: '/cxxm/task/assigned/list', - method: 'get', - params: query - }) -} export function getStatistics() { return request({ diff --git a/ruoyi-ui/src/api/cxxm/taskCheck.js b/ruoyi-ui/src/api/cxxm/taskCheck.js index 851bc14c..28a094a0 100644 --- a/ruoyi-ui/src/api/cxxm/taskCheck.js +++ b/ruoyi-ui/src/api/cxxm/taskCheck.js @@ -7,3 +7,20 @@ export function getTaskCheck(taskId) { method: 'get' }) } + +// 任务填报信息审核 +export function auditTaskCheck(data) { + return request({ + url: '/cxxm/taskCheckAudit', + method: 'post', + data: data + }) +} + +export function editAuditTaskCheck(data) { + return request({ + url: '/cxxm/taskCheckAudit', + method: 'put', + data: data + }) +} diff --git a/ruoyi-ui/src/components/TianDiTuMap/index.vue b/ruoyi-ui/src/components/TianDiTuMap/index.vue index 2e39180f..b317a2d7 100644 --- a/ruoyi-ui/src/components/TianDiTuMap/index.vue +++ b/ruoyi-ui/src/components/TianDiTuMap/index.vue @@ -1,6 +1,5 @@ @@ -39,7 +38,7 @@ export default { var deg = list[i].psfx var iMgurl = process.env.VUE_APP_BASE_API + list[i].cclj var optdiv = '
' + - ' - - - - - - - - - - - - - - - - - - - - 搜索 - 重置 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 指派巡查人员 -
-
- - {{ item.userName }} - - {{ item.taskCount }} - 指派{{ ids.length }} - -
-
- 人员{{ userOptions.length }}位 - 人均{{ - Math.round(assignedTaskCount / userOptions.length) - }}条 - - 已指派{{ assignedTaskCount }}条 -
-
-
- - - - - - - - - {{ form.tbxx.tbbh }} - {{ form.tbxx.ksmc }} - {{ form.tbxx.xkzbh }} - {{ form.tbxx.kqjb }} - {{ form.tbxx.sheng }} - {{ form.tbxx.shi }} - {{ form.tbxx.xian }} - {{ form.tbxx.xxdz }} - {{ form.tbxx.xdm }} - {{ form.tbxx.jjlx }} - {{ form.tbxx.kzlx }} - {{ form.tbxx.kcqtkz }} - {{ form.tbxx.kcfs }} - {{ form.tbxx.zdmj }} - {{ form.tbxx.wfmj }} - {{ form.tbxx.x }} - {{ form.tbxx.y }} - {{ form.tbxx.sqtbbh }} - {{ form.tbxx.bxftbbh }} - {{ form.tbxx.bqsjsj }} - {{ form.tbxx.sqsjsj }} - {{ form.tbxx.lsks }} - {{ form.tbxx.zdkqmc }} - {{ form.tbxx.zrbhqmc }} - {{ form.tbxx.zdkqmc }} - {{ form.tbxx.gyhpmc }} - {{ form.tbxx.gyhp10 }} - {{ form.tbxx.gyhp03 }} - {{ form.tbxx.cjgzl10 }} - {{ form.tbxx.cjgzmc }} - {{ form.tbxx.cjgz03 }} - {{ form.tbxx.fjmsmc }} - {{ form.tbxx.gjgymc }} - {{ form.tbxx.zdkqmc }} - {{ form.tbxx.bz }} - {{ form.tbxx.xsly }} - - - - - - - - - - - - - - {{ dict.label }} - - - - - - - - - - {{ dict.label }} - - - - - - - - - - - - - - - - {{ dict.label }} - - - - - - - - - - - - - - - - - - - - - - - - {{ dict.label }} - - - - - - 天/次 - - - - - - -
- - - - diff --git a/ruoyi-ui/src/views/cxxm/task/check/detail.vue b/ruoyi-ui/src/views/cxxm/task/check/detail.vue index 186de2aa..38d3adc7 100644 --- a/ruoyi-ui/src/views/cxxm/task/check/detail.vue +++ b/ruoyi-ui/src/views/cxxm/task/check/detail.vue @@ -3,9 +3,46 @@ - - - + + + + 5次 + + + 4次 + + + 1次 + + + 3次 + + + 25天/次 + + + + + + + 5次 + + + 4次 + + + 1次 + + + 1次 + + + 1次 + + + + @@ -13,62 +50,16 @@ {{ form.tbbh }} - {{ form.tbxx.sheng + form.tbxx.shi + form.tbxx.xian + form.tbxx.xxdz }} + {{ form.tbxx.sheng + form.tbxx.shi + form.tbxx.xian }} + + + {{ form.tbxx.xxdz }} - - - - - - - - - - - - - - - - - - - - {{ this.selectDictLabel(this.dict.type.zf_sfzg, recordForm.zgqk) }} + {{ this.selectDictLabel(this.dict.type.task_zgqk, recordForm.zgqk) }} {{ recordForm.remark }} {{ recordForm.createBy }} @@ -85,34 +76,150 @@ 图片:{{ index + 1 }} -
- +
+ +
+
视频:{{ index + 1 }}
-
+
+ +
+
+ + + {{ + this.selectDictLabel(this.dict.type.task_shjg, recordForm.taskCheckAudit ? recordForm.taskCheckAudit.shjg : '0') + }} + + {{ + recordForm.taskCheckAudit ? recordForm.taskCheckAudit.remark : null + }} + + {{ + recordForm.taskCheckAudit ? recordForm.taskCheckAudit.createBy : null + }} + + {{ + parseTime(recordForm.taskCheckAudit ? recordForm.taskCheckAudit.shsj : null, '{y}-{m}-{d} {h}:{i}:{s}') + }} + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ 审核 + + 修改审核结果 + +
+ + + + + + + {{ dict.label }} + + + + + + + + + + diff --git a/ruoyi-ui/src/views/cxxm/task/check/index.vue b/ruoyi-ui/src/views/cxxm/task/check/index.vue index b6b325db..a315f966 100644 --- a/ruoyi-ui/src/views/cxxm/task/check/index.vue +++ b/ruoyi-ui/src/views/cxxm/task/check/index.vue @@ -2,7 +2,20 @@
- + + + + + @@ -13,18 +26,36 @@ @keyup.enter.native="handleQuery" /> - - - - + + + + + + + 搜索 重置 + @@ -32,55 +63,51 @@ - + + + - - - - - - - - - - - + + + + + + + + + + - + @@ -132,12 +159,12 @@ \ No newline at end of file + diff --git a/sql/task_v2.sql b/sql/task_v2.sql index 71b2d7fb..d6512a5c 100644 --- a/sql/task_v2.sql +++ b/sql/task_v2.sql @@ -56,21 +56,24 @@ create table task ( id int(11) not null auto_increment comment 'id', tbbh varchar(255) default null comment '图斑编号', - rwlx varchar(255) default '1' comment '任务类型', + rwlx varchar(255) default '1' comment '任务类型 1矿产 2土地', tbszx varchar(255) default null comment '图斑所在县', drry_id int(11) default null comment '导入人员id', drsj datetime default null comment '导入时间', - xfqk varchar(255) default '1' comment '下发情况', + xfqk varchar(255) default '0' comment '下发情况', xfsj datetime default null comment '下发时间', - xczqxx varchar(255) DEFAULT NULL COMMENT '巡查周期选项 1每周 2每月 3自定义', - xczq int(11) default 0 comment '巡查周期 单位(天)', - xxccs int(11) default 0 comment '需巡查次数', + xczqxx varchar(255) default '0' comment '巡查周期选项', + xczq int(11) default '0' comment '巡查周期 单位(天)', + xxccs int(11) default 1 comment '需巡查次数', yxccs int(11) default 0 comment '已巡查次数', zjxccs int(11) default 0 comment '州级巡查次数', xjxccs int(11) default 0 comment '县级巡查次数', kssj datetime default null comment '开始时间', jssj datetime default null comment '结束时间', - sfgd varchar(255) default '1' comment '是否归档', + tc_id int(11) default null comment '最后巡查记录id', + xcsj datetime default null comment '最后巡查时间', + xcry_id int(11) default null comment '最后巡查人员id', + sfgd varchar(255) default '0' comment '是否归档', -- 公共字段 create_by varchar(64) default null comment '创建者', create_time datetime default null comment '创建时间', @@ -87,9 +90,11 @@ create table task_check ( id int(11) not null auto_increment comment 'id', task_id int(11) default null comment '任务id', - sbqk varchar(255) default '1' comment '上报情况', - zgqk varchar(255) default '1' comment '整改情况', - xcjb int(11) default null comment '巡查级别', + sfsb varchar(255) default '0' comment '是否上报', + sbsj datetime default null comment '上报时间', + sfwc varchar(255) default '0' comment '是否完成', + zgqk varchar(255) default '0' comment '整改情况', + xcjb varchar(255) default '1' comment '巡查级别', xcry_id int(11) default null comment '巡查人员id', xcsj datetime default null comment '巡查时间', -- 公共字段 @@ -149,10 +154,10 @@ create table task_check_audit ( id int(11) not null auto_increment comment 'id', tc_id int(11) default null comment '任务巡查记录id', - shjb varchar(255) default '1' comment '审核级别', - shjg varchar(255) default null comment '审核结果', + shjg varchar(255) default '0' comment '审核结果', + shsm text default null comment '审核说明', shsj datetime default null comment '审核时间', - shry_id datetime default null comment '审核人员id', + shry_id int(11) default null comment '审核人员id', -- 公共字段 create_by varchar(64) default null comment '创建者', create_time datetime default null comment '创建时间',