package com.ruoyi.web.controller.station;
|
|
import java.util.ArrayList;
|
import java.util.Collections;
|
import java.util.List;
|
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
import com.ruoyi.common.constant.UrlConstant;
|
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.common.utils.IdUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.station.domain.*;
|
import com.ruoyi.station.model.TmpDataModel;
|
import com.ruoyi.station.model.WorkUserModel;
|
import com.ruoyi.station.service.*;
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.http.HttpEntity;
|
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.MediaType;
|
import org.springframework.http.ResponseEntity;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.ui.ModelMap;
|
import org.springframework.util.LinkedMultiValueMap;
|
import org.springframework.util.MultiValueMap;
|
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
import com.ruoyi.common.annotation.Log;
|
import com.ruoyi.common.enums.BusinessType;
|
import com.ruoyi.common.core.controller.BaseController;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.utils.poi.ExcelUtil;
|
import com.ruoyi.common.core.page.TableDataInfo;
|
import org.springframework.web.client.RestTemplate;
|
|
/**
|
* 组Controller
|
*
|
* @author ruoyi
|
* @date 2020-08-27
|
*/
|
@Controller
|
@RequestMapping("/station/team")
|
public class MjTeamController extends BaseController
|
{
|
private String prefix = "station/team";
|
|
@Autowired
|
private IMjTeamService mjTeamService;
|
|
@Autowired
|
private IMjTeamMemberService mjTeamMemberService;
|
|
@Autowired
|
private IMjTeamAreaService mjTeamAreaService;
|
|
@Autowired
|
private IMjFingerprintService mjFingerprintService;
|
|
@Autowired
|
private IMjFingerprintReadHeadService mjFingerprintReadHeadService;
|
|
@Autowired
|
private IMjWorkUserPushService mjWorkUserPushService;
|
|
@Autowired
|
private IMjVisitLogService iMjVisitLogService;
|
@Autowired
|
private IMjHeadsUsersService iMjHeadsUsersService;
|
|
@RequiresPermissions("station:team:view")
|
@GetMapping()
|
public String team()
|
{
|
return prefix + "/team";
|
}
|
|
/**
|
* 查询组列表
|
*/
|
@RequiresPermissions("station:team:list")
|
@PostMapping("/list")
|
@ResponseBody
|
public TableDataInfo list(MjTeam mjTeam)
|
{
|
startPage();
|
List<MjTeam> list = mjTeamService.selectMjTeamList(mjTeam);
|
return getDataTable(list);
|
}
|
|
/**
|
* 导出组列表
|
*/
|
@RequiresPermissions("station:team:export")
|
@Log(title = "组", businessType = BusinessType.EXPORT)
|
@PostMapping("/export")
|
@ResponseBody
|
public AjaxResult export(MjTeam mjTeam)
|
{
|
List<MjTeam> list = mjTeamService.selectMjTeamList(mjTeam);
|
ExcelUtil<MjTeam> util = new ExcelUtil<MjTeam>(MjTeam.class);
|
return util.exportExcel(list, "team");
|
}
|
|
/**
|
* 新增组
|
*/
|
@GetMapping("/add")
|
public String add()
|
{
|
return prefix + "/add";
|
}
|
|
/**
|
* 新增保存组
|
*/
|
@RequiresPermissions("station:team:add")
|
@Log(title = "组", businessType = BusinessType.INSERT)
|
@PostMapping("/add")
|
@ResponseBody
|
public AjaxResult addSave(MjTeam mjTeam)
|
{
|
mjTeam.setUpdateTime(DateUtils.getNowDate());
|
mjTeam.setId(IdUtils.fastSimpleUUID());
|
mjTeam.setTeamNumber(0);
|
mjTeam.setAreaNumber(0);
|
mjTeam.setEquipmentUpdateStatus(0);
|
return toAjax(mjTeamService.insertMjTeam(mjTeam));
|
}
|
|
/**
|
* 修改组
|
*/
|
@GetMapping("/edit/{id}")
|
public String edit(@PathVariable("id") String id, ModelMap mmap)
|
{
|
MjTeam mjTeam = mjTeamService.selectMjTeamById(id);
|
mmap.put("mjTeam", mjTeam);
|
return prefix + "/edit";
|
}
|
|
/**
|
* 修改保存组
|
*/
|
@RequiresPermissions("station:team:edit")
|
@Log(title = "组", businessType = BusinessType.UPDATE)
|
@PostMapping("/edit")
|
@ResponseBody
|
public AjaxResult editSave(MjTeam mjTeam)
|
{
|
return toAjax(mjTeamService.updateMjTeam(mjTeam));
|
}
|
|
/**
|
* 删除组
|
*/
|
@RequiresPermissions("station:team:remove")
|
@Log(title = "组", businessType = BusinessType.DELETE)
|
@PostMapping( "/remove")
|
@ResponseBody
|
public AjaxResult remove(String ids)
|
{
|
return toAjax(mjTeamService.deleteMjTeamByIds(ids));
|
}
|
|
/**
|
* 根据id获取组
|
* @param id
|
* @return
|
*/
|
@PostMapping("/findById")
|
@ResponseBody
|
public Object findById(String id)
|
{
|
MjTeam mjTeam = mjTeamService.selectMjTeamById(id);
|
return mjTeam;
|
}
|
|
/**
|
* 新增组
|
*/
|
@GetMapping("/parent")
|
public String parent()
|
{
|
return prefix + "/parent";
|
}
|
/**
|
* 新增组
|
*/
|
@GetMapping("/parent2")
|
public String parent2()
|
{
|
return prefix + "/parent2";
|
}
|
|
/**
|
*
|
* @param id
|
* @return
|
*/
|
@PostMapping("/pushDataToReadHead2")
|
@ResponseBody
|
public AjaxResult pushDataToReadHead(String id) {
|
addLog("组授权java逻辑代码开始执行,将要推送的数据开始筛选");
|
if(StringUtils.isEmpty(id)) {
|
return AjaxResult.error("未获取到id,请联系管理员!");
|
}
|
MjTeam team = new MjTeam();
|
team.setEquipmentUpdateStatus(0);
|
team.setId(id);
|
List<MjTeam> mjTeams = mjTeamService.selectMjTeamList(team);
|
if(mjTeams != null && mjTeams.size() > 0) {
|
return AjaxResult.error("该组已同步完成!");
|
}
|
|
MjTeamMember teamMember = new MjTeamMember();
|
teamMember.setTeamId(id);
|
List<MjTeamMember> teamMemberList = mjTeamMemberService.selectMjTeamMemberList2(teamMember); //组成员
|
|
MjTeamArea teamArea = new MjTeamArea();
|
teamArea.setTeamId(id);
|
List<MjTeamArea> teamAreaList = mjTeamAreaService.selectMjTeamAreaList2(teamArea); //组区域
|
|
List<String> areaIdList = new ArrayList<>();
|
List<String> AddAreaIdList = new ArrayList<>();
|
List<MjFingerprintReadHead> fingerprintReadHeads = new ArrayList<>();
|
List<MjFingerprintReadHead> addFingerprintReadHeads = new ArrayList<>();
|
List<MjFingerprintReadHead> delFingerprintReadHeads = new ArrayList<>();
|
if(teamAreaList != null && teamAreaList.size() > 0) {
|
for(MjTeamArea area : teamAreaList) {
|
if(area.getStatus() == 0) {
|
if(area.getDelFlag() != 1) {
|
List<MjFingerprintReadHead> heads = null;
|
AddAreaIdList.add(area.getAreaId()); //获取需增加的区域idlist
|
|
MjFingerprintReadHead fingerprintReadHead = new MjFingerprintReadHead();
|
fingerprintReadHead.setAreaId(area.getAreaId());
|
heads = mjFingerprintReadHeadService.selectMjFingerprintReadHeadList(fingerprintReadHead);
|
addFingerprintReadHeads.addAll(heads);
|
MjTeamArea tArea = new MjTeamArea();
|
tArea.setStatus(1);
|
tArea.setId(area.getId());
|
mjTeamAreaService.updateMjTeamArea(tArea); //修改区域状态为已同步
|
}
|
}else if(area.getStatus() == 2) {
|
List<MjFingerprintReadHead> heads = null;
|
MjFingerprintReadHead fingerprintReadHead = new MjFingerprintReadHead();
|
fingerprintReadHead.setAreaId(area.getAreaId());
|
heads = mjFingerprintReadHeadService.selectMjFingerprintReadHeadList(fingerprintReadHead);
|
delFingerprintReadHeads.addAll(heads);
|
|
MjTeamArea tArea = new MjTeamArea();
|
tArea.setStatus(1);
|
tArea.setId(area.getId());
|
mjTeamAreaService.updateMjTeamArea(tArea); //修改区域状态为已同步
|
}else {
|
if(area.getDelFlag() != 1) {
|
List<MjFingerprintReadHead> heads = null;
|
areaIdList.add(area.getAreaId());
|
|
MjFingerprintReadHead fingerprintReadHead = new MjFingerprintReadHead();
|
fingerprintReadHead.setAreaId(area.getAreaId());
|
heads = mjFingerprintReadHeadService.selectMjFingerprintReadHeadList(fingerprintReadHead);
|
fingerprintReadHeads.addAll(heads);
|
}
|
}
|
}
|
}
|
|
List<WorkUserModel> addWorkUserModelList = new ArrayList<>(); //新增用户
|
List<WorkUserModel> addAreaWorkUserModelList = new ArrayList<>(); //新增区域
|
int a = 0;
|
if(teamMemberList != null && teamMemberList.size() > 0) {
|
for(MjTeamMember member : teamMemberList) {
|
if(member.getStatus() == 0) {
|
List<TmpDataModel> mjFingerprintList = mjFingerprintService.selectMjFingerprintListByUserId(Long.parseLong(member.getUserId())); //获取负责人指纹信息
|
WorkUserModel workUserModel = domainToModel(member, mjFingerprintList);
|
addWorkUserModelList.add(workUserModel);
|
MjTeamMember mem = new MjTeamMember();
|
mem.setStatus(1);
|
mem.setId(member.getId());
|
mjTeamMemberService.updateMjTeamMember(mem); //改变用户状态为已同步
|
}else if(member.getStatus() == 2) {
|
if(fingerprintReadHeads != null && fingerprintReadHeads.size() > 0) {
|
fingerprintReadHeads.addAll(delFingerprintReadHeads);
|
delUserTmp(fingerprintReadHeads, member.getUserId());
|
MjTeamMember mem = new MjTeamMember();
|
mem.setStatus(1);
|
mem.setId(member.getId());
|
mjTeamMemberService.updateMjTeamMember(mem); //改变用户状态为已同步
|
}
|
}else { //用户没有变化,区域变化
|
if(delFingerprintReadHeads != null && delFingerprintReadHeads.size() > 0) { //需要删除的区域
|
delUserTmp(delFingerprintReadHeads, member.getUserId());
|
}
|
if(addFingerprintReadHeads != null && addFingerprintReadHeads.size() > 0) { //需要添加的区域
|
List<TmpDataModel> mjFingerprintList = mjFingerprintService.selectMjFingerprintListByUserId(Long.parseLong(member.getUserId())); //获取负责人指纹信息
|
WorkUserModel workUserModel = domainToModel(member, mjFingerprintList);
|
addAreaWorkUserModelList.add(workUserModel);
|
a=1;
|
}
|
}
|
}
|
addLog("组授权java逻辑代码结束执行,将要推送的数据筛选结束");
|
Integer code = 0;
|
if(addWorkUserModelList != null && addWorkUserModelList.size() > 0) {
|
areaIdList.addAll(AddAreaIdList);
|
JSONArray jsonArray=new JSONArray(Collections.singletonList(addWorkUserModelList));
|
String userDatas = jsonArray.toString().substring(1, jsonArray.toString().length()-1);
|
code = addTeamUsers(userDatas, areaIdList, id);
|
}
|
if(a == 1) {
|
JSONArray jsonArray=new JSONArray(Collections.singletonList(addAreaWorkUserModelList));
|
String userDatas = jsonArray.toString().substring(1, jsonArray.toString().length()-1);
|
code = addTeamUsers(userDatas, AddAreaIdList, id);
|
}
|
if(code != 0) {
|
return AjaxResult.error("同步失败!");
|
}
|
}
|
|
MjTeam team1 = new MjTeam();
|
team1.setEquipmentUpdateStatus(0);
|
team1.setId(id);
|
mjTeamService.updateMjTeam(team1); //改变组状态为已同步
|
return AjaxResult.success("同步成功!");
|
|
}
|
|
|
//增加组用户
|
private Integer addTeamUsers(String value, List<String> areaIdList,String id) {
|
RestTemplate restTemplate = new RestTemplate();
|
HttpHeaders headers = new HttpHeaders();
|
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
|
JSONObject jsonObject = null;
|
if(areaIdList.size() > 0) {
|
for(String areaId : areaIdList) {
|
MjFingerprintReadHead fingerprintReadHead = new MjFingerprintReadHead();
|
fingerprintReadHead.setAreaId(areaId);
|
List<MjFingerprintReadHead> fingerprintReadHeads = mjFingerprintReadHeadService.selectMjFingerprintReadHeadList(fingerprintReadHead);
|
for(MjFingerprintReadHead head : fingerprintReadHeads) {
|
MultiValueMap<String, Object> map= new LinkedMultiValueMap<>();
|
|
map.add("ip", head.getIpOrOther());
|
map.add("port", head.getPort());
|
map.add("userDatas", value);
|
|
HttpEntity<MultiValueMap<String, Object>> request = new HttpEntity<>(map, headers);
|
try {
|
addLog("组授权通过C#接口批量增加用户--开始。推送的人数:"+value.length()+"人"+",推送的读头ip:"+head.getIpOrOther());
|
ResponseEntity<String> response = restTemplate.postForEntity( UrlConstant.ZK_URL+"api/SDZ/ZktAddUserTmpByList", request , String.class );
|
jsonObject = JSONObject.parseObject(response.getBody());
|
System.out.println(response.getBody());
|
addLog("组授权通过C#接口批量增加用户--结束");
|
/* if(jsonObject != null && (int)jsonObject.get("code") == 0) {
|
MjTeam team = new MjTeam();
|
team.setEquipmentUpdateStatus(0);
|
team.setId(id);
|
mjTeamService.updateMjTeam(team); //改变组状态为已同步
|
}*/
|
}catch (Exception e) {
|
e.printStackTrace();
|
return 1;
|
}
|
}
|
}
|
}
|
if(jsonObject != null) {
|
return (int)jsonObject.get("code");
|
}
|
return 1;
|
}
|
|
//删除组用户指纹
|
private void delUserTmp(List<MjFingerprintReadHead> heads, String userId) {
|
if(heads != null && heads.size() > 0) {
|
addLog("组授权删除组用户指纹开始");
|
for(MjFingerprintReadHead head : heads) {
|
if(StringUtils.isNotEmpty(head.getIpOrOther()) && StringUtils.isNotEmpty(head.getPort())) {
|
mjWorkUserPushService.removeFingerTmp(userId, head.getIpOrOther(), head.getPort());
|
}
|
}
|
addLog("组授权删除组用户指纹结束");
|
}
|
}
|
|
//转换为访问所需model
|
private WorkUserModel domainToModel(MjTeamMember member, List<TmpDataModel> mjFingerprintList) {
|
WorkUserModel workUserModel = new WorkUserModel();
|
workUserModel.setId(member.getUserId().toString().trim());
|
workUserModel.setName(member.getUserName().trim());
|
workUserModel.setPass("");
|
workUserModel.setiPrivilege(0);
|
workUserModel.setFlag("a");
|
workUserModel.setTmpDatas(mjFingerprintList);
|
return workUserModel;
|
}
|
|
private void addLog(String content){
|
MjVisitLog mjVisitLog = new MjVisitLog();
|
mjVisitLog.setDelFlag(1);
|
mjVisitLog.setUserName(content);
|
mjVisitLog.setId(IdUtils.fastSimpleUUID());
|
iMjVisitLogService.insertMjVisitLog(mjVisitLog);
|
}
|
|
/**
|
*
|
* @param id
|
* @return
|
*/
|
@PostMapping("/pushDataToReadHead")
|
@ResponseBody
|
public AjaxResult pushDataToReadHead2(String id) {
|
RestTemplate restTemplate = new RestTemplate();
|
HttpHeaders headers = new HttpHeaders();
|
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
|
List<WorkUserModel> user = getUser(id);
|
String value = JSONArray.toJSON(user).toString();
|
|
MjTeam team = mjTeamService.selectMjTeamById(id);
|
|
MjTeamArea teamArea = new MjTeamArea();
|
teamArea.setTeamId(id);
|
teamArea.setStatus(0);
|
teamArea.setDelFlag(0);
|
List<MjTeamArea> teamAreaList = mjTeamAreaService.selectMjTeamAreaList2(teamArea); //新增的区域
|
for(MjTeamArea mjTeamArea:teamAreaList){
|
MjFingerprintReadHead fingerprintReadHead = new MjFingerprintReadHead();
|
fingerprintReadHead.setAreaId(mjTeamArea.getAreaId());
|
List<MjFingerprintReadHead> hs = mjFingerprintReadHeadService.selectMjFingerprintReadHeadList(fingerprintReadHead);
|
for(MjFingerprintReadHead rh:hs){
|
// for(WorkUserModel u:user){
|
// MjHeadsUsers mjHeadsUsers = new MjHeadsUsers();
|
// mjHeadsUsers.setUserId(Long.valueOf(u.getId()));
|
// mjHeadsUsers.setAuthorizeName(team.getTeamName());
|
// mjHeadsUsers.setAuthorizeResult(0);
|
// mjHeadsUsers.setAuthorizeType(0);
|
// mjHeadsUsers.setAuthorizeStatus(0);
|
// mjHeadsUsers.setHeadId(rh.getId());
|
// mjHeadsUsers.setHeadType(0);
|
// mjHeadsUsers.setMainUser(1);
|
// iMjHeadsUsersService.insertMjHeadsUsers(mjHeadsUsers);
|
// }
|
Thread t = new Thread(new Runnable(){
|
public void run(){
|
MultiValueMap<String, Object> map= new LinkedMultiValueMap<>();
|
|
map.add("ip", rh.getIpOrOther());
|
map.add("port", rh.getPort());
|
map.add("userDatas", value);
|
|
HttpEntity<MultiValueMap<String, Object>> request = new HttpEntity<>(map, headers);
|
try {
|
addLog("组授权通过C#接口批量增加用户--开始。推送的人数:"+user.size()+"人"+",推送的读头ip:"+rh.getIpOrOther());
|
ResponseEntity<String> response = restTemplate.postForEntity( UrlConstant.ZK_URL+"api/SDZ/ZktAddUserTmpByList", request , String.class );
|
JSONObject jsonObject = JSONObject.parseObject(response.getBody());
|
System.out.println(response.getBody());
|
addLog("组授权通过C#接口批量增加用户--结束");
|
}catch (Exception e) {
|
e.printStackTrace();
|
|
}
|
|
}});
|
t.start();
|
}
|
|
mjTeamArea.setStatus(1);
|
mjTeamAreaService.updateMjTeamArea(mjTeamArea);
|
}
|
MjTeam mjTeam = mjTeamService.selectMjTeamById(id);
|
mjTeam.setEquipmentUpdateStatus(1);
|
mjTeamService.updateMjTeam(mjTeam);
|
return toAjax(true);
|
}
|
|
public List<WorkUserModel> getUser(String id){
|
MjTeamMember teamMember = new MjTeamMember();
|
teamMember.setTeamId(id);
|
teamMember.setStatus(0);
|
teamMember.setDelFlag(0);
|
List<MjTeamMember> teamMemberList = mjTeamMemberService.selectMjTeamMemberList2(teamMember); //组成员
|
List<WorkUserModel> wums = new ArrayList<WorkUserModel>();
|
for (MjTeamMember mjTeamMember:teamMemberList){
|
List<TmpDataModel> mjFingerprintList = mjFingerprintService.selectMjFingerprintListByUserId(Long.parseLong(mjTeamMember.getUserId())); //获取负责人指纹信息
|
WorkUserModel workUserModel = domainToModel(mjTeamMember, mjFingerprintList);
|
wums.add(workUserModel);
|
|
mjTeamMember.setStatus(1);
|
mjTeamMemberService.updateMjTeamMember(mjTeamMember);
|
}
|
|
return wums;
|
}
|
|
}
|