package com.moral.api.service.impl; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.function.Predicate; import javax.servlet.http.HttpServletRequest; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fasterxml.jackson.datatype.jsr310.ser.YearSerializer; import com.moral.api.entity.ResponsibilityUnit; import com.moral.api.entity.SysArea; import com.moral.api.mapper.ResponsibilityUnitMapper; import com.moral.api.pojo.dto.responsibilityUnit.ResponsibilityUnitQuery; import com.moral.api.pojo.redisBean.AccountInfoDTO; import com.moral.api.service.ResponsibilityUnitService; import com.moral.api.service.SysAreaService; import com.moral.constant.Constants; import com.moral.util.TokenUtils; @Service public class ResponsibilityUnitServiceImpl extends ServiceImpl implements ResponsibilityUnitService { @Autowired private ResponsibilityUnitMapper responsibilityUnitMapper; @Autowired private SysAreaService sysAreaService; /** * 新增表单 * @param responsibilityUnit * @return */ @Override public Integer insert(ResponsibilityUnit responsibilityUnit) { HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); String token = request.getHeader("token"); AccountInfoDTO accountInfoDTO = (AccountInfoDTO) TokenUtils.getUserInfoByToken(token); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("unit_name",responsibilityUnit.getUnitName()); List units = responsibilityUnitMapper.selectList(wrapper); if (ObjectUtils.isEmpty(units)){ responsibilityUnit.setIsDel(Constants.NOT_DELETE); responsibilityUnit.setCreateTime(new Date()); responsibilityUnit.setIsInvalid(0); responsibilityUnit.setCreateId(accountInfoDTO.getAccount().getId()); responsibilityUnit.setCreateName(accountInfoDTO.getAccount().getUserName()); responsibilityUnit.setCreateTime(new Date()); responsibilityUnit.setUpdateId(accountInfoDTO.getAccount().getId()); responsibilityUnit.setUpdateName(accountInfoDTO.getAccount().getUserName()); responsibilityUnit.setUpdateTime(new Date()); responsibilityUnit.setValue(JSONArray.toJSONString(responsibilityUnit.getParentCodeList())); responsibilityUnitMapper.insert(responsibilityUnit); return 200; } return -1; } /** * 查询表单 * @param parameters * @return */ @Override public Map selectUnit(Map parameters) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("is_del",Constants.NOT_DELETE); // wrapper.eq("is_invalid",0); int page = Integer.parseInt(parameters.get("page").toString()); int size = Integer.parseInt(parameters.get("size").toString()); Object unitId = parameters.get("unitId"); // Object parentName1 = parameters.get("parentCode"); // Object areaName1 = parameters.get("areaCode"); //名称模糊查询 if (!ObjectUtils.isEmpty(parameters.get("name"))){ wrapper.like("unit_name",parameters.get("name").toString()); } /* //上级区域查询 if (!ObjectUtils.isEmpty(parentName1)){ wrapper.eq("parent_code",Integer.parseInt(parentName1.toString())); }*/ //所属区域查询 if (!ObjectUtils.isEmpty(unitId)){ // List list = Arrays.asList(unitId.toString().split(",")); wrapper.eq("unit_id",unitId.toString()); } Page pageList = new Page<>(page, size); Page responsibilityUnitPage = responsibilityUnitMapper.selectPage(pageList, wrapper); for (ResponsibilityUnit record : responsibilityUnitPage.getRecords()) { Integer areaCode = record.getAreaCode(); SysArea sysArea= sysAreaService.select(areaCode); Integer parentCode = record.getParentCode(); SysArea parentArea = sysAreaService.select(parentCode); if (ObjectUtils.isEmpty(sysArea) || ObjectUtils.isEmpty(parentArea)){ continue; } record.setAreaName(sysArea.getAreaName()); record.setParentName(parentArea.getAreaName()); record.setParentCodeList(JSONObject.parseObject(record.getValue(),List.class)); } Map result = new LinkedHashMap<>(); result.put("total", pageList.getTotal()); result.put("totalPage", pageList.getPages()); result.put("current", pageList.getCurrent()); result.put("pageSize", pageList.getSize()); result.put("item", responsibilityUnitPage.getRecords()); // responsibilityUnitPage.getOrders() return result; } /** * 修改表单 * @param responsibilityUnit * @return */ @Override public Integer updateUnit(ResponsibilityUnit responsibilityUnit) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("unit_name",responsibilityUnit.getUnitName()); wrapper.eq("area_code",responsibilityUnit.getAreaCode()); ResponsibilityUnit responsibilityUnit2 = responsibilityUnitMapper.selectOne(wrapper); if (ObjectUtils.isEmpty(responsibilityUnit2)){ AccountInfoDTO account = getAccount(); responsibilityUnit.setUpdateId(account.getAccount().getId()); responsibilityUnit.setUpdateName(account.getAccount().getUserName()); responsibilityUnit.setUpdateTime(new Date()); responsibilityUnit.setValue(JSONArray.toJSONString(responsibilityUnit.getParentCodeList())); // responsibilityUnit.setParentCodeList(JSONObject.parseObject(responsibilityUnit.getValue(),List.class)); responsibilityUnitMapper.updateById(responsibilityUnit); return 200; } return -1; } /** * 修改状态 * */ @Override public void updateState(Integer unitId) { ResponsibilityUnit responsibilityUnit = responsibilityUnitMapper.selectById(unitId); responsibilityUnit.setState(Constants.NOT_DELETE); AccountInfoDTO account = getAccount(); responsibilityUnit.setUpdateId(account.getAccount().getId()); responsibilityUnit.setUpdateName(account.getAccount().getUserName()); responsibilityUnit.setUpdateTime(new Date()); responsibilityUnitMapper.updateById(responsibilityUnit); } /** * 是否作废 * @param unitId * @param code */ @Override public void updateInvalid(Integer unitId, String code) { ResponsibilityUnit responsibilityUnit = responsibilityUnitMapper.selectById(unitId); responsibilityUnit.setIsInvalid(1); if (!ObjectUtils.isEmpty(code)){ responsibilityUnit.setInvalidReason(code); } AccountInfoDTO account = getAccount(); responsibilityUnit.setUpdateId(account.getAccount().getId()); responsibilityUnit.setUpdateName(account.getAccount().getUserName()); responsibilityUnit.setUpdateTime(new Date()); responsibilityUnitMapper.updateById(responsibilityUnit); } @Override public List unitQuery() { List responsibilityUnits = responsibilityUnitMapper.selectList(null); ArrayList sysAreas = new ArrayList<>(); for (ResponsibilityUnit responsibilityUnit : responsibilityUnits) { ResponsibilityUnitQuery responsibilityUnitQuery = new ResponsibilityUnitQuery(); BeanUtils.copyProperties(responsibilityUnit,responsibilityUnitQuery); sysAreas.add(responsibilityUnitQuery); } Map areaMap1 = new HashMap<>(); Map areaMap = new HashMap<>(); for (ResponsibilityUnitQuery responsibilityUnitQuery : sysAreas) { if (responsibilityUnitQuery.getUnitId().equals(38)){ areaMap1.put(responsibilityUnitQuery.getAreaCode(), responsibilityUnitQuery.getUnitId()); responsibilityUnitQuery.setUnitId(responsibilityUnitQuery.getAreaCode()); responsibilityUnitQuery.setUnitName("江苏省——盐城市"); } if (responsibilityUnitQuery.getUnitId().equals(1)){ areaMap1.put(responsibilityUnitQuery.getAreaCode(),responsibilityUnitQuery.getUnitId()); responsibilityUnitQuery.setUnitId(responsibilityUnitQuery.getAreaCode()); responsibilityUnitQuery.setUnitName("辽宁省——海城市"); } areaMap.put(responsibilityUnitQuery.getAreaCode(), responsibilityUnitQuery); responsibilityUnitQuery.setChildren(new ArrayList<>());//初始化children集合 } //遍历所有城市,判断是否有父城市,如果有则添加到父城市中。 for (int i = 0; i < sysAreas.size(); i++) { ResponsibilityUnitQuery responsibilityUnitQuery = sysAreas.get(i); Integer parentCode = responsibilityUnitQuery.getParentCode(); ResponsibilityUnitQuery parentArea = areaMap.get(parentCode); if (responsibilityUnitQuery.getAreaCode().equals(210381)|| responsibilityUnitQuery.getAreaCode().equals(320900)){ QueryWrapper wr = new QueryWrapper<>(); wr.eq("area_code",responsibilityUnitQuery.getAreaCode()); ResponsibilityUnit responsibilityUnit = responsibilityUnitMapper.selectOne(wr); Integer integer = areaMap1.get(responsibilityUnitQuery.getAreaCode()); ResponsibilityUnitQuery rsUnitQuery = new ResponsibilityUnitQuery(); rsUnitQuery.setUnitId(integer); rsUnitQuery.setParentCode(responsibilityUnitQuery.getParentCode()); if (responsibilityUnitQuery.getAreaCode().equals(210381)){ rsUnitQuery.setUnitName(responsibilityUnit.getUnitName()); }else { rsUnitQuery.setUnitName(responsibilityUnit.getUnitName()); } rsUnitQuery.setAreaCode(responsibilityUnitQuery.getAreaCode()); rsUnitQuery.setChildren(new ArrayList<>()); List children = responsibilityUnitQuery.getChildren(); children.add(rsUnitQuery); responsibilityUnitQuery.setChildren(children); } if (ObjectUtils.isEmpty(parentArea)){ continue; } List children = parentArea.getChildren(); children.add(responsibilityUnitQuery); sysAreas.remove(responsibilityUnitQuery); i--; } return sysAreas; } /** * 获取用户信息 * @return */ private AccountInfoDTO getAccount(){ HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); String token = request.getHeader("token"); AccountInfoDTO accountInfoDTO = (AccountInfoDTO) TokenUtils.getUserInfoByToken(token); return accountInfoDTO; } }