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/area") public class MjTeamAreaController extends BaseController { private String prefix = "station/area"; @Autowired private IMjTeamAreaService mjTeamAreaService; @Autowired private IMjAreaManagementService iMjAreaManagementService; @Autowired private IMjTeamService iMjTeamService; @Autowired private IMjFingerprintReadHeadService iMjFingerprintReadHeadService; @Autowired private IMjHeadsUsersService iMjHeadsUsersService; @Autowired private IMjTeamMemberService iMjTeamMemberService; @Autowired private IMjWorkUserPushService mjWorkUserPushService; @Autowired private IMjWorkUserService workUserService; @Autowired private IMjFingerprintService fingerprintService; @RequiresPermissions("station:area:view") @GetMapping() public String area() { return prefix + "/area"; } /** * 查询组区域关联列表 */ @RequiresPermissions("station:area:list") @PostMapping("/list") @ResponseBody public TableDataInfo list(MjTeamArea mjTeamArea) { startPage(); List list = mjTeamAreaService.selectMjTeamAreaList(mjTeamArea); return getDataTable(list); } /** * 导出组区域关联列表 */ @RequiresPermissions("station:area:export") @Log(title = "组区域关联", businessType = BusinessType.EXPORT) @PostMapping("/export") @ResponseBody public AjaxResult export(MjTeamArea mjTeamArea) { List list = mjTeamAreaService.selectMjTeamAreaList(mjTeamArea); ExcelUtil util = new ExcelUtil(MjTeamArea.class); return util.exportExcel(list, "area"); } /** * 新增组区域关联 */ @GetMapping("/add") public String add() { return prefix + "/add"; } /** * 新增保存组区域关联 */ @RequiresPermissions("station:area:add") @Log(title = "组区域关联", businessType = BusinessType.INSERT) @PostMapping("/add") @ResponseBody public synchronized AjaxResult addSave(MjTeamArea mjTeamArea) { List mjTeamAreas = mjTeamAreaService.selectMjTeamAreaList(mjTeamArea); if(mjTeamAreas.size()>0){ // if(mjTeamAreas.get(0).getStatus()==2){ // MjTeamArea m2 = mjTeamAreas.get(0); // m2.setStatus(0); // return toAjax(mjTeamAreaService.updateMjTeamArea(m2)); // } return error("不可重复添加"); } mjTeamArea.setUpdateTime(DateUtils.getNowDate()); mjTeamArea.setId(IdUtils.fastSimpleUUID()); MjAreaManagement mjAreaManagement = iMjAreaManagementService.selectMjAreaManagementById(mjTeamArea.getAreaId()); mjTeamArea.setAreaName(mjAreaManagement.getAreaName()); updateNum(mjTeamArea.getTeamId()); MjTeam team = iMjTeamService.selectMjTeamById(mjTeamArea.getTeamId()); MjTeamMember teamMember = new MjTeamMember(); teamMember.setTeamId(team.getId()); teamMember.setStatus(0); teamMember.setDelFlag(0); List mjTeamMembers = iMjTeamMemberService.selectMjTeamMemberList(teamMember); for(MjTeamMember mtm:mjTeamMembers) { MjFingerprintReadHead fingerprintReadHead = new MjFingerprintReadHead(); fingerprintReadHead.setAreaId(mjTeamArea.getAreaId()); List hs = iMjFingerprintReadHeadService.selectMjFingerprintReadHeadList(fingerprintReadHead); for (MjFingerprintReadHead rh : hs) { MjHeadsUsers mjHeadsUsers = new MjHeadsUsers(); mjHeadsUsers.setUserId(Long.valueOf(mtm.getUserId())); mjHeadsUsers.setAuthorizeName(team.getTeamName()); mjHeadsUsers.setAuthorizeResult(0);//未授权 mjHeadsUsers.setAuthorizeType(0);//组授权 mjHeadsUsers.setAuthorizeStatus(0);//增加授权 mjHeadsUsers.setHeadId(rh.getId());//读头id mjHeadsUsers.setHeadType(rh.getNewOldStatus()); mjHeadsUsers.setMainUser(1); mjHeadsUsers.setOrderId(team.getId()); iMjHeadsUsersService.insertMjHeadsUsers(mjHeadsUsers); if(rh.getNewOldStatus()==1){ addPush(mjHeadsUsers); } } } return toAjax(mjTeamAreaService.insertMjTeamArea(mjTeamArea)); } //更新组人数 public void updateNum(String teamId){ // MjTeamArea mjTeamMember2 = new MjTeamArea(); // mjTeamMember2.setTeamId(teamId); // List mjTeamMembers2 = mjTeamAreaService.selectMjTeamAreaList(mjTeamMember2); MjTeam mjTeam = iMjTeamService.selectMjTeamById(teamId); mjTeam.setAreaNumber(mjTeam.getAreaNumber()+1); mjTeam.setEquipmentUpdateStatus(1); iMjTeamService.updateMjTeam(mjTeam); } /** * 修改组区域关联 */ @GetMapping("/edit/{id}") public String edit(@PathVariable("id") String id, ModelMap mmap) { MjTeamArea mjTeamArea = mjTeamAreaService.selectMjTeamAreaById(id); mmap.put("mjTeamArea", mjTeamArea); return prefix + "/edit"; } /** * 修改保存组区域关联 */ @RequiresPermissions("station:area:edit") @Log(title = "组区域关联", businessType = BusinessType.UPDATE) @PostMapping("/edit") @ResponseBody public AjaxResult editSave(MjTeamArea mjTeamArea) { MjAreaManagement mjAreaManagement = iMjAreaManagementService.selectMjAreaManagementById(mjTeamArea.getAreaId()); mjTeamArea.setAreaName(mjAreaManagement.getAreaName()); return toAjax(mjTeamAreaService.updateMjTeamArea(mjTeamArea)); } /** * 删除组区域关联 */ @RequiresPermissions("station:area:remove") @Log(title = "组区域关联", businessType = BusinessType.DELETE) @PostMapping( "/remove") @ResponseBody public AjaxResult remove(String ids) { String[] split = ids.split(","); MjTeamArea mjTeamArea = mjTeamAreaService.selectMjTeamAreaById(split[0]); MjTeam mjTeam = iMjTeamService.selectMjTeamById(mjTeamArea.getTeamId()); mjTeam.setAreaNumber(mjTeam.getAreaNumber()-split.length); iMjTeamService.updateMjTeam(mjTeam); //updateNum(mjTeamMember.getTeamId()); int i = mjTeamAreaService.deleteMjTeamAreaByIds(ids); return toAjax(i); } /** * 根据teamId获取组区域 * @param teamId * @return */ @PostMapping( "/findByTeamId") @ResponseBody public Object findByTeamId(String teamId) { MjTeamArea mjTeamArea = new MjTeamArea(); mjTeamArea.setTeamId(teamId); List mjTeamMembers = mjTeamAreaService.selectMjTeamAreaList(mjTeamArea); 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){ MjTeamArea mjTeamArea = new MjTeamArea(); mjTeamArea.setTeamId(teamId); mjTeamArea.setAreaId(str); mjTeamArea.setStatus(0); mjTeamAreaService.insertMjTeamArea(mjTeamArea); } return toAjax(true); } /** * 区域删除,把状态更新为待删除 * @param id * @return */ @PostMapping( "/updateStatus") @ResponseBody public Object updateStatus(String id) { MjTeamArea mjTeamArea = mjTeamAreaService.selectMjTeamAreaById(id); if(mjTeamArea==null){ return toAjax(false); } // mjTeamArea.setStatus(2); // mjTeamArea.setDelFlag(1); // mjTeamAreaService.updateMjTeamArea(mjTeamArea); MjTeam mjTeam = iMjTeamService.selectMjTeamById(mjTeamArea.getTeamId()); mjTeam.setAreaNumber(mjTeam.getAreaNumber()-1); mjTeam.setEquipmentUpdateStatus(1); iMjTeamService.updateMjTeam(mjTeam); mjTeamAreaService.deleteMjTeamAreaById(id); MjFingerprintReadHead fingerprintReadHead = new MjFingerprintReadHead(); fingerprintReadHead.setAreaId(mjTeamArea.getAreaId()); List hs = iMjFingerprintReadHeadService.selectMjFingerprintReadHeadList(fingerprintReadHead); for(MjFingerprintReadHead rh:hs) { MjHeadsUsers hu = new MjHeadsUsers(); hu.setAuthorizeType(0);//组授权 hu.setHeadId(rh.getId());//读头id List mjHeadsUsers1 = iMjHeadsUsersService.selectMjHeadsUsersList(hu); for(MjHeadsUsers mhu : mjHeadsUsers1){ iMjHeadsUsersService.deleteMjHeadsUsersById(mhu.getId()); quXiao(mhu); } } return toAjax(true); } @PostMapping("/add2") @ResponseBody public AjaxResult addSave2(MjTeamArea mjTeamArea) { MjAreaManagement areaManagement = new MjAreaManagement(); areaManagement.setAreaParentId(mjTeamArea.getAreaId()); List mjAreaManagements = iMjAreaManagementService.selectMjAreaManagementList(areaManagement); for(MjAreaManagement m:mjAreaManagements){ mjTeamArea.setAreaId(m.getId()); addSave(mjTeamArea); } addSave(mjTeamArea); return toAjax(true); } // @PostMapping("/add2") // @ResponseBody // public AjaxResult addSave2(MjTeamArea mjTeamArea) // { // // MjAreaManagement areaManagement = new MjAreaManagement(); // areaManagement.setAreaParentId(mjTeamArea.getAreaId()); // List mjAreaManagements = iMjAreaManagementService.selectMjAreaManagementList(areaManagement); // for(MjAreaManagement m:mjAreaManagements){ // MjTeamArea mjTeamArea2 = new MjTeamArea(); // mjTeamArea2.setAreaId(m.getId()); // mjTeamArea2.setTeamId(mjTeamArea.getTeamId()); // mjTeamArea2.setAreaName(m.getAreaName()); // List mjTeamAreas2 = mjTeamAreaService.selectMjTeamAreaList(mjTeamArea2); // if(mjTeamAreas2.size()>0){ // if(mjTeamAreas2.get(0).getStatus()==2){ // MjTeamArea m2 = mjTeamAreas2.get(0); // m2.setStatus(0); // return toAjax(mjTeamAreaService.updateMjTeamArea(m2)); // } // //return error("不可重复添加"); // continue; // } // mjTeamArea2.setUpdateTime(DateUtils.getNowDate()); // mjTeamArea2.setId(IdUtils.fastSimpleUUID()); // // // updateNum(mjTeamArea2.getTeamId()); // mjTeamAreaService.insertMjTeamArea(mjTeamArea2); // // MjTeam team = iMjTeamService.selectMjTeamById(mjTeamArea.getTeamId()); // MjTeamMember teamMember = new MjTeamMember(); // teamMember.setTeamId(team.getId()); // teamMember.setStatus(0); // teamMember.setDelFlag(0); // List mjTeamMembers = iMjTeamMemberService.selectMjTeamMemberList(teamMember); // for(MjTeamMember mtm:mjTeamMembers) { // MjFingerprintReadHead fingerprintReadHead = new MjFingerprintReadHead(); // fingerprintReadHead.setAreaId(mjTeamArea.getAreaId()); // List hs = iMjFingerprintReadHeadService.selectMjFingerprintReadHeadList(fingerprintReadHead); // for (MjFingerprintReadHead rh : hs) { // MjHeadsUsers mjHeadsUsers = new MjHeadsUsers(); // mjHeadsUsers.setUserId(Long.valueOf(mtm.getUserId())); // mjHeadsUsers.setAuthorizeName(team.getTeamName()); // mjHeadsUsers.setAuthorizeResult(0);//未授权 // mjHeadsUsers.setAuthorizeType(0);//组授权 // mjHeadsUsers.setAuthorizeStatus(0);//增加授权 // mjHeadsUsers.setHeadId(rh.getId());//读头id // mjHeadsUsers.setHeadType(rh.getNewOldStatus()); // mjHeadsUsers.setMainUser(1); // mjHeadsUsers.setOrderId(team.getId()); // iMjHeadsUsersService.insertMjHeadsUsers(mjHeadsUsers); // addPush(mjHeadsUsers); // } // } // } // // List mjTeamAreas = mjTeamAreaService.selectMjTeamAreaList(mjTeamArea); // if(mjTeamAreas.size()>0){ // if(mjTeamAreas.get(0).getStatus()==2){ // mjTeamArea.setStatus(0); // return toAjax(mjTeamAreaService.updateMjTeamArea(mjTeamArea)); // } // return error("不可重复添加"); // } // mjTeamArea.setUpdateTime(DateUtils.getNowDate()); // mjTeamArea.setId(IdUtils.fastSimpleUUID()); // MjAreaManagement mjAreaManagement = iMjAreaManagementService.selectMjAreaManagementById(mjTeamArea.getAreaId()); // mjTeamArea.setAreaName(mjAreaManagement.getAreaName()); // // updateNum(mjTeamArea.getTeamId()); // mjTeamAreaService.insertMjTeamArea(mjTeamArea); // // MjTeam team = iMjTeamService.selectMjTeamById(mjTeamArea.getTeamId()); // MjTeamMember teamMember = new MjTeamMember(); // teamMember.setTeamId(team.getId()); // teamMember.setStatus(0); // teamMember.setDelFlag(0); // List mjTeamMembers = iMjTeamMemberService.selectMjTeamMemberList(teamMember); // for(MjTeamMember mtm:mjTeamMembers) { // MjFingerprintReadHead fingerprintReadHead = new MjFingerprintReadHead(); // fingerprintReadHead.setAreaId(mjTeamArea.getAreaId()); // List hs = iMjFingerprintReadHeadService.selectMjFingerprintReadHeadList(fingerprintReadHead); // for (MjFingerprintReadHead rh : hs) { // MjHeadsUsers mjHeadsUsers = new MjHeadsUsers(); // mjHeadsUsers.setUserId(Long.valueOf(mtm.getUserId())); // mjHeadsUsers.setAuthorizeName(team.getTeamName()); // mjHeadsUsers.setAuthorizeResult(0);//未授权 // mjHeadsUsers.setAuthorizeType(0);//组授权 // mjHeadsUsers.setAuthorizeStatus(0);//增加授权 // mjHeadsUsers.setHeadId(rh.getId());//读头id // mjHeadsUsers.setHeadType(rh.getNewOldStatus()); // mjHeadsUsers.setMainUser(1); // mjHeadsUsers.setOrderId(team.getId()); // iMjHeadsUsersService.insertMjHeadsUsers(mjHeadsUsers); // if(rh.getNewOldStatus()==1){ // addPush(mjHeadsUsers); // } // } // } // return toAjax(true); // } public void quXiao(MjHeadsUsers headsUsers){ Thread t = new Thread(new Runnable(){ public void run(){ MjFingerprintReadHead head = iMjFingerprintReadHeadService.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 = iMjFingerprintReadHeadService.selectMjFingerprintReadHeadById(headsUsers.getHeadId()); List 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 map= new LinkedMultiValueMap<>(); map.add("ip", head.getIpOrOther()); map.add("port", head.getPort()); map.add("userDatas", value); HttpEntity> request = new HttpEntity<>(map, headers); try { ResponseEntity 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 mjFingerprintList) { List wums = new ArrayList(); 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; } }