package com.ruoyi.web.controller.station;
|
|
import java.util.ArrayList;
|
import java.util.Collections;
|
import java.util.List;
|
|
import com.alibaba.fastjson.JSON;
|
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/member")
|
public class MjTeamMemberController extends BaseController
|
{
|
private String prefix = "station/member";
|
|
@Autowired
|
private IMjTeamMemberService mjTeamMemberService;
|
@Autowired
|
private IMjWorkUserService iMjWorkUserService;
|
@Autowired
|
private IMjTeamService iMjTeamService;
|
@Autowired
|
private IMjHeadsUsersService iMjHeadsUsersService;
|
@Autowired
|
private IMjTeamAreaService iMjTeamAreaService;
|
@Autowired
|
private IMjFingerprintReadHeadService mjFingerprintReadHeadService;
|
@Autowired
|
private IMjWorkUserPushService mjWorkUserPushService;
|
@Autowired
|
private IMjWorkUserService workUserService;
|
@Autowired
|
private IMjFingerprintService fingerprintService;
|
|
@RequiresPermissions("station:member:view")
|
@GetMapping()
|
public String member()
|
{
|
return prefix + "/member";
|
}
|
|
/**
|
* 查询组成员关联列表
|
*/
|
@RequiresPermissions("station:member:list")
|
@PostMapping("/list")
|
@ResponseBody
|
public TableDataInfo list(MjTeamMember mjTeamMember)
|
{
|
startPage();
|
mjTeamMember.setStatus(0);
|
List<MjTeamMember> list = mjTeamMemberService.selectMjTeamMemberList(mjTeamMember);
|
return getDataTable(list);
|
}
|
|
/**
|
* 导出组成员关联列表
|
*/
|
@RequiresPermissions("station:member:export")
|
@Log(title = "组成员关联", businessType = BusinessType.EXPORT)
|
@PostMapping("/export")
|
@ResponseBody
|
public AjaxResult export(MjTeamMember mjTeamMember)
|
{
|
List<MjTeamMember> list = mjTeamMemberService.selectMjTeamMemberList(mjTeamMember);
|
ExcelUtil<MjTeamMember> util = new ExcelUtil<MjTeamMember>(MjTeamMember.class);
|
return util.exportExcel(list, "member");
|
}
|
|
/**
|
* 新增组成员关联
|
*/
|
@GetMapping("/add")
|
public String add()
|
{
|
return prefix + "/add";
|
}
|
|
/**
|
* 新增保存组成员关联
|
*/
|
@RequiresPermissions("station:member:add")
|
@Log(title = "组成员关联", businessType = BusinessType.INSERT)
|
@PostMapping("/add")
|
@ResponseBody
|
public synchronized AjaxResult addSave(MjTeamMember mjTeamMember)
|
{
|
List<MjTeamMember> mjTeamMembers = mjTeamMemberService.selectMjTeamMemberList(mjTeamMember);
|
if(mjTeamMembers.size()>0){
|
// if(mjTeamMembers.get(0).getStatus()==2){
|
// MjTeamMember m = mjTeamMembers.get(0);
|
// m.setStatus(0);
|
// m.setDelFlag(0);
|
// int i = mjTeamMemberService.updateMjTeamMember(m);
|
// return toAjax(i);
|
// }
|
return error("不可重复添加");
|
}
|
mjTeamMember.setUpdateTime(DateUtils.getNowDate());
|
mjTeamMember.setId(IdUtils.fastSimpleUUID());
|
MjWorkUser mjWorkUser = iMjWorkUserService.selectMjWorkUserById(Long.valueOf(mjTeamMember.getUserId()));
|
mjTeamMember.setUserName(mjWorkUser.getUserName());
|
|
updateNum(mjTeamMember.getTeamId());
|
|
MjTeam team = iMjTeamService.selectMjTeamById(mjTeamMember.getTeamId());
|
MjTeamArea teamArea = new MjTeamArea();
|
teamArea.setTeamId(team.getId());
|
teamArea.setStatus(0);
|
teamArea.setDelFlag(0);
|
List<MjTeamArea> teamAreaList = iMjTeamAreaService.selectMjTeamAreaList2(teamArea); //新增的区域
|
for(MjTeamArea mjTeamArea:teamAreaList) {
|
MjFingerprintReadHead fingerprintReadHead = new MjFingerprintReadHead();
|
fingerprintReadHead.setAreaId(mjTeamArea.getAreaId());
|
List<MjFingerprintReadHead> hs = mjFingerprintReadHeadService.selectMjFingerprintReadHeadList(fingerprintReadHead);
|
for (MjFingerprintReadHead rh : hs) {
|
MjHeadsUsers mjHeadsUsers = new MjHeadsUsers();
|
mjHeadsUsers.setUserId(Long.valueOf(mjTeamMember.getUserId()));
|
mjHeadsUsers.setAuthorizeName(team.getTeamName());
|
mjHeadsUsers.setAuthorizeResult(0);
|
mjHeadsUsers.setAuthorizeType(0);
|
mjHeadsUsers.setAuthorizeStatus(0);
|
mjHeadsUsers.setHeadId(rh.getId());
|
mjHeadsUsers.setHeadType(rh.getNewOldStatus());
|
mjHeadsUsers.setMainUser(1);
|
mjHeadsUsers.setOrderId(team.getId());
|
iMjHeadsUsersService.insertMjHeadsUsers(mjHeadsUsers);
|
addPush(mjHeadsUsers);
|
}
|
}
|
return toAjax(mjTeamMemberService.insertMjTeamMember(mjTeamMember));
|
}
|
|
//更新组人数
|
public void updateNum(String teamId){
|
// MjTeamMember mjTeamMember2 = new MjTeamMember();
|
// mjTeamMember2.setTeamId(teamId);
|
// List<MjTeamMember> mjTeamMembers2 = mjTeamMemberService.selectMjTeamMemberList(mjTeamMember2);
|
MjTeam mjTeam = iMjTeamService.selectMjTeamById(teamId);
|
mjTeam.setTeamNumber(mjTeam.getTeamNumber()+1);
|
mjTeam.setEquipmentUpdateStatus(1);
|
iMjTeamService.updateMjTeam(mjTeam);
|
}
|
|
/**
|
* 修改组成员关联
|
*/
|
@GetMapping("/edit/{id}")
|
public String edit(@PathVariable("id") String id, ModelMap mmap)
|
{
|
MjTeamMember mjTeamMember = mjTeamMemberService.selectMjTeamMemberById(id);
|
mmap.put("mjTeamMember", mjTeamMember);
|
return prefix + "/edit";
|
}
|
|
/**
|
* 修改保存组成员关联
|
*/
|
@RequiresPermissions("station:member:edit")
|
@Log(title = "组成员关联", businessType = BusinessType.UPDATE)
|
@PostMapping("/edit")
|
@ResponseBody
|
public AjaxResult editSave(MjTeamMember mjTeamMember)
|
{
|
return toAjax(mjTeamMemberService.updateMjTeamMember(mjTeamMember));
|
}
|
|
/**
|
* 删除组成员关联
|
*/
|
@RequiresPermissions("station:member:remove")
|
@Log(title = "组成员关联", businessType = BusinessType.DELETE)
|
@PostMapping( "/remove")
|
@ResponseBody
|
public AjaxResult remove(String ids)
|
{
|
String[] split = ids.split(",");
|
MjTeamMember mjTeamMember = mjTeamMemberService.selectMjTeamMemberById(split[0]);
|
MjTeam mjTeam = iMjTeamService.selectMjTeamById(mjTeamMember.getTeamId());
|
mjTeam.setTeamNumber(mjTeam.getTeamNumber()-split.length);
|
iMjTeamService.updateMjTeam(mjTeam);
|
int i = mjTeamMemberService.deleteMjTeamMemberByIds(ids);
|
return toAjax(i);
|
}
|
|
|
/**
|
* 根据teamId获取组成员
|
* @param teamId
|
* @return
|
*/
|
@PostMapping( "/findByTeamId")
|
@ResponseBody
|
public Object findByTeamId(String teamId)
|
{
|
MjTeamMember mjTeamMember = new MjTeamMember();
|
mjTeamMember.setTeamId(teamId);
|
List<MjTeamMember> mjTeamMembers = mjTeamMemberService.selectMjTeamMemberList(mjTeamMember);
|
return mjTeamMembers;
|
}
|
|
/**
|
* 批量添加/修改
|
* @param teamId
|
* @param arrMember 逗号分割
|
* @return
|
*/
|
@PostMapping( "/addList")
|
@ResponseBody
|
public Object addList(String teamId,String arrMember)
|
{
|
String[] split = arrMember.split(",");
|
for(String str : split){
|
MjTeamMember mjTeamMember = new MjTeamMember();
|
mjTeamMember.setTeamId(teamId);
|
mjTeamMember.setUserId(str);
|
mjTeamMember.setStatus(0);
|
mjTeamMemberService.insertMjTeamMember(mjTeamMember);
|
}
|
return toAjax(true);
|
}
|
|
/**
|
* 人员删除,把状态更新为待删除
|
* @param id
|
* @return
|
*/
|
@PostMapping( "/updateStatus")
|
@ResponseBody
|
public Object updateStatus(String id)
|
{
|
MjTeamMember mjTeamMember = mjTeamMemberService.selectMjTeamMemberById(id);
|
if(mjTeamMember==null){
|
return toAjax(false);
|
}
|
// mjTeamMember.setStatus(2);
|
// //mjTeamMember.setDelFlag(1);
|
// mjTeamMemberService.updateMjTeamMember(mjTeamMember);
|
|
MjTeam mjTeam = iMjTeamService.selectMjTeamById(mjTeamMember.getTeamId());
|
mjTeam.setTeamNumber(mjTeam.getTeamNumber()-1);
|
mjTeam.setEquipmentUpdateStatus(1);
|
iMjTeamService.updateMjTeam(mjTeam);
|
|
mjTeamMemberService.deleteMjTeamMemberById(id);
|
|
MjHeadsUsers hu = new MjHeadsUsers();
|
hu.setAuthorizeType(0);//组授权
|
hu.setUserId(Long.valueOf(mjTeamMember.getUserId()));//用户id
|
List<MjHeadsUsers> mjHeadsUsers1 = iMjHeadsUsersService.selectMjHeadsUsersList(hu);
|
for(MjHeadsUsers mhu : mjHeadsUsers1){
|
iMjHeadsUsersService.deleteMjHeadsUsersById(mhu.getId());
|
quXiao(mhu);
|
}
|
return toAjax(true);
|
}
|
|
public void quXiao(MjHeadsUsers headsUsers){
|
Thread t = new Thread(new Runnable(){
|
public void run(){
|
MjFingerprintReadHead head = mjFingerprintReadHeadService.selectMjFingerprintReadHeadById(headsUsers.getHeadId());
|
if(StringUtils.isNotEmpty(head.getIpOrOther()) && StringUtils.isNotEmpty(head.getPort())) {
|
mjWorkUserPushService.removeFingerTmp(headsUsers.getUserId().toString(), head.getIpOrOther(), head.getPort());
|
}
|
}
|
});
|
}
|
|
public void addPush(MjHeadsUsers headsUsers){
|
Thread t = new Thread(new Runnable(){
|
public void run(){
|
MjFingerprintReadHead head = mjFingerprintReadHeadService.selectMjFingerprintReadHeadById(headsUsers.getHeadId());
|
List<TmpDataModel> tmpDataModels = fingerprintService.selectMjFingerprintListByUserId(headsUsers.getUserId());
|
String users = domainToModel(headsUsers, tmpDataModels);
|
|
int code = addTeamUsers(users,head);
|
if(code==0){
|
System.out.println("推送成功");
|
}else{
|
System.out.println("推送失败");
|
}
|
}
|
});
|
t.start();
|
}
|
|
//增加组用户
|
private Integer addTeamUsers(String value, MjFingerprintReadHead head) {
|
RestTemplate restTemplate = new RestTemplate();
|
HttpHeaders headers = new HttpHeaders();
|
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
|
JSONObject jsonObject = null;
|
|
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 {
|
ResponseEntity<String> response = restTemplate.postForEntity( UrlConstant.ZK_URL+"api/SDZ/ZktAddUserTmpByList", request , String.class );
|
jsonObject = JSONObject.parseObject(response.getBody());
|
System.out.println(response.getBody());
|
}catch (Exception e) {
|
e.printStackTrace();
|
return 1;
|
}
|
if(jsonObject != null) {
|
return (int)jsonObject.get("code");
|
}
|
return 1;
|
}
|
|
//转换为访问所需model
|
private String domainToModel(MjHeadsUsers headsUsers, List<TmpDataModel> mjFingerprintList) {
|
List<WorkUserModel> wums = new ArrayList<WorkUserModel>();
|
|
WorkUserModel workUserModel = new WorkUserModel();
|
workUserModel.setId(headsUsers.getUserId().toString().trim());
|
MjWorkUser workUser = workUserService.selectMjWorkUserById(headsUsers.getUserId());
|
workUserModel.setName(workUser.getUserName().trim());
|
workUserModel.setPass("");
|
workUserModel.setiPrivilege(0);
|
workUserModel.setFlag("a");
|
workUserModel.setTmpDatas(mjFingerprintList);
|
wums.add(workUserModel);
|
|
JSONArray jsonArray=new JSONArray(Collections.singletonList(wums));
|
String userDatas = jsonArray.toString().substring(1, jsonArray.toString().length()-1);
|
return userDatas;
|
}
|
}
|