package com.ruoyi.web.controller.api;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.BasePage;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.framework.web.service.TokenService;
import com.ruoyi.system.dto.MissionIdDto;
import com.ruoyi.system.dto.TMissionUserDto;
import com.ruoyi.system.model.*;
import com.ruoyi.system.query.TEquipmentQuery;
import com.ruoyi.system.service.*;
import com.ruoyi.system.vo.MissionTotalVo;
import com.ruoyi.system.vo.TotalHistoryVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.Month;
import java.util.List;
/**
*
* 任务管理 前端控制器
*
*
* @author xiaochen
* @since 2025-09-28
*/
@RestController
@RequestMapping("")
@Api(tags = "任务App")
public class TMissionController {
private final TokenService tokenService;
private final TAppUserService appUserService;
private final TMissionService missionService;
private final TMissionReassignService missionReassignService;
private final TMissionAssignRuleService missionAssignRuleService;
private final TEquipmentService equipmentService;
private final TMissionUserService missionUserService;
@Autowired
public TMissionController(TokenService tokenService, TAppUserService appUserService, TMissionService missionService, RedisCache redisCache, TMissionReassignService missionReassignService, TMissionAssignRuleService missionAssignRuleService, TEquipmentService equipmentService, TMissionUserService missionUserService) {
this.tokenService = tokenService;
this.appUserService = appUserService;
this.missionService = missionService;
this.missionReassignService = missionReassignService;
this.missionAssignRuleService = missionAssignRuleService;
this.equipmentService = equipmentService;
this.missionUserService = missionUserService;
}
@ApiOperation(value = "获取任务列表--任务汇总",notes = "响应参数:R«app任务汇总数»", response = MissionTotalVo.class)
@PostMapping(value = "/api/t-mission/missionTotal")
public R missionTotal() {
String userId = tokenService.getLoginUserApplet().getUserId();
return R.ok(missionService.missionTotal(userId));
}
/**
* 获取待执行任务 任务列表
*/
// @PreAuthorize("@ss.hasPermi('system:mission:list')")
@ApiOperation(value = "获取任务列表--待执行任务",notes = "请求参数:基础查询列表dto,响应参数:TMission对象", response = TMission.class)
@PostMapping(value = "/api/t-mission/pageNowList")
public R> pageList(@RequestBody String param) {
BasePage query = JSON.parseObject(param, BasePage.class);
String userId = tokenService.getLoginUserApplet().getUserId();
return R.ok(missionService.pageNowList(query,userId));
}
/**
* 获取抢单任务列表 任务列表
*/
// @PreAuthorize("@ss.hasPermi('system:mission:list')")
@ApiOperation(value = "获取任务列表--抢单任务列表",notes = "请求参数:基础查询列表dto,响应参数:TMission对象", response = BasePage.class)
@PostMapping(value = "/api/t-mission/pageGrabList")
public R> pageGrabList(@RequestBody String param) {
BasePage query = JSON.parseObject(param, BasePage.class);
return R.ok(missionService.pageGrabList(query));
}
/**
* 获取历史任务 任务列表
*/
// @PreAuthorize("@ss.hasPermi('system:mission:list')")
@ApiOperation(value = "获取任务列表--历史任务",notes = "请求参数:基础查询列表dto,响应参数:TMission对象", response = TMission.class)
@PostMapping(value = "/api/t-mission/pageHistoryList")
public R> pageHistoryList(@RequestBody String param) {
BasePage query = JSON.parseObject(param, BasePage.class);
String userId = tokenService.getLoginUserApplet().getUserId();
return R.ok(missionService.pageHistoryList(query,userId));
}
@ApiOperation(value = "获取任务列表--历史任务汇总",notes = "响应参数:app历史任务顶部汇总", response = TotalHistoryVo.class)
@PostMapping(value = "/open/t-mission/totalHistory")
public R totalHistory() {
String userId = tokenService.getLoginUserApplet().getUserId();
// String userId ="1";
return R.ok(missionService.totalHistory(userId));
}
/**
* 添加任务
*/
@ApiOperation(value = "获取任务列表--添加任务",notes = "请求参数:TMission对象", response = TMission.class)
@PostMapping(value = "/api/t-mission/addMission")
public R addMission(@RequestBody String param) {
TMission tMission = JSON.parseObject(param, TMission.class);
String userId = tokenService.getLoginUserApplet().getUserId();
TAppUser appUser = appUserService.getById(userId);
tMission.setCommitUserId(userId);
tMission.setCommitTime(LocalDateTime.now());
tMission.setCommitUserName(appUser.getNickName());
tMission.setCommitType(2);
tMission.setIsMissionPool(0);
missionService.save(tMission);
return R.ok(tMission.getId());
}
/**
* 抢单任务
*/
@ApiOperation(value = "获取任务列表--抢单任务", response = TMission.class)
@PostMapping(value = "/api/t-mission/grabMission")
public R grabMission(@RequestBody String param) {
MissionIdDto missionId = JSON.parseObject(param, MissionIdDto.class);
String userId = tokenService.getLoginUserApplet().getUserId();
return R.ok( missionService.grabMission(missionId.getMissionId(),userId));
}
/**
* 申请支援
*/
@ApiOperation(value = "获取任务列表--申请支援/改派", response = TMissionReassign.class)
@PostMapping(value = "/api/t-mission/requestSupport")
public R> requestSupport(@RequestBody String param) {
TMissionReassign tMissionReassign = JSON.parseObject(param, TMissionReassign.class);
String userId = tokenService.getLoginUserApplet().getUserId();
TAppUser appUser = appUserService.getById(userId);
tMissionReassign.setCommitUserId(userId);
tMissionReassign.setCommitTime(LocalDateTime.now());
tMissionReassign.setCommitUserName(appUser.getNickName());
missionReassignService.save(tMissionReassign);
return R.ok();
}
public static void main(String[] args) {
LocalDate now = LocalDate.now();
System.out.println(LocalDate.now().minusMonths(5) + " 00:00:00");
}
/**
* 完成任务
*/
@ApiOperation(value = "获取任务列表--完成任务汇报", response = TMissionUserDto.class)
@PostMapping(value = "/api/t-mission/successMission")
public R> successMission(@RequestBody String param) {
TMissionUserDto dto = JSON.parseObject(param, TMissionUserDto.class);
String userId = tokenService.getLoginUserApplet().getUserId();
missionService.successMission(dto,userId);
return R.ok();
}
/**
* 获取任务类型
*/
@ApiOperation(value = "获取任务列表--获取任务类型", response = TMissionAssignRule.class)
@PostMapping(value = "/api/t-mission/missionTypeList")
public R> missionTypeList() {
List list = missionAssignRuleService.list();
return R.ok(list);
}
/**
* 获取任务详情
*/
@ApiOperation(value = "获取任务列表--获取任务详情", response = TMission.class)
@PostMapping(value = "/api/t-mission/detailMission")
public R detailMission(@RequestBody String param) {
MissionIdDto missionId = JSON.parseObject(param, MissionIdDto.class);
String userId = tokenService.getLoginUserApplet().getUserId();
TMission tMission = missionService.getById(missionId.getMissionId());
TMissionAssignRule byId = missionAssignRuleService.getById(tMission.getMissionTypeId());
tMission.setMissionType(byId.getTypeName());
// 判断我结果这个任务没有
TMissionUser one = missionUserService.getOne(new QueryWrapper().eq("mission_id", missionId.getMissionId()).eq("app_user_id", userId).orderByDesc("create_time"));
if(one!=null){
tMission.setUserMissionId(one.getId());
}
tMission.setMissionUser( one);
return R.ok(tMission);
}
/**
* 装备库管理列表
*/
//@PreAuthorize("@ss.hasPermi('system:equipment:list')")
@ApiOperation(value = "装备库管理列表", response = TEquipment.class)
@PostMapping(value = "/api/t-mission/equipmentList")
public R> equipmentList() {
return R.ok(equipmentService.list());
}
}