Procházet zdrojové kódy

Merge remote-tracking branch 'origin/master'

lizeyu před 9 měsíci
rodič
revize
1bc0b5358a

+ 4 - 0
.idea/GHSCPartyBuild.iml

@@ -5,4 +5,8 @@
       <configuration />
     </facet>
   </component>
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
 </module>

+ 0 - 8
.idea/modules.xml

@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="ProjectModuleManager">
-    <modules>
-      <module fileurl="file://$PROJECT_DIR$/.idea/GHSCPartyBuild.iml" filepath="$PROJECT_DIR$/.idea/GHSCPartyBuild.iml" />
-    </modules>
-  </component>
-</project>

+ 75 - 4
src/main/java/com/ghsc/partybuild/controller/CheckDataController.java

@@ -7,13 +7,23 @@ import com.ghsc.partybuild.model.*;
 import com.ghsc.partybuild.service.*;
 import com.ghsc.partybuild.util.DateUtils;
 import com.ghsc.partybuild.util.ExcelHelper;
+import com.ghsc.partybuild.util.FtpHelper;
 import com.ghsc.partybuild.util.StringUtils;
 import com.github.pagehelper.PageInfo;
+import org.apache.commons.net.ftp.FTP;
+import org.apache.commons.net.ftp.FTPClient;
+import org.apache.tools.zip.ZipEntry;
+import org.apache.tools.zip.ZipOutputStream;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.URLEncoder;
 import java.util.*;
 
 @RestController
