From c957a8c67d593966e4882f8bef73c7d58012f19d Mon Sep 17 00:00:00 2001
From: zengh <123456>
Date: Mon, 02 Jan 2023 09:25:37 +0800
Subject: [PATCH] 1、任务接收问题修复

---
 src/main/java/org/springblade/modules/taskqd/controller/TaskqdController.java |  248 +++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 226 insertions(+), 22 deletions(-)

diff --git a/src/main/java/org/springblade/modules/taskqd/controller/TaskqdController.java b/src/main/java/org/springblade/modules/taskqd/controller/TaskqdController.java
index b8fdb7d..a25b5c5 100644
--- a/src/main/java/org/springblade/modules/taskqd/controller/TaskqdController.java
+++ b/src/main/java/org/springblade/modules/taskqd/controller/TaskqdController.java
@@ -22,6 +22,8 @@
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
+import me.zhyd.oauth.log.Log;
+import org.joda.time.DateTime;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
@@ -42,10 +44,9 @@
 
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 /**
  * 控制器
@@ -82,7 +83,7 @@
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "分页", notes = "传入task")
 	public R<IPage<TaskqdVO>> list(Taskqd taskqd, Query query) {
-		IPage<Taskqd> pages = taskqdService.page(Condition.getPage(query), Condition.getQueryWrapper(taskqd));
+		IPage<Taskqd> pages = taskqdService.page(Condition.getPage(query), Condition.getQueryWrapper(taskqd).orderByDesc("time"));
 		return R.data(TaskqdWrapper.build().pageVO(pages));
 	}
 
@@ -94,6 +95,7 @@
 	@ApiOperationSupport(order = 4)
 	@ApiOperation(value = "新增", notes = "传入task")
 	public R save(@Valid @RequestBody Taskqd taskqd) {
+		pushMsgService.pushMsg(taskqd.getJurisdiction());
 		return R.status(taskqdService.save(taskqd));
 	}
 
@@ -104,6 +106,14 @@
 	@ApiOperationSupport(order = 5)
 	@ApiOperation(value = "修改", notes = "传入task")
 	public R update(@Valid @RequestBody Taskqd taskqd) {
+
+		if (taskqd.getStime() == null || taskqd.getStime().equals("")){
+			taskqd.setStime(null);
+		}
+		if (taskqd.getSendtime() == null || taskqd.getSendtime().equals("")){
+			taskqd.setSendtime(null);
+		}
+
 		return R.status(taskqdService.updateById(taskqd));
 	}
 
@@ -147,7 +157,54 @@
 	 */
 	@PostMapping("/Graborder")
 	public R Graborder(@Valid @RequestBody Taskqd taskqd) {
+
+		//要接的任务
 		List<Taskqd> list = taskqdService.selectList(taskqd.getId());
+
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+		//转换
+		try {
+
+			//获取要接任务的时间戳
+			Date timea = sdf.parse(list.get(0).getTime());
+			Date timejs = sdf.parse(list.get(0).getEndtime());
+			System.out.println("开始时间——————"+timea.getTime());
+			Long start = timea.getTime() ;
+			Long start2 = timejs.getTime() ;
+			System.out.println("开始时间——————"+start);
+			System.out.println("开始时间——————"+sdf.format(start));
+
+			//判断是否有同时间段的任务
+			//已接的任务
+			List<TaskqdVO> yjlist = taskqdService.getlist(taskqd.getSerid().toString(), "2");
+			for (int i = 0; i < yjlist.size(); i++) {
+				//获取已接任务开始时间的时间戳
+				Date times = sdf.parse(yjlist.get(i).getTime());
+
+				if (times.getTime() >= start2){
+					//已接任务提前两个小时
+					Long ends = times.getTime() - 2 * 60 * 60 * 1000;
+					System.out.println("结束时间——————"+sdf.format(ends));
+					if (ends < start2) {
+						return R.fail("已有正在进行的同时段任务");
+					}
+				}else{
+					//获取已接任务的结束时间戳
+					Date timeb = sdf.parse(yjlist.get(i).getEndtime());
+					//已接任务后两个小时
+					Long end = timeb.getTime()+ 2 * 60 * 60 * 1000;
+					System.out.println("结束时间——————"+sdf.format(end));
+					if (end > start) {
+						return R.fail("已有正在进行的同时段任务");
+					}
+				}
+			}
+
+		} catch (ParseException e) {
+			e.printStackTrace();
+		}
+
 		//总数
 		Integer jnum = list.get(0).getJnum();
 		//人数
@@ -163,13 +220,14 @@
 					//String serid2 = list.get(0).getSerid();
 					//String substring = serid2.substring(0, serid.length() - 1);
 					//String s = serid + substring;
+					System.out.println("用户id:" + serid);
 					taskqdService.updatet(taskqd.getId(), i, serid, null, null);
 					return R.success("抢单成功");
 				} else {
 					String ser = taskqd.getSerid();
 					String ser2 = list.get(0).getSerid();
-					String sub = ser.substring(0, serid.length() - 1);
-					String ss = ser2 + sub;
+					//String sub = ser.substring(0, serid.length() - 1);
+					String ss = ser2 + ser;
 
 					String team = taskqd.getCaptain();
 					boolean isteam = StringUtil.isEmpty(list.get(0).getTeam());
@@ -224,8 +282,8 @@
 	 * @return
 	 */
 	@PostMapping("/selectLi")
-	public R selectLi(String type, String serid, String jurisdiction) {
-		List<TaskqdVO> list = taskqdService.selectLi(type, serid, jurisdiction);
+	public R selectLi(String type, String serid, String jurisdiction, String workjurisdiction, String tasktype) {
+		List<TaskqdVO> list = taskqdService.selectLi(type, serid, jurisdiction, workjurisdiction, tasktype);
 		for (int i = 0; i < list.size(); i++) {
 			Integer nums = list.get(i).getNums();
 
@@ -251,26 +309,172 @@
 
 	/**
 	 * 查询可参与任务
+	 *
 	 * @param serid
 	 * @param jurisdiction
 	 * @return
 	 */
 	@GetMapping("/selectNum")
-	public R selectNum(String serid,String jurisdiction) {
-		return R.data(taskqdService.selectNum(serid, jurisdiction));
-	}
-
-	@GetMapping("/startTask")
-	public R<Map> startTask(String rid, String serid,String type,String data) {
-		//获取组员id并进行通知
-		Map<String, Object> map = new HashMap<>();
-		int msg = pushMsgService.startTask(serid, rid,type);
-		map.put("res", msg);
-		map.put("type", type);
-		map.put("data",data);
-		taskqdService.updateRtype("0",rid);
+	public R selectNum(String serid, String jurisdiction, String workjurisdiction) {
+		List<Map<String, Object>> maps = taskqdService.selectNum(serid, jurisdiction, workjurisdiction);
+		//0:治安巡查
+		Map map = new HashMap();
+		int a = 0;
+		int b = 0;
+		int c = 0;
+		for (int i = 0; i < maps.size(); i++) {
+			String tasktype = maps.get(i).get("tasktype").toString();
+			if (tasktype.equals("0")) {
+				map.put("xcha", maps.get(i).get("num"));
+				a = 1;
+			} else if (tasktype.equals("1")) {
+				map.put("xchuan", maps.get(i).get("num"));
+				b = 1;
+			} else if (tasktype.equals("2")) {
+				map.put("px", maps.get(i).get("num"));
+				c = 1;
+			}
+		}
+		if (a == 0) {
+			map.put("xcha", 0);
+		}
+		if (b == 0) {
+			map.put("xchuan", 0);
+		}
+		if (c == 0) {
+			map.put("px", 0);
+		}
 		return R.data(map);
 	}
 
+	@GetMapping("/startTask")
+	public R<Map> startTask(String rid, String serid, String type, String data) {
+		//获取组员id并进行通知
+		Map<String, Object> map = new HashMap<>();
 
+		serid = taskqdService.querySerid(rid);
+
+		int msg = pushMsgService.startTask(serid, rid, type, data);
+		map.put("res", msg);
+		map.put("type", type);
+		map.put("data", data);
+		if (!type.equals("stop")) {
+			taskqdService.updateRtype("0", rid);
+		}
+		return R.data(map);
+	}
+
+	@GetMapping("/cancelTask")
+	public R cancelTask(String rid, String serid, String name) {
+		//任务查询
+		//String id = taskqdService.querySerid(rid);
+		List<Taskqd> list = taskqdService.selectList(Integer.valueOf(rid));
+
+		//获取参与者id
+		String id = list.get(0).getSerid();
+
+		String captain[] = id.split(",");
+		if (captain[0].equals(serid)) {
+			return R.status(taskqdService.removeByIds(Func.toLongList(rid)));
+		}
+
+		//获取参与者名称
+		String[] nameList = list.get(0).getTeam().split(",");
+		//创建新的参与者
+		String newteam = "";
+		//设置标识防止删除同名人员
+		boolean flage = true;
+		for (int i = 0; i < nameList.length; i++) {
+			if (flage) {
+				if (!name.equals(nameList[i])) {
+					newteam += nameList[i] + ",";
+				} else {
+					flage = false;
+				}
+			} else {
+				newteam += nameList[i] + ",";
+			}
+
+		}
+		//去除最后的逗号
+		if (newteam.length() != 0) {
+			newteam = newteam.substring(0, newteam.length() - 1);
+		}
+
+		//扣去人数
+		int newnum = list.get(0).getNum() - 1;
+
+		//成员id拼接逗号方便删除
+		String delid = "," + serid;
+		//将指定成员删除
+		String resid = id.replaceAll(delid, "");
+
+		return R.status(taskqdService.updateSerid(rid, resid, newteam, newnum));
+	}
+
+	@GetMapping("/taskCount")
+	public R cancelTask(String id, String type) {
+		List<Map<String, Object>> cout = taskqdService.taskCount(id, type);
+		List<TaskqdVO> list = taskqdService.getlist(id, type);
+		Map<String, Object> res = new HashMap<>();
+		res.put("ywc", cout.get(0).get("count"));
+		res.put("wwc", cout.get(1).get("count"));
+		res.put("data", list);
+		return R.data(res);
+	}
+
+	/**
+	 * 查询所有任务轨迹以及人员轨迹
+	 * @return
+	 */
+	@GetMapping("/queryAllTrar")
+	public R queryAllTrar() {
+		List<Map<String, Object>> allTask = taskqdService.allTask();
+
+
+		return R.data(allTask);
+	}
+
+	/**
+	 * @param nowTime   当前时间
+	 * @param startTime 开始时间
+	 * @param endTime   结束时间
+	 * @return
+	 * @author sunran   判断当前时间在时间区间内
+	 */
+	public static boolean isEffectiveDate(Date nowTime, Date startTime, Date endTime) {
+		if (nowTime.getTime() == startTime.getTime()
+			|| nowTime.getTime() == endTime.getTime()) {
+			return true;
+		}
+
+		Calendar date = Calendar.getInstance();
+		date.setTime(nowTime);
+
+		Calendar begin = Calendar.getInstance();
+		begin.setTime(startTime);
+
+		Calendar end = Calendar.getInstance();
+		end.setTime(endTime);
+
+		if (date.after(begin) && date.before(end)) {
+			return true;
+		} else {
+			return false;
+		}
+	}
+
+	/**
+	 * 根据派出所展示发布数量前十五,根据日周月切换
+	 * @param jurisdiction 派出所编号
+	 * @param startTime 发布时间
+	 * @param period 日(day) 月(week) 年(year)
+	 * @return
+	 */
+	@GetMapping("/countTaskByJur")
+	@ApiOperation(value = "统计")
+	public R countTaskByJur(String jurisdiction, String startTime,String period ){
+		List<Taskqd> list = taskqdService.countTaskByJur(jurisdiction,startTime,period);
+		return R.data(list);
+	}
 }

--
Gitblit v1.9.3