Browse Source

Merge branch 'master' of http://39.98.153.250:9080/bowintek/GHSCPartyBuild

82064491C07A712AE32B5B57EC6EF136 1 week ago
parent
commit
7613c4ecb2
27 changed files with 939 additions and 34 deletions
  1. 72 5
      src/main/java/com/ghsc/partybuild/controller/PartyTwoController.java
  2. 5 5
      src/main/java/com/ghsc/partybuild/controller/app/AppPartyTwoExtController.java
  3. 8 1
      src/main/java/com/ghsc/partybuild/mapper/PartyTwoCQuery.java
  4. 1 1
      src/main/java/com/ghsc/partybuild/mapper/PartyUserCQuery.java
  5. 12 2
      src/main/java/com/ghsc/partybuild/service/PartyTwoService.java
  6. 6 0
      src/main/java/com/ghsc/partybuild/service/PartyUserService.java
  7. 250 5
      src/main/java/com/ghsc/partybuild/service/impl/PartyTwoServiceImpl.java
  8. 15 1
      src/main/java/com/ghsc/partybuild/service/impl/PartyUserServiceImpl.java
  9. 7 1
      src/main/java/com/ghsc/partybuild/vo/DjZtdrxxVo.java
  10. 1 0
      src/main/java/com/ghsc/partybuild/vo/ZzMzpyxxVo.java
  11. 7 4
      src/main/resources/application.yml
  12. 46 1
      src/main/resources/mapping/PartyTwoCQuery.xml
  13. 8 2
      src/main/resources/mapping/PartyUserCQuery.xml
  14. 1 1
      src/main/resources/static/app/js/setting/userRole/UserManageList.html
  15. 9 0
      src/main/resources/static/app/main/app.js
  16. 6 3
      src/main/resources/static/app/main/partyTwoExt/dnpxxx/list.html
  17. 55 1
      src/main/resources/static/app/main/partyTwoExt/dnpxxx/list.js
  18. 15 0
      src/main/resources/static/app/main/partyTwoExt/mzpyxx/edit.html
  19. 3 0
      src/main/resources/static/app/main/partyTwoExt/mzpyxx/list.html
  20. 65 1
      src/main/resources/static/app/main/partyTwoExt/mzpyxx/list.js
  21. 100 0
      src/main/resources/static/app/main/partyTwoExt/mzpyxx/mzpyTotal.html
  22. 91 0
      src/main/resources/static/app/main/partyTwoExt/mzpyxx/mzpyTotal.js
  23. 56 0
      src/main/resources/static/app/main/partyTwoExt/ztdrxx/edit.html
  24. 68 0
      src/main/resources/static/app/main/partyTwoExt/ztdrxx/edit.js
  25. 32 0
      src/main/resources/static/app/main/partyTwoExt/ztdrxx/view.html
  26. BIN
      src/main/resources/static/doc/template/党员民主评议导入模板.xlsx
  27. BIN
      src/main/resources/static/doc/template/党员评优导入模板.xlsx

+ 72 - 5
src/main/java/com/ghsc/partybuild/controller/PartyTwoController.java

@@ -120,6 +120,31 @@ public class PartyTwoController {
         return result;
     }
 
