From 8d4928ed97e7c3fd7385a055032e56b5948ea4c5 Mon Sep 17 00:00:00 2001 From: yulin <240160934@qq.com> Date: Fri, 1 Mar 2024 14:38:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=8E=A5=E5=8F=A3=20?= =?UTF-8?q?=E5=8C=97=E4=BA=AC=E7=BB=9F=E8=AE=A1=E8=B0=83=E7=94=A8=20?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=A1=AB=E6=8A=A5=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../smtweb/biz/mztb/web/MztbStartedListener.java | 2 + .../biz/mztb/web/base/noLogin/MztbNoLogin.java | 13 ++ .../biz/mztb/web/controller/MztbController.java | 248 +++++++++++++++++++++ .../mztb/web/widgetManage/TaskMonthHandler.java | 10 +- 4 files changed, 267 insertions(+), 6 deletions(-) create mode 100644 mztb/src/main/java/cc/smtweb/biz/mztb/web/base/noLogin/MztbNoLogin.java create mode 100644 mztb/src/main/java/cc/smtweb/biz/mztb/web/controller/MztbController.java diff --git a/mztb/src/main/java/cc/smtweb/biz/mztb/web/MztbStartedListener.java b/mztb/src/main/java/cc/smtweb/biz/mztb/web/MztbStartedListener.java index 9a8e667..4e0c0df 100644 --- a/mztb/src/main/java/cc/smtweb/biz/mztb/web/MztbStartedListener.java +++ b/mztb/src/main/java/cc/smtweb/biz/mztb/web/MztbStartedListener.java @@ -1,5 +1,6 @@ package cc.smtweb.biz.mztb.web; +import cc.smtweb.biz.mztb.web.base.noLogin.MztbNoLogin; import cc.smtweb.framework.core.annotation.SwStartListener; import cc.smtweb.framework.core.common.SwConsts; import cc.smtweb.framework.core.mvc.controller.IStartListener; @@ -25,6 +26,7 @@ public class MztbStartedListener implements IStartListener { SwConsts.SysParam.RUN_PROJECTS = "bpm,mztb"; SwConsts.SysParam.SYS_DEBUG = false; SwConsts.SysParam.ENABLE_TRANSPORT_ENCRYPT =false; + MztbNoLogin.init(); } diff --git a/mztb/src/main/java/cc/smtweb/biz/mztb/web/base/noLogin/MztbNoLogin.java b/mztb/src/main/java/cc/smtweb/biz/mztb/web/base/noLogin/MztbNoLogin.java new file mode 100644 index 0000000..45b25f1 --- /dev/null +++ b/mztb/src/main/java/cc/smtweb/biz/mztb/web/base/noLogin/MztbNoLogin.java @@ -0,0 +1,13 @@ +package cc.smtweb.biz.mztb.web.base.noLogin; + +import cc.smtweb.framework.core.session.SessionUtil; + +public class MztbNoLogin { + /** + * 免登录接口注册 + */ + public static void init() { + SessionUtil.addNoLoginUri("/mztb/push"); + SessionUtil.addNoLoginUri("/mztb/pull"); + } +} diff --git a/mztb/src/main/java/cc/smtweb/biz/mztb/web/controller/MztbController.java b/mztb/src/main/java/cc/smtweb/biz/mztb/web/controller/MztbController.java new file mode 100644 index 0000000..0b59652 --- /dev/null +++ b/mztb/src/main/java/cc/smtweb/biz/mztb/web/controller/MztbController.java @@ -0,0 +1,248 @@ +package cc.smtweb.biz.mztb.web.controller; + +import cc.smtweb.biz.mztb.web.base.*; +import cc.smtweb.biz.mztb.web.tool.UtilPub; +import cc.smtweb.framework.core.common.R; +import cc.smtweb.framework.core.common.SwMap; +import cc.smtweb.framework.core.db.DbEngine; +import cc.smtweb.framework.core.db.EntityHelper; +import cc.smtweb.framework.core.util.DateUtil; +import cc.smtweb.framework.core.util.RandomUtil; +import cc.smtweb.framework.core.util.StringUtil; +import cc.smtweb.system.bpm.web.sys.user.dept.Dept; +import cc.smtweb.system.bpm.web.sys.user.dept.DeptCache; +import cc.smtweb.system.bpm.web.sys.user.party.Party; +import cc.smtweb.system.bpm.web.sys.user.party.PartyCache; +import cc.smtweb.system.bpm.web.sys.user.role.group.RoleGroup; +import cc.smtweb.system.bpm.web.sys.user.role.group.RoleGroupCache; +import cc.smtweb.system.bpm.web.sys.user.user.*; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.codec.digest.DigestUtils; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.sql.ResultSetMetaData; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * 给北京民政端提供接口 + */ +@Slf4j +@Controller +@RequestMapping("/mztb") +public class MztbController { + + private static final String PWD_SALT = "goodpj"; + + @PostMapping("/push") + @ResponseBody + public R pushWork(@RequestBody SwMap swMap) { +// addNewPartyAccount(); + DbEngine instance = DbEngine.getInstance(); + List> updatePartyList = swMap.readListMap("data"); + + if (updatePartyList == null || updatePartyList.size() < 1) { + log.info("请求携带需要更新的机构数据为空!"); + return R.success(); + } + + // 批量处理的数据 + List partysUpdateList = new ArrayList<>(); + List partysInsertList = new ArrayList<>(); + List sysPartyList = new ArrayList<>(); + List userList = new ArrayList<>(); + List userPartyList = new ArrayList<>(); + List deptList = new ArrayList<>(); + List userRoleList = new ArrayList<>(); + List userStatuList = new ArrayList<>(); + + List ptIdList = new ArrayList<>(); + + // 记录重复数据 + List partysInsertListExist = new ArrayList<>(); + List sysPartyListExist = new ArrayList<>(); + List userListExist = new ArrayList<>(); + List userPartyListExist = new ArrayList<>(); + List deptListExist = new ArrayList<>(); + List ptIdListExist = new ArrayList<>(); + List userRoleListExist = new ArrayList<>(); + List userStatuListExist = new ArrayList<>(); + + SwMap existPartyMap = new SwMap(); + int insertIndex = 0; + // 使用社会信用代码 当做key 查询当前机构信息 + Map partyInfoMap = instance.query(PartyInfo.class).stream().collect(Collectors.toMap(PartyInfo::getCreditCode, Function.identity())); + for (Map map : updatePartyList) { + PartyInfo partyInfo = new PartyInfo(); + SwMap updatePartySwMap = new SwMap(); + for (String key : map.keySet()) { // 注意民政端推送数据的字段和填报系统字段要一致 + updatePartySwMap.put(key, map.get(key)); + } + // 将查询到的数据转为 填报系统机构表数据 + partyInfo.getData().putAll(updatePartySwMap); + if (partyInfoMap.containsKey(map.get("pi_credit_code") + "")) { // 判断该机构是否存在 + long piIdOld = partyInfoMap.get(map.get("pi_credit_code") + "").getId(); + long sysPartyId = partyInfoMap.get(map.get("pi_credit_code") + "").getSysPartyId(); + partyInfo.setId(piIdOld); + partyInfo.setSysPartyId(sysPartyId); + partysUpdateList.add(partyInfo); + } else { // 新增(包括 底层的party 填报系统的 partyInfo 默认的用户) + boolean existParty = existPartyMap.containsKey(map.get("pi_credit_code") + ""); + if (existParty) { + // 包含就更新机构信息 ,系统机构信息没有可更改的内容故不处理 + int index = existPartyMap.readInt(map.get("pi_credit_code") + ""); + partysInsertListExist.add(partysInsertList.get(index)); + userListExist.add(userList.get(index)); + userPartyListExist.add(userPartyList.get(index)); + sysPartyListExist.add(sysPartyList.get(index)); + deptListExist.add(deptList.get(index)); + userRoleListExist.add(userRoleList.get(index)); + userStatuListExist.add(userStatuList.get(index)); + ptIdListExist.add(ptIdList.get(index)); + } + existPartyMap.put(map.get("pi_credit_code") + "", insertIndex); + insertIndex++; + + Party party = new Party(); // 底层机构表 + party.init(); + long ptId = Long.parseLong(map.get("pi_id") + ""); + party.setId(ptId); + party.setCode(ptId + ""); + party.setName(partyInfo.getPartyName()); +// partyInfo.setSysPartyId(ptId); + sysPartyList.add(party); + partysInsertList.add(partyInfo); + // 添加机构id + ptIdList.add(ptId + ""); + + User user = new User(); // 底层用户表 + user.init(); + long userId = instance.nextId(); + user.setId(userId); + user.setCode(partyInfo.getCreditCode()); + user.setName(partyInfo.getPartyName() + "-填报人员"); + user.setNicky(partyInfo.getCreditCode()); + user.setLevel(100); + user.setStatu(1); +// user.setPwd("13217b04835b4cbceb55edb54a72deb4"); //默认密码 abc@123456 + user.setPwd(DigestUtils.md5Hex(PWD_SALT + user.getId() + "abc@123456")); //默认密码 abc@123456 + user.setPwdLevel(0); + userList.add(user); + + Dept dept = new Dept();// 添加部门 + dept.init(); + long deptId = instance.nextId(); + dept.setId(deptId); + dept.setCode(RandomUtil.randomString(8)); + dept.setName("填报部门"); + dept.setType("100"); + dept.setPtId(ptId); + dept.setStatu(0); + deptList.add(dept); + + UserParty userParty = new UserParty(); //用户机构关联表 + long userPartyId = instance.nextId(); + userParty.setId(userPartyId); + userParty.setPartyId(ptId); + userParty.setUserId(userId); + userParty.setDeptId(deptId); // 关联部门表 + userPartyList.add(userParty); + + UserRole userRole = new UserRole(); // 用户角色 + userRole.setId(instance.nextId()); + userRole.setSupId(userPartyId); + userRole.setRoleGroupId(927515588790587392L); // 角色组id todo 先写死 一般不会变 + userRoleList.add(userRole); + + UserStatu userStatu = new UserStatu(); // 用户登录状态 + userStatu.init(); + userStatu.setId(userId); + userStatuList.add(userStatu); + } + } + + // 删除重复新增的元素 + partysInsertList.removeAll(partysInsertListExist); + sysPartyList.removeAll(sysPartyListExist); + userList.removeAll(userListExist); + userPartyList.removeAll(userPartyListExist); + deptList.removeAll(deptListExist); + userRoleList.removeAll(userRoleListExist); + userStatuList.removeAll(userStatuListExist); + ptIdList.removeAll(ptIdListExist); + + instance.doTrans(() -> { + // 处理新增或者修改的数据 + instance.findDao(PartyInfo.class).batchInsertEntity(partysInsertList); + instance.findDao(PartyInfo.class).batchUpdateEntity(partysUpdateList); + instance.findDao(Party.class).batchInsertEntity(sysPartyList); + instance.findDao(User.class).batchInsertEntity(userList); + instance.findDao(UserParty.class).batchInsertEntity(userPartyList); + instance.findDao(Dept.class).batchInsertEntity(deptList); + instance.findDao(UserRole.class).batchInsertEntity(userRoleList); + instance.findDao(UserStatu.class).batchInsertEntity(userStatuList); + + // 将新增的机构 加入角色组的 机构字段 + if (ptIdList.size() > 0) { + instance.update("UPDATE " + EntityHelper.getSchemaTableName(RoleGroup.ENTITY_NAME) + + " SET srg_party_id = CONCAT(srg_party_id,',' ,'" + String.join(",", ptIdList) + "') where srg_id = ? ", 927515588790587392L); // 角色组填报员 + } + // 将机构、用户信息放入缓存,或者刷新缓存 + PartyCache.getInstance().putList(sysPartyList); + UserCache.getInstance().putList(userList); + UserPartyCache.getInstance().putList(userPartyList); + DeptCache.getInstance().putList(deptList); + UserRoleCache.getInstance().putList(userRoleList); + UserStatuCache.getInstance().putList(userStatuList); + RoleGroupCache.getInstance().refresh(); + }); + return R.success(); + } + + + @PostMapping("/pull") + @ResponseBody + public R pullWork(@RequestBody SwMap swMap) { + DbEngine instance = DbEngine.getInstance(); + + String data = swMap.readString("data"); + boolean rollBack = swMap.readBool("rollBack", false); + if (rollBack) { + String fillOutIds = swMap.readString("fillOutIds"); + List collect = Arrays.stream(fillOutIds.split(",")).collect(Collectors.toList()); + if (StringUtil.isEmpty(fillOutIds)) return R.success(); + instance.update("update " + EntityHelper.getSchemaTableName(FillOut.ENTITY_NAME) + + " set fo_read_state = 1,fo_state = 1 where fo_id in (" + StringUtil.join(collect, ",") + ")"); + return R.success(); + } + + // 查询已确认还未推送和未成功 并且为指定任务月的填报数据 + List fillOutList = instance.queryStringList( + "select fo_id from " + EntityHelper.getSchemaTableName(FillOut.ENTITY_NAME) + + " where fo_state = 1 and fo_read_state != 0 and fo_task in (" + data + ") "); + if (fillOutList.size() == 0) { + log.info("未找到还未推送的数据"); + return R.success(); + } + String sql = "select pi.pi_sys_party_id,fo.*,fi.*,bi.*,yep.* from " + EntityHelper.getSchemaTableName(FillOut.ENTITY_NAME) + " fo\n" + + " inner join " + EntityHelper.getSchemaTableName(FinanceInfo.ENTITY_NAME) + " fi on fo_id = fi_fo_id\n" + + " inner join " + EntityHelper.getSchemaTableName(BusinessInfo.ENTITY_NAME) + " bi on fo_id = bi_fo_id\n" + + " inner join "+EntityHelper.getSchemaTableName(PartyInfo.ENTITY_NAME)+" pi on fo_party_id = pi_id " + + " left join " + EntityHelper.getSchemaTableName(YearEndPersons.ENTITY_NAME) + " yep on fo_id = yep_fo_id " + + " where fo_id in (" + StringUtil.join(fillOutList, ",") + ");"; + + List query = instance.query(sql, SwMap.class); + + instance.update("update " + EntityHelper.getSchemaTableName(FillOut.ENTITY_NAME) + + " set fo_read_time = ?, fo_read_state = 0 ,fo_state = 2 where fo_id in (" + StringUtil.join(fillOutList, ",") + ")", DateUtil.nowDateTimeLong()); + return R.success(query); + } + +} \ No newline at end of file diff --git a/mztb/src/main/java/cc/smtweb/biz/mztb/web/widgetManage/TaskMonthHandler.java b/mztb/src/main/java/cc/smtweb/biz/mztb/web/widgetManage/TaskMonthHandler.java index f462ba3..20d0018 100644 --- a/mztb/src/main/java/cc/smtweb/biz/mztb/web/widgetManage/TaskMonthHandler.java +++ b/mztb/src/main/java/cc/smtweb/biz/mztb/web/widgetManage/TaskMonthHandler.java @@ -1,23 +1,21 @@ package cc.smtweb.biz.mztb.web.widgetManage; import cc.smtweb.biz.mztb.web.base.DbSourceConfig; -import cc.smtweb.biz.mztb.web.domian.FillTask; import cc.smtweb.biz.mztb.web.tool.DbUtil; import cc.smtweb.biz.mztb.web.tool.UtilPub; -import cc.smtweb.framework.core.common.R; -import cc.smtweb.framework.core.common.SwEnum; import cc.smtweb.framework.core.common.SwMap; import cc.smtweb.framework.core.db.DbEngine; import cc.smtweb.framework.core.exception.BizException; -import cc.smtweb.framework.core.log.LogFactory; import cc.smtweb.framework.core.mvc.service.SwListData; import cc.smtweb.framework.core.session.UserSession; import cc.smtweb.system.bpm.web.design.form.define.PageDataset; import cc.smtweb.system.bpm.web.engine.dynPage.DynPageListHandler; import cc.smtweb.system.bpm.web.engine.dynPage.DynPageLoadHandler; -import cc.smtweb.system.bpm.web.engine.dynPage.DynRetBean; -import java.sql.*; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.SQLException; import java.util.ArrayList; import java.util.List;