@@ -26,6 +36,8 @@ public class CheckDataController {
     private UserService userService;
     @Autowired
     private DateUtils dateUtils;
+    @Autowired
+    FtpHelper ftpHelper;
 
     @ResponseBody
     @GetMapping("/getCheckNameList")
@@ -83,6 +95,7 @@ public class CheckDataController {
         res.setItem(checkDataService.getCheckName(id));
         return res;
     }
+
     @ResponseBody
     @GetMapping("/getCheckDataList")
     public RequsetData<PageInfo<HashMap<String, Object>>> getCheckDataList(int pageindex, int pagesize, Integer year, String dzzdm, String remark) {
@@ -93,7 +106,7 @@ public class CheckDataController {
 
     @ResponseBody
     @PostMapping("/saveCheckdata")
-    public RequsetData<Integer> saveCheckdata(@RequestBody PtCheckdata item,String userid,String username) {
+    public RequsetData<Integer> saveCheckdata(@RequestBody PtCheckdata item, String userid, String username) {
         RequsetData<Integer> res = new RequsetData<>();
         try {
             item.setCheckdatauserid(userService.getLoginUser().getUserid());
@@ -102,7 +115,7 @@ public class CheckDataController {
             item.setCreatetime(new Date());
             item.setCreateuserid(userService.getLoginUser().getUserid());
             item.setCreateusername(userService.getUserInfobyId(userService.getLoginUser().getUserid()).getName());
-            int id = checkDataService.saveCheckdata(item,userid,username);
+            int id = checkDataService.saveCheckdata(item, userid, username);
             res.setItem(id);
             res.setMsg("保存成功!");
         } catch (Exception ex) {
@@ -125,12 +138,13 @@ public class CheckDataController {
         }
         return res;
     }
+
     @RequestMapping(value = "/exportCheckData", method = RequestMethod.GET)
     public void exportCheckData(HttpServletResponse response,
-                               Integer year, String dzzdm, String remark) throws Exception {
+                                Integer year, String dzzdm, String remark) throws Exception {
 
         /**查询数据**/
-        List<HashMap<String, Object>> dataList = checkDataService.getCheckDataList(1,9999, year, dzzdm, remark).getList();
+        List<HashMap<String, Object>> dataList = checkDataService.getCheckDataList(1, 9999, year, dzzdm, remark).getList();
 
         ExcelHelper excelHelper = new ExcelHelper();
         ExcelHelper.ExcelData data = excelHelper.new ExcelData();
@@ -163,4 +177,61 @@ public class CheckDataController {
 
         excelHelper.exportExcel(response, "考核材料信息.xlsx", data);
     }
+
+    @RequestMapping("/downCheckDataZip")
+    public String downCheckDataZip(HttpServletResponse response,
+                                   String year,
+                                   HttpServletRequest request) {
+        ZipOutputStream out=null;
+        String fileName = String.format("%s年度考核材料.zip", year);
+        try {
+            ByteArrayOutputStream fileOStream = new ByteArrayOutputStream();
+            out = new ZipOutputStream(fileOStream);
+            out.setEncoding("gbk");
+            List<HashMap<String, Object>> dataList = checkDataService.getCheckDataFleList(year);
+            FTPClient ftpClient = new FTPClient();
+            ftpHelper.connectToServer(ftpClient);
+            ftpClient.enterLocalPassiveMode();
+            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
+
+            for (HashMap<String, Object> item : dataList) {
+                //打包显示的文件名
+                String fileExt = item.get("fileurl").toString().substring(item.get("fileurl").toString().lastIndexOf(".")).toLowerCase();
+                out.putNextEntry(new ZipEntry(String.format("%s_%s(%s)%s", item.get("dzzdm").toString(), item.get("checkdatausername"), item.get("dzzmc"), fileExt)));
+                ftpClient.retrieveFile(item.get("fileurl").toString(), out);
+                out.flush();
+                out.closeEntry();
+            }
+            ftpHelper.closeConnect(ftpClient);
+            //所有文件写完后一定要关闭输出流,否则文件下载会不完整。
+            out.flush();
+            out.close();
+            //将zip文件写入响应
+            String name;
+            String agent = request.getHeader("USER-AGENT");
+            if (agent != null && agent.toLowerCase().indexOf("firefox") > 0) {
+                name = "=?UTF-8?B?" + (Base64.getEncoder().encodeToString(fileName.getBytes("UTF-8"))) + "?=";
+            } else {
+                name = URLEncoder.encode(fileName, "UTF-8");
+            }
+            response.setContentType("application/force-download");// 设置强制下载不打开
+            response.setContentType("multipart/form-data;charset=UTF-8");
+            response.setContentType("application/octet-stream");
+            response.addHeader("Content-Disposition", "attachment;filename=" + name);
+
+            OutputStream os = response.getOutputStream();
+            fileOStream.writeTo(os);
+            os.flush();
+        } catch (Exception e) {
+            if (out != null) {
+                try {
+                    out.close();
+                } catch (IOException ie) {
+                    ie.printStackTrace();
+                }
+            }
+            throw new RuntimeException();
+        }
+        return "";
+    }
 }

+ 18 - 5
src/main/java/com/ghsc/partybuild/controller/SHYKController.java

@@ -954,7 +954,7 @@ public class SHYKController {
         return result;
     }
 
-    @ResponseBody
+    /*@ResponseBody
     @GetMapping("/getPartyPlanList")
     public RequsetData<PageInfo<HashMap<String, Object>>> getPartyPlanList(@RequestParam("pageindex") int pageIndex, @RequestParam("pagesize") int pageSize,
                                                                            @RequestParam(required = false) String dzzdm, @RequestParam(required = false) Integer zzfbType) {
@@ -962,15 +962,26 @@ public class SHYKController {
         RequsetData<PageInfo<HashMap<String, Object>>> result = new RequsetData<>();
         result.setItem(shykService.getPartyPlanList(pageIndex, pageSize, dzzdm, zzfbType));
         return result;
+    }*/
+
+    @ResponseBody
+    @GetMapping("/getMeetingTargetList")
+    public RequsetData<List<MeetingTargetVo>> getMeetingTargetList(@RequestParam(required = false) String partyCode) {
+
+        RequsetData<List<MeetingTargetVo>> result = new RequsetData<>();
+        result.setItem(shykService.getMeetingTargetList());
+        return result;
     }
 
     @ResponseBody
     @RequestMapping("/savePartyPlan")
-    public RequsetData<String> savePartyPlan(@RequestBody ShykPartyplan model) {
+    public RequsetData<String> savePartyPlan(@RequestBody Map<String, Object> reqMap) {
 
-        RequsetData<String> res = shykService.savePartyPlan(model);
+        String partyCode = reqMap.get("partyCode").toString();
+        List<MeetingTargetVo> targetList = JsonMapper.jsonToObject(reqMap.get("settingList").toString(), new TypeReference<List<MeetingTargetVo>>() {
+        });
 
-        return res;
+        return RespGenerstor.success(shykService.savePartyPlan(partyCode, targetList, userService.getLoginUser().getUserid()));
     }
 
     @RequestMapping(value = "/exportMeetingTotal", method = RequestMethod.GET)
@@ -1180,8 +1191,10 @@ public class SHYKController {
 
             PartyPlanMultiVo dataModel = mapper.readValue(mapper.writeValueAsString(reqMap.get("dataModel")), PartyPlanMultiVo.class);
             String dataDzzdm = reqMap.get("dataDzzdm").toString();
+            List<MeetingTargetVo> targetList = JsonMapper.jsonToObject(reqMap.get("settingList").toString(), new TypeReference<List<MeetingTargetVo>>() {
+            });
 
-            count = shykService.savePartyPlanMulti(dataModel, dataDzzdm);
+            count = shykService.savePartyPlanMulti(dataModel, dataDzzdm, targetList, userService.getLoginUser().getUserid());
 
 
         } catch (Exception e) {

+ 9 - 5
src/main/java/com/ghsc/partybuild/mapper/SHYKCQuery.java

@@ -1,6 +1,7 @@
 package com.ghsc.partybuild.mapper;
 
 import com.ghsc.partybuild.vo.shyk.MeetingDemocracyReviewVo;
+import com.ghsc.partybuild.vo.shyk.MeetingTargetVo;
 import com.ghsc.partybuild.vo.shyk.MeetingTypeVo;
 import org.apache.ibatis.annotations.Param;
 
@@ -34,7 +35,7 @@ public interface SHYKCQuery {
     List<HashMap<String, Object>> selectMeetingList(@Param("partyCode") String partyCode, @Param("meetingName") String meetingName, @Param("meetingAddress") String meetingAddress,
                                                     @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("shykStatus") Integer shykStatus, @Param("shykType") List<Integer> shykType,
                                                     @Param("userId") String userId, @Param("myMeeting") Integer myMeeting,
-                                                    @Param("day") String day, @Param("page") Integer page, @Param("rows") Integer rows,@Param("ssdzzdm") String ssdzzdm);
+                                                    @Param("day") String day, @Param("page") Integer page, @Param("rows") Integer rows, @Param("ssdzzdm") String ssdzzdm);
 
     /**
      * 选择议题
@@ -75,6 +76,7 @@ public interface SHYKCQuery {
 
     /**
      * 删除会议民主评议成员
+     *
      * @param meetingId
      * @return
      */
@@ -201,12 +203,14 @@ public interface SHYKCQuery {
      */
     int deleteMeetingEvaluateProject(String userevaluateId);
 
-    List<HashMap<String, Object>> selectMeetingListByApp(@Param("dzzdm") String dzzdm, @Param("userId") String userId, @Param("type") Integer type, @Param("shykTypeList") List<String> shykTypeList, @Param("title") String title,@Param("startDate") String startDate,
-                                                         @Param("endDate")String endDate);
+    List<HashMap<String, Object>> selectMeetingListByApp(@Param("dzzdm") String dzzdm, @Param("userId") String userId, @Param("type") Integer type, @Param("shykTypeList") List<String> shykTypeList, @Param("title") String title, @Param("startDate") String startDate,
+                                                         @Param("endDate") String endDate);
+
 
+    List<HashMap<String, Object>> selectMeetingPlanTotalList(@Param("dzzdm") String dzzdm, @Param("dzzdmSearch") String dzzdmSearch, @Param("year") Integer year, @Param("quarter") Integer quarter, @Param("month") Integer month);
 
-    List<HashMap<String,Object>> selectMeetingPlanTotalList(@Param("dzzdm") String dzzdm,@Param("dzzdmSearch") String dzzdmSearch,@Param("year") Integer year,@Param("quarter") Integer quarter,@Param("month") Integer month);
+    List<HashMap<String, Object>> selectMyMeetingListForApp(@Param("userId") String userId);
 
-    List<HashMap<String,Object>> selectMyMeetingListForApp(@Param("userId") String userId);
+    List<MeetingTargetVo> selectMeetingTargetList();
 
 }

+ 3 - 0
src/main/java/com/ghsc/partybuild/mapper/cquery/PtCheckdataCQuery.java

@@ -1,5 +1,6 @@
 package com.ghsc.partybuild.mapper.cquery;
 
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
 import java.util.HashMap;
@@ -11,4 +12,6 @@ public interface PtCheckdataCQuery {
     List<HashMap<String,Object>> selectCheckNameList(Integer year, Integer quarter, String dzzdm, String checkUserName, String partyCode,Integer recordStatus);
 
     List<HashMap<String,Object>> selectCheckDataList(Integer year, String dzzdm, String remark);
+
+    List<HashMap<String,Object>> selectCheckDataFleList(@Param("year") String year);
 }

+ 2 - 0
src/main/java/com/ghsc/partybuild/service/CheckDataService.java

@@ -22,6 +22,8 @@ public interface CheckDataService {
 
     PageInfo<HashMap<String, Object>> getCheckDataList(int pageIndex, int pageSize, Integer year, String dzzdm, String remark);
 
+    List<HashMap<String, Object>> getCheckDataFleList( String year);
+
     int saveCheckdata(PtCheckdata item,String userid,String username);
 
     PtCheckdata getCheckdata(String id);

+ 5 - 2
src/main/java/com/ghsc/partybuild/service/SHYKService.java

@@ -1,6 +1,7 @@
 package com.ghsc.partybuild.service;
 
 import com.ghsc.partybuild.vo.shyk.MeetingDemocracyReviewVo;
+import com.ghsc.partybuild.vo.shyk.MeetingTargetVo;
 import com.ghsc.partybuild.vo.shyk.MeetingTypeVo;
 import com.ghsc.partybuild.vo.shyk.ShykMeetingVo;
 import com.github.pagehelper.PageInfo;
@@ -302,7 +303,7 @@ public interface SHYKService {
      * @param model
      * @return
      */
-    RequsetData<String> savePartyPlan(ShykPartyplan model);
+    Integer savePartyPlan(String partyCode,List<MeetingTargetVo> targetList,String userId);
 
     /**
      * 我的会议
@@ -362,7 +363,7 @@ public interface SHYKService {
      */
     List<HashMap<String,Object>> getMeetingEvaluateProjectList(String meetingUserId);
 
-    int savePartyPlanMulti(PartyPlanMultiVo dataModel, String dataDzzdm);
+    int savePartyPlanMulti(PartyPlanMultiVo dataModel, String dataDzzdm,List<MeetingTargetVo> targetList, String userId);
 
     /**
      * @Description //TODO 获取会议议题模板内容
@@ -378,4 +379,6 @@ public interface SHYKService {
 
     PageInfo<HashMap<String, Object>> getMyMeetingListForApp(int page, int rows,String userId);
 
+    List<MeetingTargetVo> getMeetingTargetList();
+
 }

+ 7 - 0
src/main/java/com/ghsc/partybuild/service/impl/CheckDataServiceImpl.java

@@ -102,6 +102,13 @@ public class CheckDataServiceImpl implements CheckDataService {
         return result;
     }
     @Override
+    public List<HashMap<String, Object>> getCheckDataFleList(String year) {
+
+        List<HashMap<String, Object>> list = checkdataCQuery.selectCheckDataFleList(year);
+
+        return list;
+    }
+    @Override
     public int saveCheckdata(PtCheckdata item,String userid,String username){
         PtCheckdata dbItem = CheckdataMapper.selectByPrimaryKey(item.getDataid());
         if(dbItem==null){

+ 35 - 80
src/main/java/com/ghsc/partybuild/service/impl/SHYKServiceImpl.java

@@ -2,6 +2,7 @@ package com.ghsc.partybuild.service.impl;
 
 import com.ghsc.partybuild.vo.AssetinfoVo;
 import com.ghsc.partybuild.vo.shyk.MeetingDemocracyReviewVo;
+import com.ghsc.partybuild.vo.shyk.MeetingTargetVo;
 import com.ghsc.partybuild.vo.shyk.MeetingTypeVo;
 import com.ghsc.partybuild.vo.shyk.ShykMeetingVo;
 import com.github.pagehelper.PageHelper;
@@ -86,6 +87,9 @@ public class SHYKServiceImpl implements SHYKService {
     @Autowired
     private ShykMeetingTypeMapper shykMeetingTypeMapper;
 
+    @Autowired
+    private ShykPartytargetMapper shykPartytargetMapper;
+
 
     /**
      * @param page
@@ -172,12 +176,12 @@ public class SHYKServiceImpl implements SHYKService {
     }
 
     @Override
-    public List<MeetingDemocracyReviewVo> getMeetingDemocracyReviewList(String meetingId){
+    public List<MeetingDemocracyReviewVo> getMeetingDemocracyReviewList(String meetingId) {
         return shykcQuery.selectMeetingDemocracyReviewList(meetingId);
     }
 
     @Override
-    public List<MeetingTypeVo> getMeetingTypeList(String meetingId){
+    public List<MeetingTypeVo> getMeetingTypeList(String meetingId) {
         return shykcQuery.selectMeetingTypeList(meetingId);
     }
 
@@ -802,44 +806,20 @@ public class SHYKServiceImpl implements SHYKService {
     }
 
     @Override
-    public RequsetData<String> savePartyPlan(ShykPartyplan model) {
-        int result = 0;
-        ShykPartyplanExample exp = new ShykPartyplanExample();
-        exp.or().andPartycodeEqualTo(model.getPartycode());
-        List<ShykPartyplan> plans = partyplanMapper.selectByExample(exp);
-        if (plans == null || plans.size() == 0) {
-            model.setCreatetime(new Date());
-            model.setPlanid(UUID.randomUUID().toString());
-            model.setUpdatetime(new Date());
+    public Integer savePartyPlan(String partyCode, List<MeetingTargetVo> targetList, String userId) {
+        ShykPartytargetExample exp = new ShykPartytargetExample();
+        ShykPartytargetExample.Criteria cri = exp.or();
+        cri.andPartycodeEqualTo(partyCode);
+        shykPartytargetMapper.deleteByExample(exp);
 
-            model.setOperatestate("A");
-            model.setOperatetime(new Date());
-            model.setSyncstate("N");
+        targetList.forEach(item -> {
+            item.setCreatetime(new Date());
+            item.setPartycode(partyCode);
+            item.setCreateuserid(userId);
+            shykPartytargetMapper.insert(item);
+        });
 
-            result = partyplanMapper.insert(model);
-        } else {
-            ShykPartyplan plan = plans.get(0);
-            plan.setUpdatetime(new Date());
-            plan.setPlantypeBranch(model.getPlantypeBranch());
-            plan.setPlantypeClass(model.getPlantypeClass());
-            plan.setPlantypeGroup(model.getPlantypeGroup());
-            plan.setPlantypeUser(model.getPlantypeUser());
-
-            plan.setOperatestate("M");
-            plan.setOperatetime(new Date());
-            plan.setSyncstate("N");
-
-            result = partyplanMapper.updateByPrimaryKey(plan);
-        }
-        RequsetData<String> res = new RequsetData<String>();
-        if (result > 0) {
-            res.setSuccess(true);
-            res.setMsg("操作成功");
-        } else {
-            res.setSuccess(false);
-            res.setMsg("操作失败");
-        }
-        return res;
+        return targetList.size();
     }
 
     private List<HashMap<String, Object>> getPartyPlan(List<HashMap<String, Object>> planList, String partyCode) {
@@ -1161,56 +1141,26 @@ public class SHYKServiceImpl implements SHYKService {
     }
 
     @Override
-    public int savePartyPlanMulti(PartyPlanMultiVo dataModel, String dataDzzdm) {
+    public int savePartyPlanMulti(PartyPlanMultiVo dataModel, String dataDzzdm, List<MeetingTargetVo> targetList, String userId) {
         int count = 0;
         List<HashMap<String, Object>> partyList = partyCquery.selectPartyList(appConfig.gddwdm, null, null, dataDzzdm, dataModel.getPartyType(), null, null, null, null, null, null, null, null, null, null, null, null, null);
         List<String> dzzdms = partyList.stream().map(it -> it.get("DZZDM").toString()).collect(Collectors.toList());
 
-        ShykPartyplanExample exp = new ShykPartyplanExample();
-        ShykPartyplanExample.Criteria cri = exp.or().andPartycodeIn(dzzdms);
-        List<ShykPartyplan> shykPartyplanList = partyplanMapper.selectByExample(exp);
+        ShykPartytargetExample exp = new ShykPartytargetExample();
+        ShykPartytargetExample.Criteria cri = exp.or().andPartycodeIn(dzzdms);
+        shykPartytargetMapper.deleteByExample(exp);
 
         for (Integer i = 0; i < partyList.size(); i++) {
-            HashMap<String, Object> party = partyList.get(i);
-            String dzzdm = party.get("DZZDM").toString();
-            List<ShykPartyplan> dbModels = shykPartyplanList.stream().filter(it -> it.getPartycode().equals(dzzdm)).collect(Collectors.toList());
-
-            //未配置,新增
-            if (dataModel.getSettingType() == 0 && dbModels.size() <= 0) {
-                ShykPartyplan model = new ShykPartyplan();
-                model.setPlanid(UUID.randomUUID().toString());
-                model.setPartycode(dzzdm);
-                model.setPartyname(party.get("DZZMC").toString());
-                model.setPlantypeUser(dataModel.getPlantypeUser());
-                model.setPlantypeBranch(dataModel.getPlantypeBranch());
-                model.setPlantypeGroup(dataModel.getPlantypeGroup());
-                model.setPlantypeClass(dataModel.getPlantypeClass());
-                model.setCreatetime(new Date());
-                model.setUpdatetime(new Date());
-                model.setOperatestate("A");
-                model.setOperatetime(new Date());
-                model.setSyncstate("N");
-
-                count += partyplanMapper.insert(model);
-            }
-
-            //已配置,修改
-            if (dataModel.getSettingType() == 1 && dbModels.size() > 0) {
-                ShykPartyplan model = dbModels.get(0);
-                model.setPlantypeUser(dataModel.getPlantypeUser());
-                model.setPlantypeBranch(dataModel.getPlantypeBranch());
-                model.setPlantypeGroup(dataModel.getPlantypeGroup());
-                model.setPlantypeClass(dataModel.getPlantypeClass());
-                model.setUpdatetime(new Date());
-                model.setOperatestate("M");
-                model.setOperatetime(new Date());
-                model.setSyncstate("N");
-
-                count += partyplanMapper.updateByPrimaryKey(model);
-            }
+            Integer finalI = i;
+            targetList.forEach(item -> {
+                item.setCreatetime(new Date());
+                item.setPartycode(partyList.get(finalI).get("DZZDM").toString());
+                item.setCreateuserid(userId);
+                shykPartytargetMapper.insert(item);
+            });
         }
 
-        return count;
+        return partyList.size();
     }
 
     @Override
@@ -1269,4 +1219,9 @@ public class SHYKServiceImpl implements SHYKService {
         return result;
     }
 
+    @Override
+    public List<MeetingTargetVo> getMeetingTargetList() {
+        return shykcQuery.selectMeetingTargetList();
+    }
+
 }

+ 9 - 0
src/main/java/com/ghsc/partybuild/vo/shyk/MeetingTargetVo.java

@@ -0,0 +1,9 @@
+package com.ghsc.partybuild.vo.shyk;
+
+import com.ghsc.partybuild.model.ShykPartytarget;
+
+public class MeetingTargetVo extends ShykPartytarget {
+    public String partyName;
+    public String shykTypeName;
+    public String targetName;
+}

+ 13 - 0
src/main/resources/mapping/CQuery/PtCheckdataCQuery.xml

@@ -51,4 +51,17 @@
             and pcd.dzzdm like concat('%',#{dzzdm},'%')
         </if>
     </select>
+
+    <select id="selectCheckDataFleList" resultType="java.util.HashMap" parameterType="java.lang.String">
+        select  pcd.dataid, pcd.dzzdm, pcd.year, pcd.leadingdepartment, pcd.checkdatauserid, pcd.checkdatausername, pcd.recordstatus,
+                pcd.createtime, pcd.createuserid, pcd.createusername, pcd.updatetime, pcd.updateuserid, pcd.updateusername, pcd.remark
+                ,zz.dzzmc,cf.filename,cf.fileurl
+        from pt_checkData pcd inner join  ZZ_ZZQKXX zz on pcd.dzzdm = zz.DZZDM
+                              left join cf_file cf on pcd.dataId = cf.FILEREFID
+        <where>
+            <if test="year != null and year != ''">
+                and pcd.year = #{year}
+            </if>
+        </where>
+    </select>
 </mapper>

+ 14 - 0
src/main/resources/mapping/SHYKCQuery.xml

@@ -563,4 +563,18 @@
         order by BEGINTIME desc
     </select>
 
+    <select id="selectMeetingTargetList" resultType="com.ghsc.partybuild.vo.shyk.MeetingTargetVo">
+        select pt.partycode
+             ,p.dzzmc as partyName
+             ,pt.shyktype
+             ,pt.targettype
+             ,dic_type.DICVALUE as shykTypeName
+             ,dic_target.DICVALUE as targetName
+        from shyk_partytarget pt
+                 inner join zz_zzqkxx p on pt.partyCode = p.dzzdm
+                 inner join cf_dictionary dic_type on pt.shykType = dic_type.DICKEY and dic_type.DICTYPEKEY='shykType'
+                 inner join cf_dictionary dic_target on pt.targetType = dic_target.DICKEY and dic_target.DICTYPEKEY='SHYK_PartyPlan'
+        order by pt.partyCode,pt.shykType
+    </select>
+
 </mapper>

+ 1 - 1
src/main/resources/static/app/main/party/checkData/list.html

@@ -81,7 +81,7 @@
                     <div class="search-btn" style="margin-right: 20px;">
                         <div style="float: right">
                             <button class="btn  btn-default1"
-                                    ng-click="disable()">打包材料
+                                    ng-click="downCheckDataZip()">打包材料
                             </button>
                             <button class="btn  btn-default1"
                                     ng-click="export()">导出

+ 14 - 1
src/main/resources/static/app/main/party/checkData/list.js

@@ -197,7 +197,20 @@
                 });
             }
         };
-
+        $scope.downCheckDataZip = function () {
+            if($scope.selectparams.year==''||$scope.selectparams.year==null){
+                $scope.showMsg("消息", '请选择年度');
+                return;
+            }
+            if ($scope.selectparams.dzzdm != "") {
+                var params = "?1=1";
+                for (var p in $scope.selectparams) {
+                    if ($scope.selectparams[p] !== '' && $scope.selectparams[p] !== null)
+                        params += ("&" + p + "=" + encodeURI($scope.selectparams[p]));
+                }
+                window.open('../../api/checkdata/downCheckDataZip' + params);
+            }
+        };
         $scope.export = function () {
             if ($scope.selectparams.dzzdm != "") {
                 var params = "?1=1";

+ 15 - 19
src/main/resources/static/app/main/shyk/shykPlan.html

@@ -43,48 +43,44 @@
                     </div>
                 </div>
                 <div class="body">
-                    <div class="table-responsive list-table-panel">
-                        <table class="table table-bordered table-striped table-hover js-basic-example dataTable text-nowrap">
+                    <div class="table-responsive list-table-panel table-adapt">
+                        <table class="gt-table gt-table-bordered gt-table-evenodd">
                             <thead>
                             <tr>
                                 <th>序号</th>
                                 <th>组织名称</th>
                                 <th>是否设置</th>
-                                <th>党员大会</th>
-                                <th>支委会</th>
-                                <th>党小组会</th>
-                                <th>党课</th>
+                                <th ng-repeat="it in shyklxList">{{it.dicvalue}}</th>
                                 <th>操作</th>
                             </tr>
                             </thead>
                             <tbody>
-                            <tr ng-repeat="it in dataList">
-                                <td class="text-center"  style="background-color: #fff;">{{$index+1}}</td>
-                                <td  style="background-color: #fff;">{{it.DZZMC}}</td>
-                                <td class="text-center"><span ng-if="it.PLANID==null" style='color:red'>未设置</span>
-                                    <span ng-if="it.PLANID!=null">已设置</span>
+                            <tr ng-repeat="it in partyList" fixed-table-header>
+                                <td class="text-center" style="background-color: #fff;">{{$index + 1}}</td>
+                                <td style="background-color: #fff;">{{it.DZZMC}}</td>
+                                <td class="text-center">
+                                    <span ng-style="{'color':isSetting(it.DZZDM)?'':'red'}">{{isSetting(it.DZZDM) ? '已设置' : '未设置'}}</span>
                                 </td>
-                                <td class="text-center">{{it.PLANTYPE_USERNAME}}<span ng-if="it.PLANTYPE_USERNAME==undefined">/</span></td>
-                                <td class="text-center">{{it.PLANTYPE_BRANCHNAME}}<span ng-if="it.PLANTYPE_BRANCHNAME==undefined">/</span></td>
-                                <td class="text-center">{{it.PLANTYPE_GROUPNAME}}<span ng-if="it.PLANTYPE_GROUPNAME==undefined">/</span></td>
-                                <td class="text-center">{{it.PLANTYPE_CLASSNAME}}<span ng-if="it.PLANTYPE_CLASSNAME==undefined">/</span></td>
-                                <th>
+                                <td ng-repeat="type in shyklxList" class="text-center">
+                                    {{getSettingTitle(it.DZZDM, type.dickey)}}
+                                </td>
+                                <th class="text-center">
                                     <button role-permission-code="shykPlan.btn.btnEdit"
                                             class="btn td-btn bg-light-green waves-effect"
-                                            ng-click="edit(it)"
+                                            ng-click="edit(it.DZZDM,it.DZZMC)"
                                             title="编辑">
                                         编辑
                                     </button>
                                 </th>
                             </tr>
-                            <tr ng-if="dataList.length<=0">
+                            <tr ng-if="dataList.length<=0" ng-repeat="it in [1]" fixed-table-header>
                                 <td colspan="9" style="text-align:center">暂无数据</td>
                             </tr>
                             </tbody>
                         </table>
                     </div>
                     <pagination data-pageindex="selectparams.pageindex" data-pagesize="selectparams.pagesize"
-                                data-ptotal="pageInfo.ptotal" ></pagination>
+                                data-ptotal="pageInfo.ptotal"></pagination>
                 </div>
             </div>
         </div>

+ 109 - 57
src/main/resources/static/app/main/shyk/shykPlan.js

@@ -5,7 +5,8 @@
 
         //定义数据集合
         $scope.loginUserId = AuthUser.getUser().Id;
-        $scope.dataList = []; //列表数据
+        $scope.partyList = []; //列表数据
+        $scope.meetingTargetList = [];
         $scope.yearList = [];
         $scope.quarterList = [];
         $scope.selectparams = {
@@ -13,12 +14,12 @@
             selectdzzmc: '',
             defaultselected: $state.params.dzzdm,
             pageindex: 1,
-            pagesize: 10,
+            pagesize: 1000,
             dzzdm: '',//党组织代码
-            zzfbType: null,
-            isunfold:false,
+            isunfold: false
         };
         $scope.pageInfo = {ptotal: 0, mergetotal: 0};
+        $scope.shyklxList = [];
 
         //监视页数变化
         $scope.$watch("selectparams.pageindex", function (newVal, oldVal) {
@@ -30,34 +31,46 @@
         $scope.$watch("selectparams.selectdzzdm", function (newVal, oldVal) {
             if (newVal != "") {
                 $scope.selectparams.dzzdm = $scope.selectparams.selectdzzdm;
-                $scope.loadData();
-            }
-        });
-        $scope.$watch("selectparams.zzfbType", function (newVal, oldVal) {
-            if (newVal != oldVal) {
-                $scope.loadData();
+                $scope.getPartyList();
             }
         });
+
         //查询
         $scope.search = function () {
-            $scope.loadData();
+            $scope.getPartyList();
+        };
+
+        $scope.getPartyList = function () {
+            $http
+            ({
+                method: 'get', url: '../../api/party/getPartyList', params: $scope.selectparams
+            }).then(function (result) {
+                $scope.partyList = result.data.item.list;
+                $scope.getTargetList();
+            });
         };
 
         //加载列表数据
-        $scope.loadData = function () {
+        $scope.getTargetList = function () {
             $http
             ({
-                method: 'get', url: '../../api/shyk/getPartyPlanList', params: $scope.selectparams
+                method: 'get', url: '../../api/shyk/getMeetingTargetList', params: $scope.selectparams
             }).then(function (result) {
-                $loading.hide();
-                $scope.dataList = result.data.item.list;
-                $scope.pageInfo.ptotal = result.data.item.total;
+                $scope.meetingTargetList = result.data.item;
             }, function (resp) {
-                $loading.hide();
                 $scope.showMsg('错误', '服务器错误');
             });
         };
 
+        $scope.getSettingTitle = function (partyCode, type) {
+            const settingVo = $scope.meetingTargetList.filter(e => e.shyktype === type && e.partycode === partyCode);
+            return settingVo.length > 0 ? settingVo[0].targetName : '/';
+        };
+
+        $scope.isSetting = function (partyCode) {
+            return $scope.meetingTargetList.filter(e => e.partycode === partyCode).length > 0;
+        };
+
         $scope.exportData = function () {
             if ($scope.selectparams.dzzdm != "" && $scope.selectparams.dzzdm != AuthUser.getUser().gddwdm) {
                 var params = "?1=1";
@@ -70,47 +83,43 @@
         };
 
         var editCtrl = function ($scope, $http, AuthUser) {
-            $scope.modalData = $scope.$parent.$parent.modalData;
-            $scope.modalData.partycode = $scope.modalData.PARTYCODE;
-            $scope.modalData.partyname = $scope.modalData.PARTYNAME;
-            $scope.modalData.createuserid = AuthUser.getUser().Id;
-            $scope.modalData.updateuserid = AuthUser.getUser().Id;
-            $scope.modalData.createusername = AuthUser.getUser().Name;
-            $scope.modalData.updateusername = AuthUser.getUser().Name;
-            $scope.modalData.plantypeUser = $scope.modalData.PLANTYPEUSER == undefined ? "" : $scope.modalData.PLANTYPEUSER.toString();
-            $scope.modalData.plantypeBranch = $scope.modalData.PLANTYPEBRANCH == undefined ? "" : $scope.modalData.PLANTYPEBRANCH.toString();
-            $scope.modalData.plantypeGroup = $scope.modalData.PLANTYPEGROUP == undefined ? "" : $scope.modalData.PLANTYPEGROUP.toString();
-            $scope.modalData.plantypeClass = $scope.modalData.PLANTYPECLASS == undefined ? "" : $scope.modalData.PLANTYPECLASS.toString();
+            $scope.partyCode = cdModal.params.partyCode;
+            $scope.partyName = cdModal.params.partyName;
+            $scope.settingList = cdModal.params.settingList;
             $scope.numList = [];
 
             $scope.getNumList = function () {
                 $http({
                     method: 'get',
-                    url: '../../api/dictionary/GetDictionaryList',
+                    url: '../../api/dictionary/getDictionaryListByDicTypeKey',
                     params: {dicTypeKey: 'SHYK_PartyPlan'}
                 }).then(function (result) {
-                    $scope.numList = result.data.item.list;
+                    $scope.numList = result.data;
                 }, function (resp) {
                 });
             };
-            $scope.submitForm = function (isflag) {
+            $scope.saveTarget = function (isflag) {
                 if (isflag) {
+                    $loading.show();
                     $http({
                         method: "post",
                         url: "../../api/shyk/savePartyPlan",
-                        data: $scope.modalData
+                        data: {
+                            partyCode: $scope.partyCode,
+                            settingList: JSON.stringify($scope.settingList)
+                        }
                     }).then(function (result) {
                         $loading.hide();
-                        $scope.showMsg('成功', result.data.msg);
                         if (result.data.success) {
+                            $scope.showMsg('成功', '提交成功');
                             //重新刷新列表
-                            $scope.loadData();
+                            $scope.getTargetList();
                             $scope.$hide();
                         }
 
-                    }), function (resp) {
+                    }, function (resp) {
                         $scope.showMsg('错误', '服务器错误');
-                    }
+                    })
                 }
             };
             $scope.getNumList();
@@ -124,44 +133,71 @@
             show: false,
             animation: 'am-fade-and-slide-top'
         });
-        $scope.modalData = {};
-        $scope.edit = function (it) {
-            $scope.modalData = it;
+
+        $scope.edit = function (partyCode, partyName) {
+            const settingList = [];
+            $scope.shyklxList.forEach(type => {
+                const settingVo = {
+                    shyktype: type.dickey,
+                    shykTypeName: type.dicvalue,
+                    targettype: null
+                }
+
+                const settingData = $scope.meetingTargetList.filter(e => e.partycode === partyCode && e.shyktype === type.dickey);
+                if (settingData.length > 0) {
+                    settingVo.targettype = settingData[0].targettype;
+                }
+
+                settingList.push(settingVo);
+            });
+
+            cdModal.params = {
+                partyCode: partyCode,
+                partyName: partyName,
+                settingList: settingList
+            };
             cdModal.$promise.then(cdModal.show);
         };
 
         var multiCtrl = function ($scope, $http, AuthUser) {
-            $scope.dataModel={};
             $scope.numList = [];
+            $scope.settingList = multiModal.params.settingList;
+
             $scope.getNumList = function () {
                 $http({
                     method: 'get',
-                    url: '../../api/dictionary/GetDictionaryList',
+                    url: '../../api/dictionary/getDictionaryListByDicTypeKey',
                     params: {dicTypeKey: 'SHYK_PartyPlan'}
                 }).then(function (result) {
-                    $scope.numList = result.data.item.list;
+                    $scope.numList = result.data;
                 }, function (resp) {
                 });
             };
-            $scope.save = function (isflag) {
+            $scope.saveTargetMulti = function (isflag) {
                 if (isflag) {
+                    $loading.show();
                     $http({
                         method: "post",
                         url: "../../api/shyk/savePartyPlanMulti",
                         data: {
-                            dataModel:$scope.dataModel,
-                            dataDzzdm:AuthUser.getUser().DataDzzdm
+                            dataModel: $scope.dataModel,
+                            dataDzzdm: AuthUser.getUser().DataDzzdm,
+                            settingList: JSON.stringify($scope.settingList)
                         }
                     }).then(function (result) {
                         $loading.hide();
-                        $scope.showMsg('成功', result.data.msg);
                         if (result.data.success) {
+                            $scope.showMsg('成功', '提交成功');
                             //重新刷新列表
-                            $scope.loadData();
+                            $scope.getTargetList();
                             $scope.$hide();
                         }
+                        else{
+                            $scope.showMsg('失败', result.data.msg);
+                        }
 
                     }, function (resp) {
+                        $loading.hide();
                         $scope.showMsg('错误', '服务器错误');
                     })
                 }
@@ -178,24 +214,40 @@
             animation: 'am-fade-and-slide-top'
         });
         $scope.editMulti = function (it) {
+            const settingList = $scope.shyklxList.map(e => {
+                return {
+                    shyktype: e.dickey,
+                    shykTypeName: e.dicvalue,
+                    targettype: null
+                }
+            });
+
+            multiModal.params = {
+                settingList: settingList
+            };
             multiModal.$promise.then(multiModal.show);
         };
 
-
         $scope.setisunfold = function () {
             $scope.selectparams.isunfold = !$scope.selectparams.isunfold;
             $scope.$emit('menudatas.toggle', !$scope.selectparams.isunfold);
         };
-        $scope.showMsg = function (title, content) {
-            $alert({
-                title: title + ':',
-                content: content,
-                placement: 'top',
-                type: 'info',
-                show: true,
-                duration: 3
-            });
 
+        $scope.getShyklxList = function () {
+            $http({
+                method: 'get',
+                url: '../../api/dictionary/getDictionaryListByDicTypeKey',
+                params: {
+                    dicTypeKey: 'shykType'
+                }
+            }).then(function (result) {
+                $scope.shyklxList = result.data;
+            }, function (resp) {
+
+            });
         };
+
+        $scope.getShyklxList();
+
     });
 })(angular);

+ 30 - 92
src/main/resources/static/app/main/shyk/shykPlanEdit.html

@@ -1,100 +1,38 @@
-<div class="modal" role="dialog" style="" tabindex="-1">
-    <div class="modal-dialog" role="document" >
+<div class="modal" tabindex="-1" role="dialog">
+    <div class="modal-dialog" style="width: 600px;">
         <div class="card">
             <div class="header">
-                <button class="close" ng-click="$hide()" type="button">&times;</button>
-                <h3 class="modal-title">{{title}}</h3>
+                <button type="button" class="close" ng-click="$hide()">&times;</button>
+                <h4 class="modal-title">组织生活指标配置</h4>
             </div>
-            <div activate-input activate-select class="body">
-                <form class="form-horizontal" name="modalForm"
-                      novalidate role="form">
-                    <div class="row clearfix">
-                        <div class="col-lg-4 col-md-4 col-sm-4 col-xs-4 form-control-label">
-                            <label>所选党组织</label>
-                        </div>
-                        <div class="col-lg-8 col-md-8 col-sm-8 col-xs-8">
-                            <div class="form-group">
-                                <div class="form-line">
-                                    {{modalData.DZZMC}}
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-                    <div class="row clearfix">
-                        <div class="col-lg-4 col-md-4 col-sm-4 col-xs-4 form-control-label">
-                            <label>党员大会</label>
-                        </div>
-                        <div class="col-lg-3 col-md-3 col-sm-3 col-xs-3">
-                            <div class="form-group">
-                                <div class="form-line">
-                                    <select class="form-control show-tick" name="plantypeUser" ng-model="modalData.plantypeUser"
-                                            ng-options="op.val as op.label for op in numList" >
-                                        <<option value="">--未选择--</option>
-                                    </select>
-                                </div>
-                                <label class="error"
-                                       ng-show="modalForm.plantypeUser.$invalid &&  modalForm.$submitted">必填.</label>
-                            </div>
-                        </div>
-                    </div>
-                    <div class="row clearfix">
-                        <div class="col-lg-4 col-md-4 col-sm-4 col-xs-4 form-control-label">
-                            <label>支委会</label>
-                        </div>
-                        <div class="col-lg-3 col-md-3 col-sm-3 col-xs-3">
-                            <div class="form-group">
-                                <div class="form-line">
-                                    <select class="form-control show-tick" name="plantypeBranch" ng-model="modalData.plantypeBranch"
-                                            ng-options="op.val as op.label for op in numList" >
-                                        <<option value="">--未选择--</option>
-                                    </select>
-                                </div>
-                                <label class="error"
-                                       ng-show="modalForm.plantypeBranch.$invalid &&  modalForm.$submitted">必填.</label>
-                            </div>
-                        </div>
-                    </div>
-                    <div class="row clearfix">
-                        <div class="col-lg-4 col-md-4 col-sm-4 col-xs-4 form-control-label">
-                            <label>党小组会</label>
-                        </div>
-                        <div class="col-lg-3 col-md-3 col-sm-3 col-xs-3">
-                            <div class="form-group">
-                                <div class="form-line">
-                                    <select class="form-control show-tick" name="plantypeGroup" ng-model="modalData.plantypeGroup"
-                                            ng-options="op.val as op.label for op in numList" >
-                                        <<option value="">--未选择--</option>
-                                    </select>
-                                </div>
-                                <label class="error"
-                                       ng-show="modalForm.plantypeGroup.$invalid &&  modalForm.$submitted">必填.</label>
-                            </div>
-                        </div>
-                    </div>
-                    <div class="row clearfix">
-                        <div class="col-lg-4 col-md-4 col-sm-4 col-xs-4 form-control-label">
-                            <label>党课</label>
-                        </div>
-                        <div class="col-lg-3 col-md-3 col-sm-3 col-xs-3">
-                            <div class="form-group">
-                                <div class="form-line">
-                                    <select class="form-control show-tick" name="plantypeClass" ng-model="modalData.plantypeClass"
-                                            ng-options="op.val as op.label for op in numList" >
-                                        <<option value="">--未选择--</option>
+            <div activate-input class="body">
+                <form class="form-horizontal" role="form"
+                      name="editForm" novalidate>
+                    <div class="dj-formtable">
+                        <table class="dj-table">
+                            <tr>
+                                <th >
+                                    所选党组织
+                                </th>
+                                <td>
+                                    {{partyName}}
+                                </td>
+
+                            </tr>
+                            <tr ng-repeat="type in settingList">
+                                <th style="color: #8d2b2a">{{type.shykTypeName}}</th>
+                                <td>
+                                    <select class="form-control show-tick" name="targettype_{{type.shyktype}}" ng-model="type.targettype"
+                                            ng-options="op.dickey as op.dicvalue for op in numList" >
+                                        <option value="">--请选择--</option>
                                     </select>
-                                </div>
-                                <label class="error"
-                                       ng-show="modalForm.plantypeClass.$invalid &&  modalForm.$submitted">必填.</label>
-                            </div>
-                        </div>
+                                </td>
+                            </tr>
+                        </table>
                     </div>
-                    <div class="form_foot" style="text-align:center">
-                        <button class="btn btn-danger" id="submit" ng-click="submitForm(modalForm.$valid)"
-                                style="padding:4px 20px 4px 20px"
-                                type="submit">提交
-                        </button>
-                        <button class="btn btn-default" id="cancel" ng-click="$hide()" style="padding:4px 20px 4px 20px"
-                                type="button">取消
+                    <div class="form_foot">
+                        <button type="button" class="btn btn-default" ng-click="$hide()">取消</button>
+                        <button type="submit" class="btn btn-primary" ng-click="saveTarget(this.editForm.$valid)">提交
                         </button>
                     </div>
                 </form>

+ 8 - 35
src/main/resources/static/app/main/shyk/shykPlanMultiEdit.html

@@ -10,13 +10,13 @@
                       name="editForm" novalidate>
                     <div class="dj-formtable">
                         <table class="dj-table">
-                            <tr>
+                            <!--<tr>
                                 <th >
                                     配置情况
                                 </th>
                                 <td ng-class="{ 'has-error' : this.editForm.settingType.$invalid &&  this.editForm.$submitted}">
                                     <select class="form-control show-tick" name="settingType" ng-model="dataModel.settingType" ng-required="true">
-                                        <option value="">--请选择--</option>
+                                        <option value="">&#45;&#45;请选择&#45;&#45;</option>
                                         <option value="0">未配置</option>
                                         <option value="1">已配置</option>
                                     </select>
@@ -24,7 +24,7 @@
                                           class="error">必填.</span>
                                 </td>
 
-                            </tr>
+                            </tr>-->
                             <tr>
                                 <th>类别</th>
                                 <td ng-class="{ 'has-error' : this.editForm.partyType.$invalid &&  this.editForm.$submitted}">
@@ -37,38 +37,11 @@
                                           class="error">必填.</span>
                                 </td>
                             </tr>
-                            <tr>
-                                <th style="color: #8d2b2a">党员大会</th>
-                                <td>
-                                    <select class="form-control show-tick" name="plantypeUser" ng-model="dataModel.plantypeUser"
-                                            ng-options="op.val as op.label for op in numList" >
-                                        <option value="">--请选择--</option>
-                                    </select>
-                                </td>
-                            </tr>
-                            <tr>
-                                <th style="color: #8d2b2a">支委会</th>
-                                <td>
-                                    <select class="form-control show-tick" name="plantypeBranch" ng-model="dataModel.plantypeBranch"
-                                            ng-options="op.val as op.label for op in numList" >
-                                        <option value="">--请选择--</option>
-                                    </select>
-                                </td>
-                            </tr>
-                            <tr>
-                                <th style="color: #8d2b2a">党小组会</th>
-                                <td>
-                                    <select class="form-control show-tick" name="plantypeGroup" ng-model="dataModel.plantypeGroup"
-                                            ng-options="op.val as op.label for op in numList" >
-                                        <option value="">--请选择--</option>
-                                    </select>
-                                </td>
-                            </tr>
-                            <tr>
-                                <th style="color: #8d2b2a">党课</th>
+                            <tr ng-repeat="type in settingList">
+                                <th style="color: #8d2b2a">{{type.shykTypeName}}</th>
                                 <td>
-                                    <select class="form-control show-tick" name="plantypeClass" ng-model="dataModel.plantypeClass"
-                                            ng-options="op.val as op.label for op in numList" >
+                                    <select class="form-control show-tick" name="targettype_{{type.shyktype}}" ng-model="type.targettype"
+                                            ng-options="op.dickey as op.dicvalue for op in numList" >
                                         <option value="">--请选择--</option>
                                     </select>
                                 </td>
@@ -77,7 +50,7 @@
                     </div>
                     <div class="form_foot">
                         <button type="button" class="btn btn-default" ng-click="$hide()">取消</button>
-                        <button type="submit" class="btn btn-primary" ng-click="save(this.editForm.$valid)">提交
+                        <button type="submit" class="btn btn-primary" ng-click="saveTargetMulti(this.editForm.$valid)">提交
                         </button>
                     </div>
                 </form>