package com.ruoyi.web.controller.api; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.google.common.collect.ImmutableMap; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.entity.SysRole; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.system.dto.TTemplateDTO; import com.ruoyi.system.model.TLocationType; import com.ruoyi.system.model.TTemplate; import com.ruoyi.system.model.TTemplateDetail; import com.ruoyi.system.query.TemplateListQuery; import com.ruoyi.system.service.*; import com.ruoyi.system.task.base.QuartzManager; import com.ruoyi.system.task.base.TimeJobType; import com.ruoyi.system.task.jobs.CreateInspectionJob; import com.ruoyi.system.vo.system.TemplateDetailVO; import com.ruoyi.system.vo.system.TemplateListVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; /** *

* 任务模板 前端控制器 *

* * @author xiaochen * @since 2025-05-28 */ @Api(tags = "任务模板") @RestController @RequestMapping("/t-template") public class TTemplateController { @Resource private TTemplateService templateService; @Resource private TTemplateDetailService templateDetailService; @Resource private TLocationTypeService tLocationTypeService; @Resource private ISysRoleService sysRoleService; @ApiOperation(value = "任务模板分页列表") @PostMapping(value = "/pageList") public R> pageList(@RequestBody TemplateListQuery query) { return R.ok(templateService.pageList(query)); } @ApiOperation(value = "任务模板不分页列表") @PostMapping(value = "/listAllTemplate") public R> listAllTemplate() { return R.ok(templateService.list()); } @ApiOperation(value = "点位类型不分页列表") @PostMapping(value = "/listAll") public R> pageList() { return R.ok(tLocationTypeService.list()); } @Log(title = "新增任务模板", businessType = BusinessType.INSERT) @ApiOperation(value = "新增任务模板") @PostMapping(value = "/add") public R add(@RequestBody TTemplateDTO dto) { templateService.save(dto); List list = dto.getList(); for (TTemplateDetail tTemplateDetail : list) { tTemplateDetail.setTemplateId(dto.getId()); } templateDetailService.saveBatch(list); // 计算定时任务时间周期 // 添加定时任务 // Map maps = // new ImmutableMap.Builder(). // put("id", dto.getId()) // .build(); // QuartzManager.addJob( // CreateInspectionJob.class, // (CreateInspectionJob.name+dto.getId()).toUpperCase(), // TimeJobType.CREATE_INSPECTION, // new Date(new Date().getTime()+48*60*60*1000L), // maps // ); return R.ok(); } @Log(title = "编辑任务模板", businessType = BusinessType.UPDATE) @ApiOperation(value = "编辑任务模板") @PostMapping(value = "/edit") public R edit(@RequestBody TTemplateDTO dto) { templateService.updateById(dto); templateDetailService.remove(new LambdaQueryWrapper() .eq(TTemplateDetail::getTemplateId, dto.getId())); for (TTemplateDetail tTemplateDetail : dto.getList()) { tTemplateDetail.setTemplateId(dto.getId()); tTemplateDetail.setId(null); } templateDetailService.saveBatch(dto.getList()); // 先删除定时任务 // QuartzManager.removeJob((CreateInspectionJob.name+dto.getId()).toUpperCase(),TimeJobType.CREATE_INSPECTION); // 添加定时任务 // Map maps = // new ImmutableMap.Builder(). // put("id", dto.getId()) // .build(); // QuartzManager.addJob( // CreateInspectionJob.class, // (CreateInspectionJob.name+dto.getId()).toUpperCase(), // TimeJobType.CREATE_INSPECTION, // new Date(new Date().getTime()+48*60*60*1000L), // maps // ); return R.ok(); } @Log(title = "批量删除任务模板", businessType = BusinessType.DELETE) @ApiOperation(value = "批量删除任务模板") @DeleteMapping(value = "/deleteByIds") public R deleteByIds(@RequestParam String ids) { String[] split = ids.split(","); templateService.removeBatchByIds(Arrays.asList(split)); return R.ok(); } @ApiOperation(value = "根据模板id查询角色") @DeleteMapping(value = "/getRoleByTemplateId") public R getRoleByTemplateId(@RequestParam String id) { TTemplate template = templateService.getById(id); SysRole sysRole = sysRoleService.selectRoleById(template.getRoleId()); return R.ok(sysRole); } @ApiOperation(value = "详情任务模板") @GetMapping(value = "/detail") public R detail(@RequestParam String id) { TemplateDetailVO templateDetailVO = new TemplateDetailVO(); TTemplate byId = templateService.getById(id); List list = templateDetailService.lambdaQuery().eq(TTemplateDetail::getTemplateId, id) .list(); BeanUtils.copyProperties(byId,templateDetailVO); List collect = tLocationTypeService.list().stream().map(TLocationType::getId).collect(Collectors.toList()); JSONArray res = new JSONArray(); for (String s : collect) { JSONObject jsonObject = new JSONObject(); jsonObject.put("id",s); jsonObject.put("value",""); res.add(jsonObject); } for (TTemplateDetail tTemplateDetail : list) { JSONArray temp = new JSONArray(); String num4 = tTemplateDetail.getNum4(); JSONArray num5Array = JSONArray.parseArray(num4); for (Object re : res) { JSONObject jsonObject2 = (JSONObject) re; int i = 0; for (Object o : num5Array) { JSONObject jsonObject1 = (JSONObject) o; String string = jsonObject1.getString("id"); // 如果res中有这个id,则设置num if (jsonObject2.getString("id").equals(string)) { JSONObject jsonObject = new JSONObject(); jsonObject.put("id",string); jsonObject.put("value", jsonObject1.getString("value")); temp.add(jsonObject); break; } i++; if (i==num5Array.size()){ JSONObject jsonObject = new JSONObject(); jsonObject.put("id",string); jsonObject.put("value", ""); temp.add(jsonObject); } } } tTemplateDetail.setNum4(temp.toJSONString()); } if (byId.getRoleId()!=null){ SysRole sysRole = sysRoleService.selectRoleById(byId.getRoleId()); templateDetailVO.setRoleName(sysRole.getRoleName()); } templateDetailVO.setList(list); return R.ok(templateDetailVO); } public static void main(String[] args) { List collect = new ArrayList<>(); collect.add("987"); collect.add("1234"); collect.add("4321"); collect.add("9654"); collect.add("4567"); collect.add("288"); List list = new ArrayList<>(); TTemplateDetail tTemplateDetail = new TTemplateDetail(); tTemplateDetail.setId("6666"); tTemplateDetail.setNum4("{\"num5\":[{\"id\":\"1234\",\"value\":\"18\"},{\"id\":\"4321\",\"value\":\"18\"}]}"); TTemplateDetail tTemplateDetail1 = new TTemplateDetail(); tTemplateDetail1.setNum4("{\"num5\":[{\"id\":\"4567\",\"value\":\"18\"},{\"id\":\"7654\",\"value\":\"18\"}]}"); tTemplateDetail1.setId("1111"); list.add(tTemplateDetail); list.add(tTemplateDetail1); for (TTemplateDetail templateDetail : list) { JSONArray res = new JSONArray(); for (String s : collect) { JSONObject jsonObject = new JSONObject(); jsonObject.put("id",s); jsonObject.put("value",""); res.add(jsonObject); } String num4 = templateDetail.getNum4(); JSONObject jsonObject = JSONObject.parseObject(num4); JSONArray num5Array = jsonObject.getJSONArray("num5"); for (Object o : num5Array) { JSONObject jsonObject1 = (JSONObject) o; String string = jsonObject1.getString("id"); // 如果res中有这个id,则设置num for (int i = 0; i < res.size(); i++) { JSONObject jsonObject2 = (JSONObject) res.get(i); if (jsonObject2.getString("id").equals(string)) { jsonObject2.put("value",jsonObject1.getString("value")); break; } } } templateDetail.setNum4(res.toJSONString()); } System.err.println(list); // String num4 = "{\"num5\":[{\"id\":\"18678093453\",\"num\":\"18\"},{\"id\":\"18678093453\",\"num\":\"18\"}]}"; // JSONObject jsonObject = JSONObject.parseObject(num4); // JSONArray num5Array = jsonObject.getJSONArray("num5"); // System.err.println(num5Array); // JSONArray res = new JSONArray(); // for (Object o : num5Array) { // JSONObject jsonObject1 = (JSONObject) o; // String string = jsonObject1.getString("id"); // System.err.println(string); // } } }