commit a0bf1fec0b29a7ad3fd4084d86b62680f054f782 Author: CL <2502239547@qq.com> Date: Thu Feb 23 11:04:00 2023 +0800 first conmit 02230223 diff --git a/收发单位同步/ecology/WEB-INF/prop/gongwenTimesubcompanyid.properties b/收发单位同步/ecology/WEB-INF/prop/gongwenTimesubcompanyid.properties new file mode 100644 index 0000000..5b6c178 --- /dev/null +++ b/收发单位同步/ecology/WEB-INF/prop/gongwenTimesubcompanyid.properties @@ -0,0 +1,2 @@ +subcompanyid=2 +companytype=1 \ No newline at end of file diff --git a/收发单位同步/ecology/classbean/weaver/shouwen/cronjob/DocreceiveunitTimeCron.class b/收发单位同步/ecology/classbean/weaver/shouwen/cronjob/DocreceiveunitTimeCron.class new file mode 100644 index 0000000..4b1a5c0 Binary files /dev/null and b/收发单位同步/ecology/classbean/weaver/shouwen/cronjob/DocreceiveunitTimeCron.class differ diff --git a/收发单位同步/ecology/classbean/weaver/shouwen/cronjob/DocreceiveunitTimeCron.java b/收发单位同步/ecology/classbean/weaver/shouwen/cronjob/DocreceiveunitTimeCron.java new file mode 100644 index 0000000..958276d --- /dev/null +++ b/收发单位同步/ecology/classbean/weaver/shouwen/cronjob/DocreceiveunitTimeCron.java @@ -0,0 +1,127 @@ +package weaver.shouwen.cronjob; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.interfaces.schedule.BaseCronJob; + +import java.util.*; + +/** + * @author:CL + * @date:2023/2/14 10:16 + */ +public class DocreceiveunitTimeCron extends BaseCronJob { + + private static final Logger LOGGER = LoggerFactory.getLogger("收发文单位job"); + + @Override + public void execute() { + LOGGER.info(" com.weaver.shouwen.cronjob.DocreceiveunitTimeCron 已进入"); +// 取到部门值 + BaseBean bb = new BaseBean(); + //所属机构 + int subcompanyid = Integer.parseInt(bb.getPropValue("gongwenTimesubcompanyid", "subcompanyid")); + //外部单位 + int companytype = Integer.parseInt(bb.getPropValue("gongwenTimesubcompanyid", "companytype")); +// 先查标准表 存入list +// String selBzSql = "SELECT id,receiveunitname,canceled from docreceiveunit where subcompanyid="+subcompanyid+" and companytype="+companytype+""; + String selBzSql = "SELECT id,receiveunitname,canceled from docreceiveunit where subcompanyid=? and companytype=?"; + RecordSet recordSet = new RecordSet(); + boolean flag = recordSet.executeQuery(selBzSql,subcompanyid,companytype); + List> docList = new ArrayList<>(); + if (flag) { + while (recordSet.next()) { + Map map = new HashMap<>(); +// 标准表里1是封存0是启用 + map.put("id", recordSet.getString("id")); + map.put("单位名称", recordSet.getString("receiveunitname")); + map.put("是否封存", recordSet.getString("canceled")); + + docList.add(map); + } + } +// 再查建模表 存入list + String selJmSql = "SELECT id,dwmc,sjzt from formtable_main_18"; + recordSet = new RecordSet(); + boolean flag2 = recordSet.executeQuery(selJmSql); + List> jianmoList = new ArrayList<>(); + if (flag2) { + while (recordSet.next()) { + Map map = new HashMap<>(); +// 建模表里1是启用0是封存 + map.put("id", recordSet.getString("id")); + map.put("单位名称", recordSet.getString("dwmc")); + map.put("是否封存", recordSet.getString("sjzt")); + jianmoList.add(map); + } + } +// 如果测试表开始就无数据 直接插入 建模表中数据 + if (docList.size() == 0) { +// 封存 + String canceled = null; + for (Map jianmoMap : jianmoList) { + String insertSql = "INSERT into docreceiveunit " + + "(receiveunitname,companytype,subcompanyid,showorder,canceled) VALUES" + + "('" + jianmoMap.get("单位名称") + "','"+companytype+"','" + subcompanyid + "','.00'," + ("0".equals(jianmoMap.get("是否封存"))?"1":"0") + ")"; + boolean b = recordSet.execute(insertSql); + LOGGER.info(" com.weaver.shouwen.cronjob.DocreceiveunitTimeCron 标准表内为空 插入数据行"); + } + } else { + // 比对结果 + String insertSql = null; + String updateSql = null; + HashSet jianmoNameSet = new HashSet<>(); + HashSet docNameSet = new HashSet<>(); + HashSet deleteset = new HashSet<>(); + for (Map jianmoMap : jianmoList) { + jianmoNameSet.add((String) jianmoMap.get("单位名称")); +// 判断是否需要新增 + Integer fg = 0; + for (Map docMap : docList) { + //如果建模表没有与标准表匹配的单位名称,则删除标准表的数据 + docNameSet.add((String) docMap.get("单位名称") ); + +// 如果单位名称一样 但封存状态不一样 就更新他的封存状态 + if (docMap.get("单位名称").equals(jianmoMap.get("单位名称")) && docMap.get("是否封存").equals(jianmoMap.get("是否封存"))) { +// 更新封存状态 + updateSql = "UPDATE docreceiveunit set canceled='" + ("0".equals(jianmoMap.get("是否封存"))?"1":"0") + "' WHERE receiveunitname='" + jianmoMap.get("单位名称") + "'"; + boolean b = recordSet.executeUpdate(updateSql); + LOGGER.info(" com.weaver.shouwen.cronjob.DocreceiveunitTimeCron 更新数据sql执行结果 [{}]", b); + } +// 如果有一样的 就break + if (docMap.get("单位名称").equals(jianmoMap.get("单位名称"))) { + fg = 1; + break; + } + } +// 遍历完如果没有一样的就加入 + if (fg == 0) { + insertSql = "INSERT into docreceiveunit " + + "(receiveunitname,companytype,subcompanyid,showorder,canceled) VALUES" + + "('" + jianmoMap.get("单位名称") + "','"+companytype+"','" + subcompanyid + "','.00',"+("0".equals(jianmoMap.get("是否封存"))?"1":"0")+")"; + boolean b = recordSet.execute(insertSql); + LOGGER.info(" com.weaver.shouwen.cronjob.DocreceiveunitTimeCron 新增了数据"); + } + } +//如果建模表没有与标准表匹配的单位名称,则删除标准表的数据 + deleteset.addAll(docNameSet); + deleteset.removeAll(jianmoNameSet); + String deleteSql=null; + String id=""; + for(String receiveunitname: deleteset){ + deleteSql= "select id from docreceiveunit where receiveunitname=?"; + recordSet.executeQuery(deleteSql,receiveunitname); + if (recordSet.next()) { + id = recordSet.getString("id"); + } + deleteSql="delete from docreceiveunit where id="+id; + recordSet.execute(deleteSql); + } + + } + + + } +} diff --git a/收发单位同步/应用-收文登记.zip b/收发单位同步/应用-收文登记.zip new file mode 100644 index 0000000..e316232 Binary files /dev/null and b/收发单位同步/应用-收文登记.zip differ diff --git a/收发单位同步/收发文单位同步(1).docx b/收发单位同步/收发文单位同步(1).docx new file mode 100644 index 0000000..aa01863 --- /dev/null +++ b/收发单位同步/收发文单位同步(1).docx @@ -0,0 +1,14 @@ + 在流程或其他建模表单新增建模数据时,不另外弹出新页面,在本页面弹出小窗口就可新增,新增后可以直接把新增值付给流程字段 +备注:现新增字段是特殊字段-自定义链接 + +具体如下描述: + +以上图片的新增字段可直接连接到后台模块"收发文单位管理表"的新增页面 +如下图 + + +现效果:输入新增名称。点击保存后,需要关掉页面,再到开始的表单页面选择刚刚新增的字段。 +希望效果:点击"新增"按钮时,弹出小窗口新增,新增点击保存后页面可以直接关掉页面,并把新增值付给表单字段。 + + +2.在收发文单位管理表中的新建保存、编辑保存、删除、封存操作都要实时同步给系统自带的收发文单位管理表 diff --git a/收发单位同步/测试 sql.txt b/收发单位同步/测试 sql.txt new file mode 100644 index 0000000..324ff59 --- /dev/null +++ b/收发单位同步/测试 sql.txt @@ -0,0 +1,24 @@ +-- 先查标准表 +SELECT receiveunitname,canceled from docreceiveunit + +SELECT count(*) from docreceiveunit + +SELECT count(*) from docreceiveunit where subcompanyid=2 and companytype=1 + +SELECT id from docreceiveunit WHERE receiveunitname='这是建模表没有的数据99999999' + +DELETE from docreceiveunit where id=1652 + +INSERT into docreceiveunit (receiveunitname,companytype,subcompanyid,showorder,canceled) VALUES('这是建模表没有的数据99999999','1','2','.00','0'); + +-- 再查建模表 +SELECT dwmc,sjzt from formtable_main_18; + +SELECT count(*) from formtable_main_18; + +select * from formtable_main_18 where +-- 如果单位名称和启用相同 不插入 不同则插入 + + + +UPDATE docreceiveunit set canceled='0' WHERE receiveunitname='测试' \ No newline at end of file