package platform.modules.government.service; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import org.apache.commons.lang3.StringEscapeUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import platform.common.Constant; import platform.common.base.model.DictionaryItem; import platform.common.base.service.DictionaryItemService; import platform.common.util.DateUtil; import platform.common.util.MathHepler; import platform.common.util.ShiroUtils; import platform.modules.build.entity.Company; import platform.modules.build.service.CompanyService; import platform.modules.company.service.*; import platform.modules.government.dto.*; import platform.modules.government.entity.ScreenBusinessData; import platform.modules.government.entity.ScreenCenterWin; import platform.modules.government.entity.ScreenServerData; import platform.modules.government.entity.User; import platform.modules.home.request.FindRequest; import platform.modules.home.response.FindResponseProject; import platform.modules.home.response.ListResponse; import platform.modules.sys.dao.ActivityDetailDao; import platform.modules.sys.entity.ActivityDetail; import platform.modules.sys.entity.Approval; import platform.modules.sys.entity.Department; import platform.modules.sys.service.ApprovalService; import platform.modules.sys.service.DepartmentService; import platform.modules.sys.web.ResponseMessage; import tk.mybatis.mapper.entity.Example; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Date; import java.util.Iterator; import java.util.List; @Service public class GovScreenService { @Autowired private CompanyService companyService; @Autowired private ProjectApplicationService projectApplicationService; @Autowired private ProjectFillingService projectFillingService; @Autowired private ProjectIntelligentService projectIntelligentService; @Autowired private ProjectMattersService projectMattersService; @Autowired private ProjectProvincesService projectProvincesService; @Autowired private ApprovalService approvalService; @Autowired private DepartmentService departmentService; @Autowired private ActivityDetailDao activityDetailDao; @Autowired private UserService userService; @Autowired private ScreenCenterWinService screenCenterWinService; @Autowired private ScreenBusinessDataService screenBusinessDataService; @Autowired private ScreenServerDataService screenServerDataService; @Autowired ProjectDeclarationService projectDeclarationService; @Autowired DictionaryItemService dictionaryItemService; public List getStreetCompanys() { // List companysList = new ArrayList<>(); // if (isCustomize()){ // List screenBusinessDataList = findScreenBusinessDate(3); // if (screenBusinessDataList != null && screenBusinessDataList.size() > 0){ // for (ScreenBusinessData businessData : screenBusinessDataList){ // StreetCompanys streetCompanys = new StreetCompanys(); // streetCompanys.setCompanyNum(businessData.getCompanyNum().toString()); // streetCompanys.setStreetName(businessData.getStreetName()); // companysList.add(streetCompanys); // } // } // } // else { // companysList = companyService.getStreetCompanys(); // } return companyService.getStreetCompanys(); } public Integer getTotalCompanys() { List companyList = companyService.getTotalCompanys(); return companyList.size(); } public GovScreenDto getBusiness() { GovScreenDto govScreenDto = new GovScreenDto(); if (isCustomize()) { ScreenServerData screenServerData = findScreenServerDate(); govScreenDto.setProjectNum(screenServerData.getProjectNum()); govScreenDto.setFillingNum(screenServerData.getFillingNum()); govScreenDto.setInteligentNum(screenServerData.getInteligentNum()); govScreenDto.setMattersNum(screenServerData.getMattersNum()); govScreenDto.setProvincesNum(screenServerData.getProvincesNum()); } else { govScreenDto.setProjectNum(projectApplicationService.getProjectNum()); govScreenDto.setFillingNum(projectFillingService.getFillingNum()); govScreenDto.setInteligentNum(projectIntelligentService.getIntelligentNum()); govScreenDto.setMattersNum(projectMattersService.getMattersNum()); govScreenDto.setProvincesNum(projectProvincesService.getProvincesNum()); } return govScreenDto; } public GovScreenDto getCenterBusiness(String department) { GovScreenDto govScreenDto = new GovScreenDto(); if (isCustomize()) { ScreenServerData screenServerData = findScreenServerDate(); govScreenDto.setProjectNum(screenServerData.getProjectServiceNum()); govScreenDto.setMattersNum(screenServerData.getMattersServiceNum()); govScreenDto.setFillingNum(screenServerData.getFillingServiceNum()); govScreenDto.setProvincesNum(screenServerData.getProvincesServiceNum()); } else { Department dep = departmentService.findByDepartmentName(department); govScreenDto.setProjectNum(projectApplicationService.getprojectDecNum(dep.getId()) + projectIntelligentService.getIntelligentDecNum(dep.getId())); govScreenDto.setFillingNum(projectMattersService.getProjectServiceTypeNum(2)); govScreenDto.setMattersNum(projectMattersService.getProjectServiceTypeNum(3)); govScreenDto.setProvincesNum(projectMattersService.getProjectServiceTypeNum(1)); } return govScreenDto; } public GovScreenDto getBusinessVolume(BusinessSearchDto businessSearchDto) { GovScreenDto govScreenDto = new GovScreenDto(); // int businessVolume = approvalService.getBusinessVolume(businessSearchDto); int businessVolume = approvalService.getBusinessAcceptNum(businessSearchDto); ScreenServerData screenServerData = findScreenServerDate(); //受理业务量 if (businessSearchDto.getAccept()) { if (isCustomize()) { if (businessSearchDto.getWeek()) { govScreenDto.setBusinessVolume(screenServerData.getWeekAccept()); } if (businessSearchDto.getMonth()) { govScreenDto.setBusinessVolume(screenServerData.getMonthAccept()); } } else { govScreenDto.setBusinessVolume(businessVolume); } } //办理业务量 if (businessSearchDto.getHandle()) { // if (isCustomize()){ // if (businessSearchDto.getWeek()){ // govScreenDto.setBusinessVolume(screenServerData.getWeekAccept()); // } // if (businessSearchDto.getMonth()){ // govScreenDto.setBusinessVolume(screenServerData.getMonthAccept()); // } // } // else { businessSearchDto.setStatus("1"); int undoVolume = approvalService.getBusinessVolume(businessSearchDto); govScreenDto.setBusinessVolume(businessVolume - undoVolume); // } } return govScreenDto; } public GovScreenDto getWeekBusinessDistributed() { List businessList = new ArrayList<>(); GovScreenDto govScreenDto = new GovScreenDto(); BusinessSearchDto businessSearchDto = new BusinessSearchDto(); businessSearchDto.setMonth(true); businessSearchDto.setDepartment(Constant.DepartmentName.CENTER); //自定义数据 if (isCustomize()) { List screenBusinessDataList = findScreenBusinessDate(1); if (screenBusinessDataList != null && screenBusinessDataList.size() > 0) { for (ScreenBusinessData businessData : screenBusinessDataList) { CenterBusiness centerBusiness = new CenterBusiness(); centerBusiness.setType(businessData.getType()); centerBusiness.setBusinessNum(businessData.getBusinessNum()); businessList.add(centerBusiness); } } } else { int projectAcceptVnme = projectApplicationService.getProjectAcceptVolume(businessSearchDto).size(); businessList.add(new CenterBusiness("区资金扶持", projectAcceptVnme)); int fillingAcceptVolume = projectFillingService.getFillingacceptVolume(businessSearchDto).size(); businessList.add(new CenterBusiness("报表填报", fillingAcceptVolume)); int mattersAcceptVolume = projectMattersService.getMattersAcceptVolume(businessSearchDto).size(); businessList.add(new CenterBusiness("服务事项", mattersAcceptVolume)); int intelligentAcceptVolume = projectIntelligentService.getIntelligentAcceptVolume(businessSearchDto).size(); businessList.add(new CenterBusiness("区智能制造", intelligentAcceptVolume)); int provincesAcceptVolume = projectProvincesService.getProvincesAcceptVolume(businessSearchDto).size(); businessList.add(new CenterBusiness("省市申报", provincesAcceptVolume)); //中心受理业务数 int businessVolume = approvalService.getBusinessVolume(businessSearchDto); //中心窗口未处理业务 businessSearchDto.setStatus("1"); int unprocessed = approvalService.getBusinessVolume(businessSearchDto); govScreenDto.setCenterDoneNum(businessVolume - unprocessed); businessList.add(new CenterBusiness("业务已办理", businessVolume - unprocessed)); govScreenDto.setCenterUndoNum(unprocessed); businessList.add(new CenterBusiness("业务未办理", unprocessed)); } govScreenDto.setCenterBusinesses(businessList); return govScreenDto; } public List getHotActivity() { return activityDetailDao.getHotActivity(); } public List getBusinessHandleRate(BusinessSearchDto businessSearchDto) { businessSearchDto.setDepartment(Constant.DepartmentName.CENTER); List businessList = approvalService.getCenterBusiness(businessSearchDto); //未处理业务量 businessSearchDto.setStatus("1"); List undoList = approvalService.getCenterBusiness(businessSearchDto); if (businessList != null && businessList.size() > 0) { for (CenterBusiness business : businessList) { if (business.getType().equals(Constant.DictionaryType.PROJECT_APPLICATION)) { business.setType("区资金扶持"); } if (business.getType().equals(Constant.DictionaryType.PROJECT_INTELLIGENT)) { business.setType("区智能制造"); } if (business.getType().equals(Constant.DictionaryType.PROJECT_FILLING)) { business.setType("报表填报"); } if (undoList != null && undoList.size() > 0) { for (CenterBusiness undoBusiness : undoList) { if (business.getType().equals(undoBusiness.getType())) { int handleNum = business.getBusinessNum() - undoBusiness.getBusinessNum(); business.setHandleNum(handleNum); business.setUndoNum(undoBusiness.getBusinessNum()); business.setRate(MathHepler.div(business.getBusinessNum(), handleNum, 2) * 100); } } } else { business.setHandleNum(business.getBusinessNum()); business.setUndoNum(0); business.setRate(100d); } } } return businessList; } public List getWindowBusiness(BusinessSearchDto businessSearchDto) { List centerWindowList = new ArrayList<>(); Department department = departmentService.findByDepartmentName(Constant.DepartmentName.CENTER); if (department != null) { //自定义数据 if (isCustomize()) { List screenCenterWinList = getScreenCenterWin(); if (screenCenterWinList != null && screenCenterWinList.size() > 0) { for (ScreenCenterWin screenCenterWin : screenCenterWinList) { CenterWindow centerWindow = new CenterWindow(); centerWindow.setWindowName(screenCenterWin.getWindowName()); centerWindow.setProjectNum(screenCenterWin.getProjectNum()); centerWindow.setFillingNum(screenCenterWin.getFillingNum()); centerWindow.setInteligentNum(screenCenterWin.getInteligentNum()); centerWindow.setProvincesNum(screenCenterWin.getProvincesNum()); centerWindow.setMattersNum(screenCenterWin.getMattersNum()); centerWindowList.add(centerWindow); } } } else { List departmentList = departmentService.findByPid(department.getId()); if (departmentList != null && departmentList.size() > 0) { for (Department dep : departmentList) { List userList = userService.getUserByDepartment(dep.getId()); if (userList != null && userList.size() > 0) { int userId = userList.get(0).getId(); businessSearchDto.setUserId(userId); } CenterWindow centerWindow = approvalService.getWindowBusiness(businessSearchDto); centerWindow.setWindowName(dep.getName()); centerWindowList.add(centerWindow); } } } } return centerWindowList; } public List getMonthStatistical(BusinessSearchDto businessSearchDto) { List centerWindowList = new ArrayList<>(); if (businessSearchDto.getMonth()) { CenterWindow weekOne = approvalService.getMonthStatistical(businessSearchDto, 0); weekOne.setXname("第四周"); CenterWindow weekTwo = approvalService.getMonthStatistical(businessSearchDto, 1); weekTwo.setXname("第三周"); CenterWindow weekThree = approvalService.getMonthStatistical(businessSearchDto, 2); weekThree.setXname("第二周"); CenterWindow weekFour = approvalService.getMonthStatistical(businessSearchDto, 3); weekFour.setXname("第一周"); centerWindowList.add(weekOne); centerWindowList.add(weekTwo); centerWindowList.add(weekThree); centerWindowList.add(weekFour); } if (businessSearchDto.getYear()) { CenterWindow quarterOne = approvalService.getMonthStatistical(businessSearchDto, 0); quarterOne.setXname("四季度"); CenterWindow quarterTwo = approvalService.getMonthStatistical(businessSearchDto, 1); quarterTwo.setXname("三季度"); CenterWindow quarterThree = approvalService.getMonthStatistical(businessSearchDto, 2); quarterThree.setXname("二季度"); CenterWindow quarterFour = approvalService.getMonthStatistical(businessSearchDto, 3); quarterFour.setXname("一季度"); centerWindowList.add(quarterOne); centerWindowList.add(quarterTwo); centerWindowList.add(quarterThree); centerWindowList.add(quarterFour); } return centerWindowList; } public List getNear3MonthStatistical() { List centerWindowList = new ArrayList<>(); if (isCustomize()) { List screenBusinessDataList = findScreenBusinessDate(2); if (screenBusinessDataList != null && screenBusinessDataList.size() > 0) { for (ScreenBusinessData businessData : screenBusinessDataList) { CenterWindow centerWindow = new CenterWindow(); centerWindow.setXname(businessData.getXname()); centerWindow.setTotalBusinessNum(businessData.getTotalBusinessNum()); centerWindowList.add(centerWindow); } } } else { //获取当前月份 for (int i = 2; i >= 0; i--) { LocalDate today = LocalDate.now(); today = today.minusMonths(i); DateTimeFormatter formatters = DateTimeFormatter.ofPattern("M"); List baseEntityList = approvalService.getNear3MonthStatistical(i); CenterWindow centerWindow = new CenterWindow(); centerWindow.setTotalBusinessNum(baseEntityList.size()); centerWindowList.add(centerWindow); centerWindow.setXname(formatters.format(today) + "月份"); } } return centerWindowList; } public static void main(String[] args) { for (int i = 0; i <= 2; i++) { System.out.println(i); LocalDate today = LocalDate.now(); DateTimeFormatter formatters = DateTimeFormatter.ofPattern("M"); today = today.minusMonths(i); System.out.println(formatters.format(today)); } } public void saveScreenCenterWin(ScreenCenterWin screenCenterWin) { screenCenterWin.setCreate_time(DateUtil.getTimeString(new Date())); screenCenterWin.setCreate_by(ShiroUtils.getUserId()); screenCenterWin.setCreate_name(ShiroUtils.getUserName()); screenCenterWinService.saveScreenCenterWin(screenCenterWin); } public List getScreenCenterWin() { Example example = new Example(ScreenCenterWin.class); Example.Criteria criteria = example.createCriteria(); criteria.andEqualTo("del_flag", 0); return screenCenterWinService.selectByExample(example); } /** * 保存自定义数据 * * @param serverData * @param businessArr * @param centerArr */ public void saveDataMange(String serverData, String businessArr, String centerArr) { //将" 转义回双引号("") String data = StringEscapeUtils.unescapeHtml4(centerArr); //本月窗口业务量 //遍历JSONArray对象 JSONArray array = JSONArray.parseArray(data); for (Iterator iterator = array.iterator(); iterator.hasNext(); ) { JSONObject jsonObject = (JSONObject) iterator.next(); //JSONObject转换为JavaBean对象 ScreenCenterWin screenCenterWin = JSON.parseObject(String.valueOf(jsonObject), ScreenCenterWin.class); if (screenCenterWin.getId() != null) { screenCenterWinService.updateSelective(screenCenterWin); } else { screenCenterWinService.insertAndGetId(screenCenterWin); } } //街道企业、近三个月业务数量、本月各类型业务占比 String business = StringEscapeUtils.unescapeHtml4(businessArr); JSONArray businessArray = JSONArray.parseArray(business); for (Iterator iterator = businessArray.iterator(); iterator.hasNext(); ) { JSONObject jsonObject = (JSONObject) iterator.next(); //JSONObject转换为JavaBean对象 ScreenBusinessData screenBusinessData = JSON.parseObject(String.valueOf(jsonObject), ScreenBusinessData.class); if (screenBusinessData.getId() != null) { screenBusinessDataService.updateSelective(screenBusinessData); } else { screenBusinessDataService.insertAndGetId(screenBusinessData); } } //中心窗口服务事项、中心窗口服务业务总量、总企业数 String server = StringEscapeUtils.unescapeHtml4(serverData); ScreenServerData screenServerData = JSON.parseObject(server, ScreenServerData.class); if (screenServerData.getId() != null) { screenServerDataService.updateSelective(screenServerData); } else { screenServerDataService.insertAndGetId(screenServerData); } } public ScreenServerData findScreenServerDate() { Example example = new Example(ScreenServerData.class); Example.Criteria criteria = example.createCriteria(); criteria.andEqualTo("del_flag", 0); List screenServerDataList = screenServerDataService.selectByExample(example); if (screenServerDataList != null && screenServerDataList.size() > 0) { return screenServerDataList.get(0); } return new ScreenServerData(); } public List findScreenBusinessDate(Integer type) { Example example = new Example(ScreenBusinessData.class); Example.Criteria criteria = example.createCriteria(); criteria.andEqualTo("del_flag", 0); if (type != null) { criteria.andEqualTo("tableType", type); } List screenBusinessDataList = screenBusinessDataService.selectByExample(example); if (screenBusinessDataList != null && screenBusinessDataList.size() > 0) { return screenBusinessDataList; } return null; } /** * 是否使用自定义数据 * * @return */ public boolean isCustomize() { Boolean isCustomize = false; ScreenServerData screenServerData = findScreenServerDate(); if (screenServerData.getCustomize()) { isCustomize = true; } return isCustomize; } public void saveCustomize(Integer id, Integer customize) { ScreenServerData screenServerData = new ScreenServerData(); if (id != null) { screenServerData.setId(id); if (customize == 1) { screenServerData.setCustomize(true); } else { screenServerData.setCustomize(false); } screenServerDataService.updateSelective(screenServerData); } else { if (customize == 1) { screenServerData.setCustomize(true); } else { screenServerData.setCustomize(false); } screenServerDataService.insertAndGetId(screenServerData); } } public Object findProject(FindRequest request) { FindResponseProject ret = projectDeclarationService.findProejctsOnHome(request); List projectSourceList = dictionaryItemService.findListByTypeName(Constant.DictionaryType.PROJECT_SOURCE); List projectStatusList = dictionaryItemService.findListByTypeName(Constant.DictionaryType.PROJECT_STATUS); ret.setProjectSourceList(projectSourceList); ret.setProjectStatusList(projectStatusList); return ret; } }