+    @ResponseBody
+    @RequestMapping("/importDnpxxx")
+    public RequsetData<List<Map<String, Object>>> importDnpxxx(@RequestBody Map<String, Object> reqMap) {
+        RequsetData<List<Map<String, Object>>> res = new RequsetData<>();
+        List<Map<String, Object>> errorInfo = new ArrayList<>();
+        String message = "";
+        try {
+            List<Map<String, Object>> dataList = JsonMapper.jsonToObject(reqMap.get("dnpxxxList").toString(), new TypeReference<List<Map<String, Object>>>() {
+            });
+            partyTwoService.importDnpxxx(dataList);
+        } catch (Exception e) {
+            e.printStackTrace();
+            message = e.toString();
+        }
+        if (errorInfo.size() <= 0 && stringUtils.IsNullOrEmpty(message)) {
+            res.setSuccess(true);
+            res.setMsg("操作成功!");
+        } else {
+            res.setSuccess(false);
+            res.setMsg("操作失败!" + message);
+            res.setItem(errorInfo);
+        }
+        return res;
+    }
+
     @RequestMapping(value = "/exportDnpxxx", method = RequestMethod.GET)
     public void exportDnpxxx(HttpServletResponse response,
                              @RequestParam(required = false) String dzzmc,
@@ -366,16 +391,17 @@ public class PartyTwoController {
 
     @ResponseBody
     @RequestMapping("/getZtdrxx")
-    public RequsetData<DjZtdrxx> getZtdrxx(@RequestParam("id") String id, @RequestParam("dzzdm") String dzzdm, @RequestParam("dzzmc") String dzzmc) {
-        RequsetData<DjZtdrxx> res = new RequsetData<>();
+    public RequsetData<DjZtdrxxVo> getZtdrxx(@RequestParam("id") String id, @RequestParam("dzzdm") String dzzdm, @RequestParam("dzzmc") String dzzmc) {
+        RequsetData<DjZtdrxxVo> res = new RequsetData<>();
 
-        DjZtdrxx model = partyTwoService.getZtdrxx(id);
+        DjZtdrxxVo model = partyTwoService.getZtdrxx(id);
         if (model == null) {
             UUID uuid = UUID.randomUUID();
-            model = new DjZtdrxx();
+            model = new DjZtdrxxVo();
             model.setId(uuid.toString());
             model.setDzzdm(dzzdm);
             model.setDzzmc(dzzmc);
+            model.setPersonnellist(new ArrayList<>());
         }
         res.setItem(model);
         return res;
@@ -383,7 +409,7 @@ public class PartyTwoController {
 
     @ResponseBody
     @RequestMapping("/saveZtdrxx")
-    public RequsetData<String> saveZtdrxx(@RequestBody DjZtdrxx model) {
+    public RequsetData<String> saveZtdrxx(@RequestBody DjZtdrxxVo model) {
 
         RequsetData<String> res = partyTwoService.saveZtdrxx(model);
 
@@ -1173,6 +1199,14 @@ public class PartyTwoController {
         return result;
     }
 
+    @ResponseBody
+    @GetMapping("/getMzpybhgclqkList")
+    public RequsetData<List<HashMap<String, Object>>> getMzpybhgclqkList() {
+        RequsetData<List<HashMap<String, Object>>> result = new RequsetData<>();
+        result.setItem(partyTwoService.getMzpybhgclqkList());
+        return result;
+    }
+
     @ResponseBody
     @GetMapping("/getMzpyxxList")
     public RequsetData<PageInfo<HashMap<String, Object>>> getMzpyxxList(@RequestParam("pageindex") int pageIndex, @RequestParam("pagesize") int pageSize,
@@ -1280,6 +1314,39 @@ public class PartyTwoController {
         return result;
     }
 
+    @ResponseBody
+    @RequestMapping("/importMzpy")
+    public RequsetData<List<Map<String, Object>>> importMzpy(@RequestBody Map<String, Object> reqMap) {
+        RequsetData<List<Map<String, Object>>> res = new RequsetData<>();
+        List<Map<String, Object>> errorInfo = new ArrayList<>();
+        String message = "";
+        try {
+            List<ZzMzpyxxVo> dataList = JsonMapper.jsonToObject(reqMap.get("mzpyList").toString(), new TypeReference<List<ZzMzpyxxVo>>() {
+            });
+            partyTwoService.importMzpy(dataList);
+        } catch (Exception e) {
+            e.printStackTrace();
+            message = e.toString();
+        }
+        if (errorInfo.size() <= 0 && stringUtils.IsNullOrEmpty(message)) {
+            res.setSuccess(true);
+            res.setMsg("操作成功!");
+        } else {
+            res.setSuccess(false);
+            res.setMsg("操作失败!" + message);
+            res.setItem(errorInfo);
+        }
+        return res;
+    }
+
+    @ResponseBody
+    @GetMapping("/getMzpyTotalList")
+    public RequsetData<List<HashMap<String, Object>> > getMzpyTotalList(@RequestParam(required = false) String dzzdm) {
+        RequsetData<List<HashMap<String, Object>> > result = new RequsetData<>();
+        result.setItem(partyTwoService.getMzpyTotalList(dzzdm));
+        return result;
+    }
+
     @ResponseBody
     @GetMapping("/getleaderUserList")
     public RequsetData<PageInfo<HashMap<String, Object>> > getleaderUserList(@RequestParam("pageindex") int pageIndex, @RequestParam("pagesize") int pageSize,@RequestParam(required = false) String username,@RequestParam(required = false) Integer usertype) {

+ 5 - 5
src/main/java/com/ghsc/partybuild/controller/app/AppPartyTwoExtController.java

@@ -64,13 +64,13 @@ public class AppPartyTwoExtController {
 
     @ResponseBody
     @RequestMapping("/getZtdrxx")
-    public RequsetData<DjZtdrxx> getZtdrxx(@RequestParam("id") String id, @RequestParam("dzzdm") String dzzdm, @RequestParam("dzzmc") String dzzmc) {
-        RequsetData<DjZtdrxx> res = new RequsetData<>();
+    public RequsetData<DjZtdrxxVo> getZtdrxx(@RequestParam("id") String id, @RequestParam("dzzdm") String dzzdm, @RequestParam("dzzmc") String dzzmc) {
+        RequsetData<DjZtdrxxVo> res = new RequsetData<>();
 
-        DjZtdrxx model = partyTwoService.getZtdrxx(id);
+        DjZtdrxxVo model = partyTwoService.getZtdrxx(id);
         if (model == null) {
             UUID uuid = UUID.randomUUID();
-            model = new DjZtdrxx();
+            model = new DjZtdrxxVo();
             model.setId(uuid.toString());
             model.setDzzdm(dzzdm);
             model.setDzzmc(dzzmc);
@@ -88,7 +88,7 @@ public class AppPartyTwoExtController {
         String message = "";
 
         try {
-            DjZtdrxx dataModel = mapper.readValue(mapper.writeValueAsString(reqMap.get("dataModel")).toString(), DjZtdrxx.class);
+            DjZtdrxxVo dataModel = mapper.readValue(mapper.writeValueAsString(reqMap.get("dataModel")).toString(), DjZtdrxxVo.class);
             res = partyTwoService.saveZtdrxx(dataModel);
         } catch (JsonProcessingException e) {
             e.printStackTrace();

+ 8 - 1
src/main/java/com/ghsc/partybuild/mapper/PartyTwoCQuery.java

@@ -35,7 +35,7 @@ public interface PartyTwoCQuery {
     List<DjZtdrxxVo> selectZtdrxxList(@Param("dzzdm") String dzzdm, @Param("dzzmc") String dzzmc, @Param("title") String title,
                                       @Param("location") String location,
                                       @Param("subjectType") Integer subjectType, @Param("beginTime") String beginTime,
-                                      @Param("endTime") String endTime, @Param("zzfbType") Integer zzfbType);
+                                      @Param("endTime") String endTime, @Param("zzfbType") Integer zzfbType, @Param("ztdrxxID") String ztdrxxID);
 
     List<DjZzsrVo> selectZzsrList(@Param("dzzdm") String dzzdm, @Param("dzzmc") String dzzmc, @Param("title") String title,
                                   @Param("location") String location,
@@ -86,10 +86,17 @@ public interface PartyTwoCQuery {
 
     List<HashMap<String, Object>> selectMzpyjgList();
 
+    List<HashMap<String, Object>> selectMzpybhgclqkList();
+
     List<HashMap<String, Object>> selectleaderUserList(@Param("username") String username,
                                                        @Param("usertype") Integer usertype);
 
     int batchInsertDnghbf(@Param("dnghbfList") List<DjDnghbf> dnghbfList);
 
     int batchInsertDnghbfmx(@Param("dnghbfmxList") List<DjDnghbfmx> dnghbfmxList);
+
+    /**
+     * 查询民主评议结果统计数据
+     */
+    List<HashMap<String, Object>> selectMzpyjgCountList(@Param("dzzdm") String dzzdm);
 }

+ 1 - 1
src/main/java/com/ghsc/partybuild/mapper/PartyUserCQuery.java

@@ -279,7 +279,7 @@ public interface PartyUserCQuery {
 
     int deleteUser(@Param("userCode") String userCode);
 
-    HashMap<String, Object> selectPartyUserSingleExt(@Param("rybm") String rybm);
+    HashMap<String, Object> selectPartyUserSingleExt(@Param("rybm") String rybm, @Param("xm") String xm);
 
     Integer batchInsertUserPartyOfMonth(@Param("yearMonth") Integer yearMonth);
 

+ 12 - 2
src/main/java/com/ghsc/partybuild/service/PartyTwoService.java

@@ -4,6 +4,7 @@ import com.github.pagehelper.PageInfo;
 import com.ghsc.partybuild.controller.jsonmodel.RequsetData;
 import com.ghsc.partybuild.model.*;
 import com.ghsc.partybuild.vo.*;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import java.util.HashMap;
 import java.util.List;
@@ -39,9 +40,9 @@ public interface PartyTwoService {
 
     List<Map<String, Object>> importDnghbf(List<Map<String, Object>> dnghbflist) throws Exception;
 
-    DjZtdrxx getZtdrxx(String id);
+    DjZtdrxxVo getZtdrxx(String id);
 
-    RequsetData<String> saveZtdrxx(DjZtdrxx model);
+    RequsetData<String> saveZtdrxx(DjZtdrxxVo model);
 
     int delZtdrxx(String id);
 
@@ -108,10 +109,19 @@ public interface PartyTwoService {
 
     List<HashMap<String, Object>> getMzpyjgList();
 
+    List<HashMap<String, Object>> getMzpybhgclqkList();
+
     PageInfo<HashMap<String, Object>> getMzpyxxList(int page, int rows, String username, String rybm, String dzzdm, String beginTime, String endTime, String pyjg);
     ZzMzpyxxVo getMzpyById(String id);
     int saveMzpy(ZzMzpyxxVo data);
     int deleteMzpyById(String id);
+    // 导入民主评议
+    List<ZzMzpyxxVo> importMzpy(List<ZzMzpyxxVo> dataList) throws Exception;
+    // 查询民主评议统计报表数据
+    List<HashMap<String,Object>> getMzpyTotalList(String dzzdm);
 
     PageInfo<HashMap<String, Object>> getleaderUserList(int page, int rows, String username, Integer usertype);
+
+    // 导入党员评先
+    List<Map<String, Object>> importDnpxxx(List<Map<String, Object>> dataList) throws Exception;
 }

+ 6 - 0
src/main/java/com/ghsc/partybuild/service/PartyUserService.java

@@ -90,6 +90,12 @@ public interface PartyUserService {
      */
     HashMap<String, Object> getPartyUserExt(String rybm);
 
+    /**
+     * 党员信息(包含入党申请人)
+     * @param xm 人员姓名
+     */
+    HashMap<String, Object> getPartyUserExtByName(String xm);
+
     /**
      * 查询人员党组织代码
      * @param rybm

+ 250 - 5
src/main/java/com/ghsc/partybuild/service/impl/PartyTwoServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ghsc.partybuild.service.impl;
 
+import com.ghsc.partybuild.vo.partyLife.PartyLifeMeetingVo;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.ghsc.partybuild.controller.jsonmodel.RequsetData;
@@ -84,6 +85,15 @@ public class PartyTwoServiceImpl implements PartyTwoService {
     @Autowired
     private PartyService partyService;
 
+    @Autowired
+    private com.ghsc.partybuild.util.StringUtils stringUtils;
+
+    @Autowired
+    private PfPartylifemeetingPersonnelMapper pfPartylifemeetingPersonnelMapper;
+
+    @Autowired
+    private PartyLifeMeetingCQuery partyLifeMeetingCQuery;
+
     @Override
     public DjDnpxxx getDnpxxx(String id) {
         return dnpxxxMapper.selectByPrimaryKey(id);
@@ -409,18 +419,54 @@ public class PartyTwoServiceImpl implements PartyTwoService {
     }
 
     @Override
-    public RequsetData<String> saveZtdrxx(DjZtdrxx model) {
+    public RequsetData<String> saveZtdrxx(DjZtdrxxVo data) {
         RequsetData<String> res = new RequsetData<String>();
         int result;
+
+        DjZtdrxx model = ztdrxxMapper.selectByPrimaryKey(data.getId());
+        boolean isSave = model == null;
+        if (model == null) {
+            model = new DjZtdrxx();
+            model.setId(data.getId());
+        }
+
         //同步数据
         model.setOperatestate("A");
         model.setOperatetime(new Date());
         model.setSyncstate("N");
-        if (ztdrxxMapper.selectByPrimaryKey(model.getId()) == null) {
+        // 从Vo类中同步字段
+        model.setDzzdm(data.getDzzdm());
+        model.setDzzmc(data.getDzzmc());
+        model.setTitle(data.getTitle());
+        model.setActivitytime(data.getActivitytime());
+        model.setLocation(data.getLocation());
+        model.setSubjecttype(data.getSubjecttype());
+        model.setSubjectcontent(data.getSubjectcontent());
+
+        if (isSave) {
             result = ztdrxxMapper.insert(model);
         } else {
             result = ztdrxxMapper.updateByPrimaryKeyWithBLOBs(model);
         }
+
+        //出席人员
+        PfPartylifemeetingPersonnelExample perExp = new PfPartylifemeetingPersonnelExample();
+        perExp.or().andPartylifemeetingidEqualTo(data.getId());
+        pfPartylifemeetingPersonnelMapper.deleteByExample(perExp);
+        if(data.getPersonnellist().size() > 0){
+            data.getPersonnellist().forEach(item -> {
+                PfPartylifemeetingPersonnel perModel = new PfPartylifemeetingPersonnel();
+                perModel.setId(UUID.randomUUID().toString());
+                perModel.setRybm(item.getRybm());
+                perModel.setPartylifemeetingid(data.getId());
+                perModel.setIsabsenteeism(item.getIsabsenteeism());
+                perModel.setAbsenteeismcause(item.getAbsenteeismcause());
+                perModel.setCreatetime(new Date());
+
+                pfPartylifemeetingPersonnelMapper.insert(perModel);
+            });
+        }
+
         if (result > 0) {
             res.setSuccess(true);
             res.setMsg("提交成功!");
@@ -439,15 +485,24 @@ public class PartyTwoServiceImpl implements PartyTwoService {
     @Override
     public PageInfo<DjZtdrxxVo> getZtdrxxList(int page, int rows, String dzzdm, String dzzmc, String title, Integer subjectType, String location, String beginTime, String endTime, Integer zzfbType) {
         PageHelper.startPage(page, rows);
-        List<DjZtdrxxVo> list = partyTwoCquery.selectZtdrxxList(dzzdm, dzzmc, title, location, subjectType, beginTime, endTime, zzfbType);
+        List<DjZtdrxxVo> list = partyTwoCquery.selectZtdrxxList(dzzdm, dzzmc, title, location, subjectType, beginTime, endTime, zzfbType, null);
 
         PageInfo<DjZtdrxxVo> result = new PageInfo(list);
         return result;
     }
 
     @Override
-    public DjZtdrxx getZtdrxx(String id) {
-        return ztdrxxMapper.selectByPrimaryKey(id);
+    public DjZtdrxxVo getZtdrxx(String id) {
+        if (stringUtils.IsNullOrEmpty(id))
+            return null;
+
+        List<DjZtdrxxVo> list = partyTwoCquery.selectZtdrxxList(null, null, null, null, null, null, null, null, null);
+        DjZtdrxxVo data = list.size() > 0 ? list.get(0) : null;
+        if(data != null){
+            // 查询出席人员列表
+            data.setPersonnellist(partyLifeMeetingCQuery.selectMeetingPersonnelList(data.getId()));
+        }
+        return data;
     }
 
     @Override
@@ -846,6 +901,12 @@ public class PartyTwoServiceImpl implements PartyTwoService {
         return list;
     }
 
+    @Override
+    public List<HashMap<String, Object>> getMzpybhgclqkList() {
+        List<HashMap<String, Object>> list = partyTwoCquery.selectMzpybhgclqkList();
+        return list;
+    }
+
     public ZzMzpyxxVo getMzpyById(String id) {
         if (!StringUtils.isNotBlank(id))
             return null;
@@ -901,6 +962,106 @@ public class PartyTwoServiceImpl implements PartyTwoService {
         return zzMzpyxxMapper.deleteByExample(exp);
     }
 
+    @Override
+    public List<ZzMzpyxxVo> importMzpy(List<ZzMzpyxxVo> dataList) throws Exception {
+        if (dataList.size() <= 0) {
+            throw new Exception("请添加导入数据");
+        }
+        List<ZzMzpyxxVo> errorList = new ArrayList<>();
+        List<HashMap<String, Object>> mzpyjgList = getMzpyjgList(); // 民主评议结果字典
+        List<HashMap<String, Object>> mzpybhgclqkList = getMzpybhgclqkList(); // 民主评议不合格处理情况字典
+
+        for (int i = 0; i < dataList.size(); i++) {
+            String errorInfo = "";
+            HashMap<String, Object> pyjg = null;
+            HashMap<String, Object> pyjcqk = null;
+            HashMap<String, Object> partyUserInfo = new HashMap<>();
+
+            int finalI = i;
+            if (stringUtils.IsNullOrEmpty(dataList.get(i).getUserName())) {
+                errorInfo += "请填写党员姓名!";
+            } else {
+                partyUserInfo = partyUserService.getPartyUserExtByName(dataList.get(i).getUserName()); // 按名字查询出党员信息
+                if (partyUserInfo == null || partyUserInfo.isEmpty()) {
+                    errorInfo += "该党员不存在!";
+                }
+            }
+            if (stringUtils.IsNullOrEmpty(dataList.get(i).getKzpyrq())) {
+                errorInfo += "请填写评议开始日期!";
+            }
+            if (stringUtils.IsNullOrEmpty(dataList.get(i).getJspyrq())) {
+                errorInfo += "请填写评议结束日期!";
+            }
+            if (stringUtils.IsNullOrEmpty(dataList.get(i).getPyjg())) {
+                errorInfo += "请填写评议结果!";
+            } else {
+                pyjg = mzpyjgList.stream().filter(it -> it.get("HZMC").equals(dataList.get(finalI).getPyjg())).findFirst().orElse(null);
+                if (pyjg == null) {
+                    errorInfo += "评议结果不存在!";
+                } else {
+                    dataList.get(i).setPyjg((String) pyjg.get("BM"));
+                }
+            }
+            if (!stringUtils.IsNullOrEmpty(dataList.get(i).getPyjcqk())) {
+                pyjcqk = mzpybhgclqkList.stream().filter(it -> it.get("HZMC").equals(dataList.get(finalI).getPyjcqk())).findFirst().orElse(null);
+                if (pyjcqk == null) {
+                    errorInfo += "不合格处理情况不存在!";
+                } else {
+                    dataList.get(i).setPyjcqk((String) pyjcqk.get("BM"));
+                }
+            }
+
+            if (stringUtils.IsNullOrEmpty(errorInfo)) {
+                // 初始化数据
+                dataList.get(i).setRybm((String) partyUserInfo.get("RYBM"));
+                dataList.get(i).setSzdzbdm((String) partyUserInfo.get("SZDZBDM"));
+                dataList.get(i).setKzpyrq(dateUtils.strFormat_short(dataList.get(i).getKzpyrq()));
+                dataList.get(i).setJspyrq(dateUtils.strFormat_short(dataList.get(i).getJspyrq()));
+                dataList.get(i).setMzpyxxbs(UUID.randomUUID().toString());
+            } else {
+                dataList.get(i).setErrorInfo(errorInfo);
+                errorList.add(dataList.get(i));
+            }
+        }
+
+        if (errorList.isEmpty()) {
+            for (ZzMzpyxxVo zzMzpyxxVo : dataList) {
+                saveMzpy(zzMzpyxxVo);
+            }
+        }
+        return errorList;
+    }
+
+    @Override
+    public List<HashMap<String, Object>> getMzpyTotalList(String dzzdm) {
+        // 查询计数统计
+        List<HashMap<String, Object>> hashMaps = partyTwoCquery.selectMzpyjgCountList(dzzdm);
+        HashMap<String, Object> countMap = new HashMap<>();
+        // 初始化 countMap 中的累加字段
+        if (!hashMaps.isEmpty()) {
+            // 初始化countMap的字段,假设所有map中的字段名是一致的
+            hashMaps.get(0).forEach((key, value) -> {
+                if (value instanceof Number) {
+                    countMap.put(key, 0); // 初始化为0
+                }
+            });
+            countMap.put("DZZMC", "合计");
+        }
+        // 计算合计数据
+        hashMaps.forEach(map -> {
+            map.forEach((key, value) -> {
+                if (value instanceof Number) {
+                    // 获取countMap中当前累加的值
+                    int currentCount = (int) countMap.getOrDefault(key, 0);
+                    // 将当前值累加到countMap中
+                    countMap.put(key, currentCount + ((Number) value).intValue());
+                }
+            });
+        });
+        hashMaps.add(countMap);
+        return hashMaps;
+    }
+
     @Override
     public PageInfo<HashMap<String, Object>> getleaderUserList(int page, int rows, String username, Integer usertype) {
         PageHelper.startPage(page, rows);
@@ -909,4 +1070,88 @@ public class PartyTwoServiceImpl implements PartyTwoService {
         PageInfo<HashMap<String, Object>> result = new PageInfo(list);
         return result;
     }
+
+    @Override
+    public List<Map<String, Object>> importDnpxxx(List<Map<String, Object>> dataList) throws Exception {
+        if (dataList.size() <= 0) {
+            throw new Exception("请添加导入数据");
+        }
+        List<Map<String, Object>> resultList = new ArrayList<>();
+        List<Map<String, Object>> errorList = new ArrayList<>();
+        List<CfDictionary> positionLevelList = dictionaryService.getDictionaryListByDicTypeKey("positionLevel");
+        List<CfDictionary> honourTypeList = dictionaryService.getDictionaryListByDicTypeKey("honourType");
+
+        for (int i = 0; i < dataList.size(); i++) {
+            String errorInfo = "";
+            Integer honourlevel = null;
+            Integer honourtype = null;
+            HashMap<String, Object> partyUserInfo = new HashMap<>();
+
+            int finalI = i;
+            if (stringUtils.IsNullOrEmpty((String) dataList.get(i).get("userName"))) {
+                errorInfo += "请填写党员姓名!";
+            } else {
+                partyUserInfo = partyUserService.getPartyUserExtByName((String) dataList.get(i).get("userName")); // 按名字查询出党员信息
+                if (partyUserInfo == null || partyUserInfo.isEmpty()) {
+                    errorInfo += "该党员不存在!";
+                }
+            }
+            if (stringUtils.IsNullOrEmpty((String) dataList.get(i).get("honourname"))) {
+                errorInfo += "请填写荣誉名称!";
+            }
+            if (stringUtils.IsNullOrEmpty((String) dataList.get(i).get("honourlevel"))) {
+                errorInfo += "请填写荣誉等级!";
+            } else {
+                honourlevel = positionLevelList.stream().filter(it -> it.getDicvalue().equals(dataList.get(finalI).get("honourlevel"))).findFirst().orElse(new CfDictionary()).getDickey();
+                if (honourlevel == null) {
+                    errorInfo += "荣誉等级不存在!";
+                }
+            }
+            if (stringUtils.IsNullOrEmpty((String) dataList.get(i).get("honourtime"))) {
+                errorInfo += "请填写获得荣誉时间!";
+            }
+            if (stringUtils.IsNullOrEmpty((String) dataList.get(i).get("honourtype"))) {
+                errorInfo += "请填写荣誉类型!";
+            } else {
+                honourtype = honourTypeList.stream().filter(it -> it.getDicvalue().equals(dataList.get(finalI).get("honourtype"))).findFirst().orElse(new CfDictionary()).getDickey();
+                if (honourtype == null) {
+                    errorInfo += "荣誉等级不存在!";
+                }
+            }
+
+            if (stringUtils.IsNullOrEmpty(errorInfo)) {
+                // 处理数据
+                // 创建实体类
+                DjDnpxxx model = new DjDnpxxx();
+                model.setId(UUID.randomUUID().toString());
+                model.setDzzdm((String) partyUserInfo.get("DZZDM"));
+                model.setDzzmc((String) partyUserInfo.get("DZZMC"));
+                model.setHonourlevel(honourlevel);
+                model.setHonourtype(honourtype);
+                model.setHonourname((String) dataList.get(i).get("honourname"));
+                model.setHonourtime(dateUtils.strToDateExt((String) dataList.get(i).get("honourtime")));
+                model.setPxlx("1");
+
+                UserItemVo userItem = new UserItemVo();
+                userItem.setRybm((String) partyUserInfo.get("RYBM"));
+                userItem.setXm((String) partyUserInfo.get("XM"));
+                UserItemVo[] vos = new UserItemVo[]{userItem};
+
+                Map<String, Object> result = new HashMap<>();
+                result.put("model", model);
+                result.put("userItemVo", vos);
+                resultList.add(result);
+            } else {
+                dataList.get(i).put("errorInfo", errorInfo);
+                errorList.add(dataList.get(i));
+            }
+        }
+
+        if (errorList.isEmpty()) {
+            resultList.forEach(item -> {
+                RequsetData<String> stringRequsetData = saveDnpxxx((DjDnpxxx) item.get("model"), (UserItemVo[]) item.get("userItemVo"));
+            });
+        }
+        return errorList;
+    }
 }

+ 15 - 1
src/main/java/com/ghsc/partybuild/service/impl/PartyUserServiceImpl.java

@@ -194,7 +194,21 @@ public class PartyUserServiceImpl implements PartyUserService {
     public HashMap<String, Object> getPartyUserExt(String rybm) {
         HashMap<String, Object> result = new HashMap<>();
         if (!stringUtils.IsNullOrEmpty(rybm)) {
-            result = partyUserCquery.selectPartyUserSingleExt(rybm);
+            result = partyUserCquery.selectPartyUserSingleExt(rybm, null);
+        }
+        return result;
+    }
+
+    /**
+     * 党员信息(包含入党申请人)
+     *
+     * @param xm 人员姓名
+     */
+    @Override
+    public HashMap<String, Object> getPartyUserExtByName(String xm) {
+        HashMap<String, Object> result = new HashMap<>();
+        if (!stringUtils.IsNullOrEmpty(xm)) {
+            result = partyUserCquery.selectPartyUserSingleExt(null, xm);
         }
         return result;
     }

+ 7 - 1
src/main/java/com/ghsc/partybuild/vo/DjZtdrxxVo.java

@@ -1,9 +1,11 @@
 package com.ghsc.partybuild.vo;
 
+import com.ghsc.partybuild.vo.partyLife.PartyLifeMeetingPersonnelVo;
 import lombok.Data;
 
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 
 @Data
 public class DjZtdrxxVo {
@@ -19,7 +21,7 @@ public class DjZtdrxxVo {
 
     private String location;
 
-    private BigDecimal subjecttype;
+    private Integer subjecttype;
 
     private String createuserid;
 
@@ -46,4 +48,8 @@ public class DjZtdrxxVo {
     private String fileurl;
 
     private String dwmc;
+
+    private Integer absentcount;//缺勤人数
+    private Integer attendance;//出席人员数量
+    public List<PartyLifeMeetingPersonnelVo> personnellist;
 }

+ 1 - 0
src/main/java/com/ghsc/partybuild/vo/ZzMzpyxxVo.java

@@ -7,4 +7,5 @@ import lombok.Data;
 public class ZzMzpyxxVo extends ZzMzpyxx {
     private String userName;
     private String partyName;
+    private String errorInfo;
 }

+ 7 - 4
src/main/resources/application.yml

@@ -3,10 +3,10 @@ server:
   tomcat:
     max-connections: 100000
 spring:
-  profiles:
-    include: user
-    #resources:
-    #static-locations: file:F:/IDEA/demo/schoolparty_mysql/src/main/resources/static/
+#  profiles:
+#    include: user
+  resources:
+    static-locations: file:D:\Code\Project\WSZYDangJian\GHSCPartyBuild\src\main\resources\static\
   datasource:
     name: party_build_db
     type: com.alibaba.druid.pool.DruidDataSource
@@ -67,6 +67,9 @@ spring:
   mvc:
     async:
       request-timeout: 300000
+    view:
+      prefix: /app/main/
+      suffix: .html
 
 logging:
   config: classpath:logback-spring.xml

+ 46 - 1
src/main/resources/mapping/PartyTwoCQuery.xml

@@ -488,11 +488,16 @@
         select *
         from ZZZD_PYJG
     </select>
+    <select id="selectMzpybhgclqkList" resultType="java.util.HashMap">
+        select *
+        from ZZZD_PXBHGCLQK
+    </select>
     <select id="selectMzpyxxList" resultType="java.util.HashMap">
-        select zz.DZZMC,ry.XM, p.*,pyjg.HZMC as PYJGMC from ZZ_MZPYXX p
+        select zz.DZZMC,ry.XM, p.*,pyjg.HZMC as PYJGMC, pxbhgcl.HZMC AS PXBHGCLMC from ZZ_MZPYXX p
         inner join ZZ_ZZQKXX zz on p.SZDZBDM=ZZ.DZZDM
         inner join VM_RYJBXX ry on p.RYBM = ry.RYBM
         inner join ZZZD_PYJG pyjg on p.PYJG=pyjg.BM
+        LEFT JOIN ZZZD_PXBHGCLQK pxbhgcl ON p.PYJCQK = pxbhgcl.BM
         where 1=1
         <if test="rybm != null and rybm != ''">
             and p.rybm = #{rybm}
@@ -560,4 +565,44 @@
             select #{c.id},#{c.dnghbfid},#{c.caredate},#{c.carecontent},#{c.helpformtype},#{c.amount} FROM DUAL
         </foreach>
     </insert>
+
+    <select id="selectMzpyjgCountList" resultType="java.util.HashMap">
+        SELECT
+            zzqk.ZZQKXXBS,
+            zzqk.DZZDM,
+            zzqk.DZZMC,
+            COUNT( yxpy.MZPYXXBS ) AS yxCount,
+            COUNT( hgpy.MZPYXXBS ) AS hgCount,
+            COUNT( jbhgpy.MZPYXXBS ) AS jbhgCount,
+            COUNT( bhgpy.MZPYXXBS ) AS bhgCount,
+            COUNT( kcdjcf.MZPYXXBS ) AS kcdjcfCount,
+            COUNT( qqtdcf.MZPYXXBS ) AS qqtdcfCount,
+            COUNT( qxgzcf.MZPYXXBS ) AS qxgzcfCount,
+            COUNT( dncmcf.MZPYXXBS ) AS dncmcfCount,
+            COUNT( qtdjcf.MZPYXXBS ) AS qtdjcfCount,
+            COUNT( qtcf.MZPYXXBS ) AS qtcfCount,
+            GROUP_CONCAT( yxry.XM SEPARATOR ', ' ) AS yxmd,
+            GROUP_CONCAT( hgry.XM SEPARATOR ', ' ) AS hgmd
+        FROM
+            zz_zzqkxx zzqk
+                LEFT JOIN zz_mzpyxx yxpy ON zzqk.DZZDM = yxpy.SZDZBDM AND yxpy.PYJG = 10
+                LEFT JOIN zz_mzpyxx hgpy ON zzqk.DZZDM = hgpy.SZDZBDM AND hgpy.PYJG = 20
+                LEFT JOIN zz_mzpyxx bhgpy ON zzqk.DZZDM = bhgpy.SZDZBDM AND bhgpy.PYJG = 30
+                LEFT JOIN zz_mzpyxx jbhgpy ON zzqk.DZZDM = jbhgpy.SZDZBDM AND jbhgpy.PYJG = 40
+                LEFT JOIN zz_mzpyxx kcdjcf ON zzqk.DZZDM = kcdjcf.SZDZBDM AND kcdjcf.PYJCQK = 10
+                LEFT JOIN zz_mzpyxx qqtdcf ON zzqk.DZZDM = qqtdcf.SZDZBDM AND qqtdcf.PYJCQK = 20
+                LEFT JOIN zz_mzpyxx qxgzcf ON zzqk.DZZDM = qxgzcf.SZDZBDM AND qxgzcf.PYJCQK = 30
+                LEFT JOIN zz_mzpyxx dncmcf ON zzqk.DZZDM = dncmcf.SZDZBDM AND dncmcf.PYJCQK = 40
+                LEFT JOIN zz_mzpyxx qtdjcf ON zzqk.DZZDM = qtdjcf.SZDZBDM AND qtdjcf.PYJCQK = 50
+                LEFT JOIN zz_mzpyxx qtcf ON zzqk.DZZDM = qtcf.SZDZBDM AND qtcf.PYJCQK = 60
+                LEFT JOIN vm_ryjbxx_all yxry ON yxpy.RYBM = yxry.RYBM
+                LEFT JOIN vm_ryjbxx_all hgry ON hgpy.RYBM = hgry.RYBM
+        WHERE ZZQKXXBS != '9991000222'
+        and zzqk.DZZDM like concat('',#{dzzdm},'%')
+        GROUP BY
+            zzqk.ZZQKXXBS,
+            zzqk.DZZDM,
+            zzqk.DZZMC
+        ORDER BY DZZDM
+    </select>
 </mapper>

+ 8 - 2
src/main/resources/mapping/PartyUserCQuery.xml

@@ -425,7 +425,7 @@
         select us.USERTYPE,us.RYJBXXBS,us.RYBM,us.XM,us.SZDZBDM,us.RYZT,us.SQRDRQ,
         uszw.dnzw as ZWMC,
         us.DNZWMC,us.XJSZWMC,us.XB,us.JG,us.MZ,us.CSRQ,us.XL,us.SFZH,
-        p.DZZMC,
+        p.DZZMC, p.DZZDM,
         ryzt.HZMC as RYZTMC,
         xb.HZMC as XBMC,mz.HZMC as MZMC,xl.HZMC as XLMC,jszw.HZMC as JSZWMC,
         userinfo.USERNAME as MOBILE,us.DNZWMC as POST,
@@ -450,7 +450,13 @@
         left join vw_partyduty uszw on us.RYBM=uszw.RYBM -- 党内职务名称
         left join ZZ_ZZQKXX dw on SUBSTR(p.DZZDM,1,12)=dw.DZZDM
         left join VM_PARTYGROUP partyGroup on dw.DZZDM = partyGroup.DZZDM
-        where 1=1 and us.RYBM = #{rybm}
+        where 1=1
+            <if test="rybm != null and rybm != ''">
+                and us.RYBM = #{rybm}
+            </if>
+            <if test="xm != null and xm != ''">
+                and us.XM = #{xm}
+            </if>
     </select>
 
     <!--党小组成员信息(已取消)-->

+ 1 - 1
src/main/resources/static/app/js/setting/userRole/UserManageList.html

@@ -98,7 +98,7 @@
                             <td>{{userRole.DZZMC}}</td>
                             <td>
                                 <button class="btn td-btn bg-pink waves-effect"
-                                        ng-click="deleteUserRole(userRole.USERID,userRole.ROLEID)" title="删除">
+                                        ng-click="deleteUserRole(userRole.UserId,userRole.RoleId)" title="删除">
                                     <!--<i class="material-icons td-icon">delete_forever</i>-->
                                     删除
                                 </button>

+ 9 - 0
src/main/resources/static/app/main/app.js

@@ -1725,6 +1725,15 @@
                     return $ocLazyLoad.load(['../main/partyTwoExt/mzpyxx/list.js?' + window.sysVersion]);
                 }]
             }
+        }).state("home.mzpxyTotalList", {
+            url: "mzpxyTotalList?dzzdm",
+            templateUrl: "../main/partyTwoExt/mzpyxx/mzpyTotal.html?" + window.sysVersion,
+            controller: "mzpxyTotalCtrl",
+            resolve: {
+                load: ['$ocLazyLoad', function ($ocLazyLoad) {
+                    return $ocLazyLoad.load(['../main/partyTwoExt/mzpyxx/mzpyTotal.js?' + window.sysVersion]);
+                }]
+            }
         }).state("home.dnghbf", {
             url: "dnghbf",
             templateUrl: "../main/partyTwoExt/dnghbf/list.html?" + window.sysVersion,

+ 6 - 3
src/main/resources/static/app/main/partyTwoExt/dnpxxx/list.html

@@ -134,12 +134,15 @@
                     </div>
                     <div class="search-btn" style="margin-right: 20px;">
                         <div style="float: right">
-                            <button class="btn  btn-default1"
-                                    ng-click="export()">导出
-                            </button>
                             <button class="btn btn-default1" role-permission-code="dnpxxx.btn.btnAdd"
                                     ng-click="add()">新增
                             </button>
+                            <button class="btn btn-default1" ng-if="selectparams.pxlx==1"
+                                    ng-click="import()">导入
+                            </button>
+                            <button class="btn  btn-default1"
+                                    ng-click="export()">导出
+                            </button>
                         </div>
                     </div>
                 </div>

+ 55 - 1
src/main/resources/static/app/main/partyTwoExt/dnpxxx/list.js

@@ -1,5 +1,5 @@
 (function ($app) {
-    $app.module('gtPartyApp').controller('dnpxxxCtrl', function ($scope, $http, $modal, $ocLazyLoad, $timeout, $alert, $loading, $state, AuthUser, $stateParams, $bsRouterState) {
+    $app.module('gtPartyApp').controller('dnpxxxCtrl', function ($scope, $http, $modal, $ocLazyLoad, $timeout, $alert, $loading, $state, AuthUser, $stateParams, $bsRouterState, $excel) {
         $state.params = $bsRouterState.$params($scope);
         $scope.isShow = false;
         $scope.moreTxt = "更多";
@@ -173,6 +173,60 @@
             }
         };
 
+        // 导入参数设置
+        $scope.excelDnpxxxConfig = {
+            filetype: 1,
+            columns: {
+                '姓名': 'userName',
+                '荣誉名称': 'honourname',
+                '等级': 'honourlevel',
+                '获得荣誉时间': 'honourtime',
+                '是否及时性表彰': 'iscommend',
+                '荣誉类型': 'honourtype',
+            },
+            errorcolumns: {
+                'userName': '姓名',
+                'honourname': '荣誉名称',
+                'honourlevel': '等级',
+                'honourtime': '获得荣誉时间',
+                'iscommend': '是否及时性表彰',
+                'honourtype': '荣誉类型',
+                'errorInfo': '错误信息'
+            },
+            readonly: false,
+            templateUrl: '/doc/template/党员评优导入模板.xlsx'
+        };
+
+        $scope.import = function () {
+            $excel.addFile($scope.excelDnpxxxConfig).then(function (items) {
+                $loading.show();
+                $http({
+                    method: "post",
+                    url: "../../api/partyTowExt/importDnpxxx",
+                    data: {
+                        dnpxxxList: JSON.stringify(items)
+                    }
+                }).then(function (result) {
+                    $loading.hide();
+                    if (result.data.success) {
+                        $scope.loadData();
+                        $scope.showMsg('成功', result.data.msg, 3);
+                    } else {
+                        if (result.data.item.length > 0) {
+                            $scope.showMsg('错误', '导入失败,存在错误数据,请修改后重新导入!', 20);
+                            $excel.showErrorInfo(result.data.item);
+                        } else {
+                            $scope.showMsg(result.data.msg);
+                        }
+                    }
+
+                }, function (resp) {
+                    $loading.hide();
+                    $scope.showMsg('错误', '服务器错误');
+                })
+            });
+        };
+
         $scope.export = function () {
             if ($scope.selectparams.dzzdm != "") {
                 var params = "?1=1";

+ 15 - 0
src/main/resources/static/app/main/partyTwoExt/mzpyxx/edit.html

@@ -64,6 +64,21 @@
                                           class="error">必填.</span>
                                 </td>
                             </tr>
+                            <tr ng-if="dataModel.pyjg == '30'">
+                                <th>
+                                    不合格处置情况
+                                </th>
+                                <td ng-class="{ 'has-error' : this.editForm.pyjcqk.$invalid && this.editForm.$submitted}">
+                                    <select class="form-control form-control show-tick"
+                                            ng-model="dataModel.pyjcqk"
+                                            ng-options="type.BM as type.HZMC for type in pyczqkList"
+                                            name="pyjcqk">
+                                        <option value="">--请选择--</option>
+                                    </select>
+                                    <span ng-show="this.editForm.pyjcqk.$invalid &&  this.editForm.$submitted"
+                                          class="error">必填.</span>
+                                </td>
+                            </tr>
                         </table>
                     </div>
                     <div class="form_foot">

+ 3 - 0
src/main/resources/static/app/main/partyTwoExt/mzpyxx/list.html

@@ -126,6 +126,9 @@
                             <button class="btn  btn-default1"
                                     ng-click="edit()">新增
                             </button>
+                            <button class="btn btn-default1"
+                                    ng-click="import()">导入
+                            </button>
                             <button class="btn  btn-default1"
                                     ng-click="export()">导出
                             </button>

+ 65 - 1
src/main/resources/static/app/main/partyTwoExt/mzpyxx/list.js

@@ -1,5 +1,5 @@
 (function ($app) {
-    $app.module('gtPartyApp').controller('mzpyxxCtrl', function ($scope, $http, $modal, $ocLazyLoad, $timeout, $alert, $loading, $state, AuthUser, $stateParams, $bsRouterState) {
+    $app.module('gtPartyApp').controller('mzpyxxCtrl', function ($scope, $http, $modal, $ocLazyLoad, $timeout, $alert, $loading, $state, AuthUser, $stateParams, $bsRouterState, $excel) {
         $state.params = $bsRouterState.$params($scope);
         $scope.isShow = false;
         $scope.moreTxt = "更多";
@@ -121,6 +121,17 @@
 
             });
         };
+        $scope.getPyczqkList = function () {
+            $http({
+                method: 'get',
+                url: '../../api/partyTowExt/getMzpybhgclqkList',
+                params: { }
+            }).then(function (result) {
+                $scope.pyczqkList = result.data.item;
+            }, function (resp) {
+
+            });
+        };
 
         $scope.edit = function (id) {
             editModal.params = {
@@ -151,6 +162,58 @@
             }
         };
 
+        // 导入参数设置
+        $scope.excelDnpxxxConfig = {
+            filetype: 1,
+            columns: {
+                '姓名': 'userName',
+                '评议开始日期': 'kzpyrq',
+                '评议结束日期': 'jspyrq',
+                '评议结果': 'pyjg',
+                '不合格处理情况': 'pyjcqk',
+            },
+            errorcolumns: {
+                'userName': '姓名',
+                'kzpyrq': '评议开始日期',
+                'jspyrq': '评议结束日期',
+                'pyjg': '评议结果',
+                'pyjcqk': '不合格处理情况',
+                'errorInfo': '错误信息'
+            },
+            readonly: false,
+            templateUrl: '/doc/template/党员民主评议导入模板.xlsx'
+        };
+
+        $scope.import = function () {
+            $excel.addFile($scope.excelDnpxxxConfig).then(function (items) {
+                $loading.show();
+                $http({
+                    method: "post",
+                    url: "../../api/partyTowExt/importMzpy",
+                    data: {
+                        mzpyList: JSON.stringify(items)
+                    }
+                }).then(function (result) {
+                    $loading.hide();
+                    if (result.data.success) {
+                        $scope.loadData();
+                        $scope.showMsg('成功', result.data.msg, 3);
+                    } else {
+                        if (result.data.item.length > 0) {
+                            $scope.showMsg('错误', '导入失败,存在错误数据,请修改后重新导入!', 20);
+                            $excel.showErrorInfo(result.data.item);
+                        } else {
+                            $scope.showMsg(result.data.msg);
+                        }
+                    }
+
+                }, function (resp) {
+                    $loading.hide();
+                    $scope.showMsg('错误', '服务器错误');
+                })
+            });
+        };
+
         $scope.export = function () {
             if ($scope.selectparams.dzzdm != "") {
                 var params = "?1=1";
@@ -163,6 +226,7 @@
         };
         //数据初始化
         $scope.getPyjgList();
+        $scope.getPyczqkList();
 
         $scope.showMsg = function (title, content) {
             $alert({

+ 100 - 0
src/main/resources/static/app/main/partyTwoExt/mzpyxx/mzpyTotal.html

@@ -0,0 +1,100 @@
+<titlemenu></titlemenu>
+<div class="dj-list">
+    <div class="dj-list-body">
+        <div party-tree data-selectdzzdm="treeparams.selectdzzdm" data-selectdzzmc="treeparams.selectdzzmc"
+             data-defaultselected="treeparams.defaultselected" data-isunfold="treeparams.isunfold"
+             data-showdxz="treeparams.showdxz"></div>
+        <div class="dj-list-content">
+            <div class="card">
+                <div activate-input activate-select class="header search-header">
+                    <div fold-partytree data-isunfold="treeparams.isunfold"></div>
+                    <div class="search-param-panel">
+                        <div class="search-input">
+                            <form class="form-horizontal">
+                                <div class="row clearfix form-inline">
+                                    <div class="col-lg-2 col-md-2 dj-label">
+                                        <label>当前选中组织</label>
+                                    </div>
+                                    <div class="col-lg-2 col-md-2">
+                                        <div class="form-group">
+                                            <div class="form-line">
+                                                <div class="input-group input-group-search">
+                                                    <input name="selectdzzmc" type="text" style="min-width: 90px"
+                                                           ng-model="treeparams.selectdzzmc" class="form-control"
+                                                           ng-disabled="true"/>
+                                                    <span class="input-group-addon"
+                                                          ng-click="setisunfold()">选择</span>
+                                                </div>
+                                            </div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </form>
+                        </div>
+                        <div class="search-btn" style="margin-right: 20px;">
+                            <div style="min-width: 13em">
+                                <button class="btn btn-default1"
+                                        ng-click="search()">查询
+                                </button>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="search-btn" style="margin-right: 20px;">
+                        <div style="float: right">
+
+                        </div>
+                    </div>
+                </div>
+                <div class="body">
+                    <div class="zero-list-table-panel">
+                        <div class="zero-source-table-div">
+                            <table class="table table-bordered table-striped table-hover js-basic-example dataTable text-nowrap">
+                                <thead>
+                                <tr>
+                                    <!-- 第一行 -->
+                                    <th rowspan="2">序号</th>
+                                    <th rowspan="2">基层党组织</th>
+                                    <th colspan="6">党员评议结果</th>
+                                    <th rowspan="2">不合格党员处理情况</th>
+                                </tr>
+                                <tr>
+                                    <!-- 第二行 -->
+                                    <th>优秀名额</th>
+                                    <th>优秀名单</th>
+                                    <th>合格名额</th>
+                                    <th>合格名单</th>
+                                    <th>基本合格名额</th>
+                                    <th>不合格名额</th>
+                                </tr>
+                                </thead>
+                                <tbody>
+                                    <tr ng-repeat="it in dataList">
+                                        <th>{{$index + 1}}</th>
+                                        <th>{{it.DZZMC}}</th>
+                                        <th>{{it.yxCount}}</th>
+                                        <th>{{it.yxmd}}</th>
+                                        <th>{{it.hgCount}}</th>
+                                        <th>{{it.hgmd}}</th>
+                                        <th>{{it.jbhgCount}}</th>
+                                        <th>{{it.bhgCount}}</th>
+                                        <th>
+                                            <p>开除党籍{{it.kcdjcfCount}}人</p>
+                                            <p>劝其退党{{it.qqtdcfCount}}人</p>
+                                            <p>限期改正{{it.qxgzcfCount}}人</p>
+                                            <p>党内除名{{it.dncmcfCount}}人</p>
+                                            <p>受其他党纪处分{{it.qtdjcfCount}}人</p>
+                                            <p>受其他处置{{it.qtcfCount}}人</p>
+                                        </th>
+                                    </tr>
+                                    <tr ng-if="dataList.length==0">
+                                        <td colspan="13" style="text-align:center">暂无数据</td>
+                                    </tr>
+                                </tbody>
+                            </table>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>

+ 91 - 0
src/main/resources/static/app/main/partyTwoExt/mzpyxx/mzpyTotal.js

@@ -0,0 +1,91 @@
+(function ($app) {
+    $app.module('gtPartyApp').controller('mzpxyTotalCtrl', function ($scope, $http, $modal, $ocLazyLoad, $alert, $loading, $state, $bsRouterState, AuthUser) {
+        $state.params = $bsRouterState.$params($scope);
+        $scope.isShow = false;
+        $scope.moreTxt = "更多";
+
+        //定义数据集合
+        $scope.loginUserId = AuthUser.getUser().Id;
+        $scope.dataList = []; //列表数据
+
+        //组织树参数
+        $scope.treeparams = {
+            isunfold: false,//组织结构树展开收缩
+            selectdzzdm: "",
+            selectdzzmc: "",
+            defaultselected: $state.params.dzzdm,
+            showdxz: 0
+        };
+
+        //查询参数
+        $scope.selectparams = {
+            pageindex: 1,
+            pagesize: 10,
+            dzzdm: '',//党组织代码
+        };
+        $scope.resetparams = {};
+        angular.extend($scope.resetparams, $scope.selectparams);
+
+        $scope.$watch("treeparams.selectdzzdm", function (newVal, oldVal) {
+            if (newVal != "") {
+
+                if ($scope.treeparams.defaultselected != "" && $scope.treeparams.defaultselected != null &&
+                    $scope.treeparams.defaultselected != $scope.treeparams.selectdzzdm)
+                    return;
+
+                $scope.selectparams.dzzdm = $scope.treeparams.selectdzzdm;
+                $scope.resetparams.dzzdm = $scope.treeparams.selectdzzdm;
+
+                $scope.loadData();
+            }
+        });
+
+        //查询
+        $scope.search = function () {
+            $scope.loadData();
+        };
+
+        //加载列表数据
+        $scope.loadData = function () {
+            $http
+            ({
+                method: 'get', url: '../../api/partyTowExt/getMzpyTotalList', params: $scope.selectparams
+            }).then(function (result) {
+                $scope.dataList = result.data.item;
+            });
+        };
+
+        $scope.showMsg = function (title, content) {
+            $alert({
+                title: title + ':',
+                content: content,
+                placement: 'top',
+                type: 'info',
+                show: true,
+                duration: 3
+            });
+
+        };
+
+        $scope.isShowClick = function () {
+            $scope.isShow = !$scope.isShow;
+            if ($scope.moreTxt == "更多") {
+                $scope.moreTxt = "收起";
+            } else if ($scope.moreTxt == "收起") {
+                $scope.moreTxt = "更多";
+            }
+        };
+        $scope.setisunfold = function () {
+            $scope.treeparams.isunfold = !$scope.treeparams.isunfold;
+            $scope.$emit('menudatas.toggle', !$scope.treeparams.isunfold);
+        };
+        $scope.resetSearch = function () {
+            $scope.selectparams = {};
+
+            angular.extend($scope.selectparams, $scope.resetparams);
+            $scope.loadData();
+        }
+
+        $scope.search();
+    });
+})(angular);

+ 56 - 0
src/main/resources/static/app/main/partyTwoExt/ztdrxx/edit.html

@@ -81,6 +81,62 @@
                     </tr>
                 </table>
             </div>
+            <div class="dj-formtable">
+                <div class="table-responsive list-table-panel">
+                    <div class="list-table-title">
+                        <div class="table-title">
+                            出席人员列表({{dataModel.personnellist.length}}人)
+                        </div>
+                        <div class="table-tool">
+                            <button type="button" class="btn btn-primary dropdown-toggle"
+                                    data-dataoptions="selectUserlist" title="新增"
+                                    ng-click="selectUser()"
+                                    bsselectdata-pro>
+                                新增
+                            </button>
+                        </div>
+                    </div>
+                    <div class="outoflow" style="max-height: 300px;">
+                        <table class="table table-bordered table-striped table-hover js-basic-example dataTable text-nowrap">
+                            <thead>
+                            <tr>
+                                <th>序号</th>
+                                <th>姓名</th>
+                                <th>是否缺勤</th>
+                                <th>缺勤原因</th>
+                                <th>操作</th>
+                            </tr>
+                            </thead>
+                            <tbody>
+                            <tr ng-repeat="it in dataModel.personnellist">
+                                <td scope="row">{{$index+1}}</td>
+                                <td>{{it.xm}}</td>
+                                <td>
+                                    <input type="checkbox" id="{{pageId}}_checkbox_{{$index+1}}"
+                                           class="filled-in chk-col-red" ng-checked="it.isabsenteeism==1"
+                                           ng-click="it.isabsenteeism==1?it.isabsenteeism=0:it.isabsenteeism=1"/>
+                                    <label class="checkbox_lable" style="height: 10px;"
+                                           for="{{pageId}}_checkbox_{{$index+1}}">{{it.isabsenteeism == 1 ? "是" : "否"}}</label>
+                                </td>
+                                <td>
+                                            <textarea name="absenteeismcause" ng-model="it.absenteeismcause"
+                                                      class="form-control" rows="3"></textarea>
+                                </td>
+                                <td class="text-center">
+                                    <button class="btn td-btn bg-pink waves-effect"
+                                            ng-click="deleteUser($index)" title="删除">
+                                        删除
+                                    </button>
+                                </td>
+                            </tr>
+                            <tr ng-if="dataModel.personnellist.length<=0">
+                                <td colspan="7" style="text-align:center">暂无数据</td>
+                            </tr>
+                            </tbody>
+                        </table>
+                    </div>
+                </div>
+            </div>
             <div class="form_foot" >
                 <button type="button" class="btn btn-default" ng-click="pagechange();">取消</button>
                 <button type="submit"

+ 68 - 0
src/main/resources/static/app/main/partyTwoExt/ztdrxx/edit.js

@@ -59,6 +59,74 @@
             }
         }, true);
 
+        // 弹窗选择出席人员
+        $scope.selectUserlist = {
+            url: "../../api/partyUser/getPartyUserList",
+            title: '人员选择',
+            isMulti: true,
+            selectData: {xm: '姓名', szdzb: '所在组织架构'},
+            columns: {XM: '姓名', XBMC: '性别', JG: '籍贯', DZZMC: '所在组织架构'},
+            selectLabelKey: 'XM',
+            selectValuekey: 'RYJBXXBS',
+            selectedValueData: '',
+            selectedLabeData: '',
+            selectedJData: [],
+            selectParams: {
+                dzzdm: $scope.dataModel.partycode,
+                removeUsers: '',
+                //szdzbdm: $scope.dataModel.shyktype == 2 ? $scope.dataModel.partycode : '',
+                ryzt: '2,3' //预备党员,正式党员
+            }
+        };
+        $scope.$watch('selectUserlist.selectedValueData', function (newVal) {
+            if (newVal != '' && newVal != undefined) {
+                $http({
+                    method: 'get',
+                    url: '../../api/partyUser/getPartyUserList',
+                    params: {
+                        userIds: newVal,
+                        pageindex: 1,
+                        pagesize: 10000
+                    }
+                }).then(function (result) {
+                    $loading.hide();
+                    result.data.item.list.forEach(item => {
+                        item.SIGNINSTATUS = 2;
+                    });
+                    let data = [];
+                    result.data.item.list.forEach(x=>{
+                        data.push({rybm: x.RYBM, ryjbxxbs: x.RYJBXXBS, xm: x.XM, isabsenteeism: 0, absenteeismcause: ''});
+                    })
+                    $scope.dataModel.personnellist = $scope.dataModel.personnellist.concat(data);
+
+                    $scope.selectUserlist.selectedValueData = "";
+                    $scope.selectUserlist.selectedLabeData = "";
+                }, function (resp) {
+                    $loading.hide();
+                    $scope.showMsg('错误', '服务器错误');
+                });
+            }
+        });
+        $scope.$watch('dataModel.personnellist', function (newVal) {
+            if($scope.dataModel.personnellist){
+                $scope.setRemoveUser();
+            }
+        }, true);
+
+        $scope.setRemoveUser = function () {
+            $scope.selectUserlist.selectParams.removeUsers = "";
+            angular.forEach($scope.dataModel.personnellist, function (val, index) {
+                $scope.selectUserlist.selectParams.removeUsers += val.ryjbxxbs + ','
+            });
+        };
+
+        //人员操作
+        $scope.deleteUser = function (index) {
+            if (confirm("请确认是否需要移除参会人员!")) {
+                $scope.dataModel.personnellist.splice(index, 1);
+            }
+        };
+
         $scope.loadData = function () {
             $http.get("../../api/partyTowExt/getZtdrxx", {
                 params: {

+ 32 - 0
src/main/resources/static/app/main/partyTwoExt/ztdrxx/view.html

@@ -47,6 +47,38 @@
                     </tr>
                 </table>
             </div>
+            <div class="dj-formtable">
+                <div class="table-responsive list-table-panel">
+                    <div class="list-table-title">
+                        <div class="table-title">
+                            出席人员列表({{dataModel.personnellist.length}}人)
+                        </div>
+                    </div>
+                    <div class="outoflow" style="max-height: 300px;">
+                        <table class="table table-bordered table-striped table-hover js-basic-example dataTable text-nowrap">
+                            <thead>
+                            <tr>
+                                <th>序号</th>
+                                <th>姓名</th>
+                                <th>是否缺勤</th>
+                                <th>缺勤原因</th>
+                            </tr>
+                            </thead>
+                            <tbody>
+                            <tr ng-repeat="it in dataModel.personnellist">
+                                <td scope="row">{{$index+1}}</td>
+                                <td>{{it.xm}}</td>
+                                <td>{{it.isabsenteeismname}}</td>
+                                <td style="min-width: 150px !important;word-wrap: break-word;word-break: break-all;white-space: normal;">{{it.absenteeismcause}}</td>
+                            </tr>
+                            <tr ng-if="userList.length<=0">
+                                <td colspan="7" style="text-align:center">暂无数据</td>
+                            </tr>
+                            </tbody>
+                        </table>
+                    </div>
+                </div>
+            </div>
             <div class="form_foot">
                 <button type="button" class="btn btn-default" ng-click="pagechange();">关闭</button>
             </div>

BIN
src/main/resources/static/doc/template/党员民主评议导入模板.xlsx


BIN
src/main/resources/static/doc/template/党员评优导入模板.xlsx