chengqiang 3 лет назад
Родитель
Сommit
f134c88f6b
18 измененных файлов с 2412 добавлено и 23 удалено
  1. 10 0
      src/main/java/com/jeeplus/modules/sg/picking/activiti/entity/MdSmallClass.java
  2. 37 0
      src/main/java/com/jeeplus/modules/sg/picking/activiti/entity/ShowList.java
  3. 28 0
      src/main/java/com/jeeplus/modules/sg/picking/activiti/mapper/ShowListMapper.java
  4. 83 3
      src/main/java/com/jeeplus/modules/sg/picking/activiti/mapper/xml/ShowListMapper.xml
  5. 37 1
      src/main/java/com/jeeplus/modules/sg/picking/activiti/service/ShowListService.java
  6. 99 0
      src/main/java/com/jeeplus/modules/sg/picking/activiti/web/PickIngController.java
  7. 140 19
      src/main/java/com/jeeplus/modules/sg/picking/activiti/web/ShowListController.java
  8. 118 0
      src/main/java/com/jeeplus/modules/sg/raiseCapital/entity/RaiseCapital.java
  9. 17 0
      src/main/java/com/jeeplus/modules/sg/raiseCapital/mapper/RaiseCapitalMapper.java
  10. 161 0
      src/main/java/com/jeeplus/modules/sg/raiseCapital/mapper/xml/RaiseCapitalMapper.xml
  11. 243 0
      src/main/java/com/jeeplus/modules/sg/raiseCapital/service/RaiseCapitalService.java
  12. 404 0
      src/main/java/com/jeeplus/modules/sg/raiseCapital/utils/RaiseExportUtil.java
  13. 88 0
      src/main/java/com/jeeplus/modules/sg/raiseCapital/utils/RaiseTemplate.java
  14. 278 0
      src/main/java/com/jeeplus/modules/sg/raiseCapital/web/RaiseCapitalController.java
  15. BIN
      src/main/resources/freemarker/excelmodel/raiseCapital.xlsx
  16. 66 0
      src/main/webapp/webpage/modules/sg/picking/activiti/netRaise.jsp
  17. 423 0
      src/main/webapp/webpage/modules/sg/raiseCapital/raiseCapital.js
  18. 180 0
      src/main/webapp/webpage/modules/sg/raiseCapital/raiseCapital.jsp

+ 10 - 0
src/main/java/com/jeeplus/modules/sg/picking/activiti/entity/MdSmallClass.java

@@ -9,6 +9,8 @@ public class MdSmallClass extends ActEntity<MdSmallClass> {
    private String mdUnit;
    //图片信息
    private String mdImg;
+   //数量
+   private String number;
 
    public String getMdUnit() {
       return mdUnit;
@@ -33,5 +35,13 @@ public class MdSmallClass extends ActEntity<MdSmallClass> {
    public void setMdImg(String mdImg) {
       this.mdImg = mdImg;
    }
+
+   public String getNumber() {
+      return number;
+   }
+
+   public void setNumber(String number) {
+      this.number = number;
+   }
 }
 

+ 37 - 0
src/main/java/com/jeeplus/modules/sg/picking/activiti/entity/ShowList.java

@@ -59,6 +59,19 @@ public class ShowList extends ActEntity<ShowList> implements Comparable<ShowList
     //在当前节点的数量
     private Double nowNumber;
 
+    /**
+     * 大分类
+     * */
+    private String bigClassification;
+    /**
+     * 中分类
+     * */
+    private String theClassification;
+    /**
+     * 小分类
+     * */
+    private String smallClassification;
+
 
     private String reserveName;
 
@@ -279,6 +292,30 @@ public class ShowList extends ActEntity<ShowList> implements Comparable<ShowList
         this.mdTotalAmountAfter = mdTotalAmountAfter;
     }
 
+    public String getBigClassification() {
+        return bigClassification;
+    }
+
+    public void setBigClassification(String bigClassification) {
+        this.bigClassification = bigClassification;
+    }
+
+    public String getTheClassification() {
+        return theClassification;
+    }
+
+    public void setTheClassification(String theClassification) {
+        this.theClassification = theClassification;
+    }
+
+    public String getSmallClassification() {
+        return smallClassification;
+    }
+
+    public void setSmallClassification(String smallClassification) {
+        this.smallClassification = smallClassification;
+    }
+
     @Override
     public int compareTo(ShowList o) {
         String materialCode = this.getMaterialCode();

+ 28 - 0
src/main/java/com/jeeplus/modules/sg/picking/activiti/mapper/ShowListMapper.java

@@ -9,6 +9,7 @@ import com.jeeplus.modules.sg.managementcenter.materialInventory.entity.Material
 import com.jeeplus.modules.sg.picking.activiti.entity.*;
 import org.activiti.engine.task.Task;
 import org.apache.ibatis.annotations.Param;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -53,6 +54,11 @@ public interface ShowListMapper extends BaseMapper<ShowList> {
     List<ShowList> findNewTemList(ShowList showList);
 
     /**
+     * 通过项目名称获取提资领料清单
+     * */
+    List<ShowList> findRaiseList(ShowList showList);
+
+    /**
      * 根据流程定义号获取临时领料清单(物资上报)
      */
     List<ShowList> findMaterialReport(ShowList showList);
@@ -82,6 +88,11 @@ public interface ShowListMapper extends BaseMapper<ShowList> {
     void updateAmount(ShowList showList);
 
     /**
+     * 更新领料清单-提资模块
+     * */
+    void raiseUpdate(ShowList showList);
+
+    /**
      * 更新临时领料清单
      * */
     void updateTemAmount(ShowList showList);
@@ -92,6 +103,16 @@ public interface ShowListMapper extends BaseMapper<ShowList> {
     void deleteData(String id);
 
     /**
+     * 根据id删除领料清单-提资模块
+     * */
+    void deleteRaiseAll(String id);
+
+    /**
+     * 根据id删除领料清单-提资模块
+     * */
+    void trunCate(String projectName);
+
+    /**
      * 根据id删除临时领料清单
      * */
     void deleteTemData(String id);
@@ -138,4 +159,11 @@ public interface ShowListMapper extends BaseMapper<ShowList> {
      * 根据id从模块表中查询附件
      */
     List<PickIng> findMdImg(String id);
+
+    /**
+     * 将数据存入提资领料表
+     */
+
+    void replaceData(@Param("list") List<ShowList> list);
+
 }

+ 83 - 3
src/main/java/com/jeeplus/modules/sg/picking/activiti/mapper/xml/ShowListMapper.xml

@@ -9,6 +9,9 @@
 		a.material_code AS "materialCode",
 		a.material_description AS "materialDescription",
 		a.extension_description AS "extensionDescription",
+		a.big_classification as "bigClassification",
+		a.the_classification as "theClassification",
+		a.small_classification as "smallClassification",
 		a.md_units AS "mdUnits",
 		a.md_count AS "mdCount",
 		a.md_single_weight AS "mdSingleWeight",
@@ -168,8 +171,50 @@
 			#{delFlag}
 		)
 	</insert>
+	<insert id="replaceData">
+		replace INTO raise_process_list(
+		id,
+		create_by,
+		create_date,
+		update_by,
+		update_date,
+		del_flag,
+		remarks,
+		projectName,
+		materialCode,
+		extensionDescription,
+		materialDescription,
+		mdUnits,
+		mdTotalAmount,
+		mdSingleWeight,
+		mdTotalWeight,
+		mdTheParty,
+		mdText
+		) VALUES
+		<foreach collection="list" item="item" index="index" separator="," >
+			(
+			#{item.id},
+			#{item.createBy.id},
+			#{item.createDate},
+			#{item.updateBy.id},
+			#{item.updateDate},
+			#{item.delFlag},
+			#{item.remarks},
+			#{item.projectName},
+			#{item.materialCode},
+			#{item.extensionDescription},
+			#{item.materialDescription},
+			#{item.mdUnits},
+			#{item.mdTotalAmount},
+			#{item.mdSingleWeight},
+			#{item.mdTotalWeight},
+			#{item.mdTheParty},
+			#{item.mdText}
+			)
+		</foreach>
+	</insert>
 
-    <update id="projectUpdate">
+	<update id="projectUpdate">
 		update xm_material_project set earlyMaterial=1
 		where id=#{projectId};
 	</update>
@@ -311,8 +356,16 @@
     <delete id="deleteData">
 		delete from md_process_list where id=#{id};
 	</delete>
+	<delete id="deleteRaiseAll">
+		delete
+		from raise_process_list
+		where id = #{id}
+	</delete>
+	<delete id="trunCate">
+		delete from raise_process_list where projectName = #{projectName}
+	</delete>
 
-    <select id="inventoryQuery"
+	<select id="inventoryQuery"
             resultType="com.jeeplus.modules.sg.managementcenter.materialInventory.entity.MaterialInventory">
         select materialCode,availableStockQuantity,materialDetail from xm_material_inventory
         where materialCode in
@@ -372,8 +425,13 @@
     <update id="updateAcqStatus">
 		update xm_material_project set acquisitionStatus = '1' where reserveProjectName = #{reserveProjectName};
 	</update>
+	<update id="raiseUpdate">
+		update raise_process_list
+		set mdTotalAmount = #{mdTotalAmount}
+		where id = #{id}
+	</update>
 
-    <select id="findAcqStatus" resultType="java.lang.String">
+	<select id="findAcqStatus" resultType="java.lang.String">
 			select acquisitionStatus from xm_material_project
 			where reserveProjectName = #{reserveProjectName}
 	</select>
@@ -405,4 +463,26 @@
     <select id="findMdImg" resultType="com.jeeplus.modules.sg.picking.activiti.entity.PickIng">
 		select md_img as mdImg from md_module_block where id =  #{id};
 	</select>
+	<select id="findRaiseList" resultType="com.jeeplus.modules.sg.picking.activiti.entity.ShowList">
+		select id,
+			   create_by,
+			   create_date,
+			   update_by,
+			   update_date,
+			   del_flag,
+			   remarks,
+			   projectName,
+			   materialCode,
+			   extensionDescription,
+			   materialDescription,
+			   mdUnits,
+			   mdTotalAmount,
+			   mdTotalAmountAfter,
+			   mdSingleWeight,
+			   mdTotalWeight,
+			   mdTheParty,
+			   mdText
+		from raise_process_list
+		where projectName = #{projectName}
+	</select>
 </mapper>

+ 37 - 1
src/main/java/com/jeeplus/modules/sg/picking/activiti/service/ShowListService.java

@@ -48,6 +48,13 @@ public class ShowListService extends CrudService<ShowListMapper, ShowList> {
 		return page;
 	}
 
+	public Page<ShowList> findRaisePage(Page<ShowList> page, ShowList showList) {
+		dataRuleFilter(showList);
+		showList.setPage(page);
+		page.setList(mapper.findRaiseList(showList));
+		return page;
+	}
+
 	//物资上报
 	public Page<ShowList> findMaterialReport(Page<ShowList> page, ShowList showList) {
 		dataRuleFilter(showList);
@@ -120,7 +127,17 @@ public class ShowListService extends CrudService<ShowListMapper, ShowList> {
 		showListMapper.materialReportSave(materialReport);
 	}
 
-	;
+	/**
+	 *将数据存入提资领料表
+	 */
+	@Transactional(readOnly = false)
+	public void replaceData(List<ShowList> list) {
+		for (ShowList s :
+				list) {
+			s.preInsert();
+		}
+		showListMapper.replaceData(list);
+	}
 
 	/**
 	 * 修改总量
@@ -131,6 +148,14 @@ public class ShowListService extends CrudService<ShowListMapper, ShowList> {
 	}
 
 	/**
+	 * 修改总量-提资模块
+	 */
+	@Transactional(readOnly = false)
+	public void raiseUpdate(ShowList showList) {
+		showListMapper.raiseUpdate(showList);
+	}
+
+	/**
 	 * 修改临时表总量
 	 */
 	@Transactional(readOnly = false)
@@ -164,6 +189,17 @@ public class ShowListService extends CrudService<ShowListMapper, ShowList> {
 	}
 
 	@Transactional(readOnly = false)
+	public void deleteRaiseAll(String id) {
+		showListMapper.deleteRaiseAll(id);
+	}
+
+
+	@Transactional(readOnly = false)
+	public void trunCate(String projectName) {
+		showListMapper.trunCate(projectName);
+	}
+
+	@Transactional(readOnly = false)
 	public void deleteTemData(String id) {
 		showListMapper.deleteTemData(id);
 	}

+ 99 - 0
src/main/java/com/jeeplus/modules/sg/picking/activiti/web/PickIngController.java

@@ -144,6 +144,15 @@ public class PickIngController extends BaseController {
     }
 
     /**
+     * 新增物料-提资模块
+     */
+    @RequestMapping(value = "netRaise")
+    public String netRaise(ShowList showList, Model model) {
+        model.addAttribute("showList", showList);
+        return "modules/sg/picking/activiti/netRaise";
+    }
+
+    /**
      * 临时表新增物料
      */
     @RequestMapping(value = "netExamineTemUpload")
@@ -532,6 +541,19 @@ public class PickIngController extends BaseController {
     }
 
     /**
+     * 修改领料清单总量,自动计算总重
+     */
+    @ResponseBody
+    @RequestMapping(value = "raiseUpdate")
+    public AjaxJson raiseUpdate(ShowList showList, String mdTotalAmount, Model model) throws Exception {
+        AjaxJson j = new AjaxJson();
+        showListService.raiseUpdate(showList);
+        j.setMsg("成功");
+        return j;
+    }
+
+
+    /**
      * 修改临时领料清单总量,自动计算总重
      */
     @ResponseBody
@@ -582,6 +604,33 @@ public class PickIngController extends BaseController {
     }
 
     /**
+     * 批量删除-提资模块
+     */
+    @ResponseBody
+    @RequestMapping(value = "deleteRaiseAll")
+    public AjaxJson deleteRaiseAll(String ids) {
+        AjaxJson j = new AjaxJson();
+        String idArray[] = ids.split(",");
+        for (String id : idArray) {
+            showListService.deleteRaiseAll(id);
+        }
+        j.setMsg("删除成功!");
+        return j;
+    }
+
+    /**
+     * 批量删除-提资模块
+     */
+    @ResponseBody
+    @RequestMapping(value = "trunCate")
+    public AjaxJson trunCate (String projectName) {
+        AjaxJson j = new AjaxJson();
+        showListService.trunCate(projectName);
+        j.setMsg("删除成功!");
+        return j;
+    }
+
+    /**
      * 批量删除
      */
     @ResponseBody
@@ -634,6 +683,7 @@ public class PickIngController extends BaseController {
             insertList.add(showList);
             //将信息和数量存入对应表
             pickIngService.processList(insertList);
+            j.setSuccess(true);
             j.setMsg("添加成功!");
         } catch (Exception e) {
             j.setSuccess(false);
@@ -643,6 +693,55 @@ public class PickIngController extends BaseController {
         return j;
     }
 
+
+    /**
+     * 添加甲供物资信息到流程中-提资模块
+     */
+    @ResponseBody
+    @RequestMapping(value = "raiseSave")
+    public AjaxJson raiseSave(String project, String projectName,Double mdTotalAmount) {
+        AjaxJson j = new AjaxJson();
+        try {
+            ShowList showList = new ShowList();
+            //根据id查询甲供物资的信息
+            MaterialProvided materialProvided = materialProvidedService.get(project);
+            //设置id
+            showList.preInsert();
+            showList.setProjectName(projectName);
+            //物料编码
+            showList.setMaterialCode(materialProvided.getMaterialCode());
+            //物料描述
+            showList.setMaterialDescription(materialProvided.getMaterialDescription());
+            //扩展描述
+            showList.setExtensionDescription(materialProvided.getExtendedDescription());
+            //单位
+            showList.setMdUnits(materialProvided.getMeasuringUnit());
+            //总量
+            showList.setMdTotalAmount(mdTotalAmount);
+            //单重
+            showList.setMdSingleWeight(0.0);
+            //总重
+            showList.setMdTotalWeight(0.0);
+            //甲乙供
+            showList.setMdTheParty("");
+            //备注
+            showList.setMdText("");
+
+            List<ShowList> insertList = new ArrayList<>();
+            insertList.add(showList);
+            //将信息和数量存入对应表
+            showListService.replaceData(insertList);
+            j.setMsg("添加成功!");
+            j.setSuccess(true);
+        } catch (Exception e) {
+            j.setSuccess(false);
+            j.setMsg("添加失败");
+            e.printStackTrace();
+        }
+        return j;
+    }
+
+
     /**
      * 添加甲供物资信息到流程中
      */

+ 140 - 19
src/main/java/com/jeeplus/modules/sg/picking/activiti/web/ShowListController.java

@@ -1,5 +1,6 @@
 package com.jeeplus.modules.sg.picking.activiti.web;
 
+import com.jeeplus.common.json.AjaxJson;
 import com.jeeplus.core.persistence.Page;
 import com.jeeplus.core.web.BaseController;
 import com.jeeplus.modules.sg.picking.activiti.entity.PickIng;
@@ -24,18 +25,19 @@ import java.util.*;
 public class ShowListController extends BaseController {
     @Autowired
     private ShowListService showListService;
+
     /**
      * 物料清单显示
-     * */
+     */
     @ResponseBody
-    @RequestMapping(value ="data")
-    public Map<String, Object> data(ShowList showList,String item, HttpServletRequest request, HttpServletResponse response, Model model) {
+    @RequestMapping(value = "data")
+    public Map<String, Object> data(ShowList showList, String item, HttpServletRequest request, HttpServletResponse response, Model model) {
         ArrayList<String> objects = new ArrayList<>();
         ArrayList<String> findList = new ArrayList<>();
 
         //返回给页面的list
         List<ShowList> myList = new ArrayList<>();
-        if (item != null&&!"".equals(item)) {
+        if (item != null && !"".equals(item)) {
             String[] split = item.split(";");
             //回显list
             List<ShowList> returnList = new ArrayList<>();
@@ -67,7 +69,7 @@ public class ShowListController extends BaseController {
                         Double i = mdSingleWeight * number;
                         BigDecimal b1 = new BigDecimal(Double.toString(number));
                         BigDecimal b2 = new BigDecimal(Double.toString(mdCount));
-                        double v =  b1.multiply(b2).doubleValue();
+                        double v = b1.multiply(b2).doubleValue();
                         ShowList newShowList = new ShowList();
                         newShowList.setMaterialCode(showList1.getMaterialCode());
                         newShowList.setMaterialDescription(showList1.getMaterialDescription());
@@ -88,27 +90,27 @@ public class ShowListController extends BaseController {
             }
             List<ShowList> finalList = new ArrayList<>();
             boolean flag;
-            for (ShowList turn:returnList){
+            for (ShowList turn : returnList) {
                 flag = true;
-                for (ShowList list1:finalList){
+                for (ShowList list1 : finalList) {
                     if (turn.getMaterialCode().equals(list1.getMaterialCode()) && turn.getMaterialDescription().equals(list1.getMaterialDescription()) && turn.getExtensionDescription().equals(list1.getExtensionDescription())) {
                         Double mdTotalAmount = list1.getMdTotalAmount();
                         Double mdTotalAmount1 = turn.getMdTotalAmount();
                         BigDecimal b1 = new BigDecimal(Double.toString(mdTotalAmount));
                         BigDecimal b2 = new BigDecimal(Double.toString(mdTotalAmount1));
-                        double v =  b1.add(b2).doubleValue();
+                        double v = b1.add(b2).doubleValue();
                         Double mdTotalWeight = list1.getMdTotalWeight();
                         Double mdTotalWeight1 = turn.getMdTotalWeight();
                         BigDecimal a1 = new BigDecimal(Double.toString(mdTotalWeight));
                         BigDecimal a2 = new BigDecimal(Double.toString(mdTotalWeight1));
-                        double  b=  a1.add(a2).doubleValue();
+                        double b = a1.add(a2).doubleValue();
                         list1.setMdTotalAmount(v);
                         list1.setMdTotalWeight(b);
                         flag = false;
                         break;
                     }
                 }
-                if (flag){
+                if (flag) {
                     showList = new ShowList();
                     showList.setMaterialCode(turn.getMaterialCode());
                     showList.setMaterialDescription(turn.getMaterialDescription());
@@ -134,18 +136,137 @@ public class ShowListController extends BaseController {
         }
     }
 
+
+    /**
+     * 将模块清单的数据获取计算,保存入库
+     */
+    @ResponseBody
+    @RequestMapping(value = "saveData")
+    public AjaxJson saveData(ShowList showList, String item,String projectName, Model model) throws Exception {
+        ArrayList<String> objects = new ArrayList<>();
+        ArrayList<String> findList = new ArrayList<>();
+        AjaxJson j = new AjaxJson();
+        //返回给页面的list
+        List<ShowList> myList = new ArrayList<>();
+        if (item != null && !"".equals(item)) {
+            String[] split = item.split(";");
+            //回显list
+            List<ShowList> returnList = new ArrayList<>();
+            for (int i = 0; i < split.length; i++) {
+                objects.add(split[i]);
+            }
+            for (String s : objects) {
+                String[] split1 = s.split(":");
+                ShowList myShow = new ShowList();
+                myShow.setId(split1[0]);
+                String s1 = split1[1];
+                myShow.setNumber(Double.parseDouble(s1));
+                findList.add(split1[0]);
+                myList.add(myShow);
+            }
+            showList.setFindList(findList);
+            //查询出来所有的模块清单数据
+            List<ShowList> list = showListService.findList(showList);
+            //前端传来选择的模块与数量
+            for (ShowList my : myList) {
+                //循环遍历
+                for (ShowList showList1 : list) {
+                    //选择的模块与查出来的一致
+                    if (my.getId().equals(showList1.getBlockId())) {
+                        Double mdSingleWeight = showList1.getMdSingleWeight();
+                        Double number = my.getNumber();
+                        Double mdCount = showList1.getMdCount();
+                        Double i = mdSingleWeight * number;
+                        BigDecimal b1 = new BigDecimal(Double.toString(number));
+                        BigDecimal b2 = new BigDecimal(Double.toString(mdCount));
+                        double v = b1.multiply(b2).doubleValue();
+                        ShowList newShowList = new ShowList();
+                        newShowList.setMaterialCode(showList1.getMaterialCode());
+                        newShowList.setMaterialDescription(showList1.getMaterialDescription());
+                        newShowList.setExtensionDescription(showList1.getExtensionDescription());
+                        newShowList.setMdUnits(showList1.getMdUnits());
+                        newShowList.setMdTheParty(showList1.getMdTheParty());
+                        newShowList.setMdText(showList1.getMdText());
+                        newShowList.setMdTotalAmount(v);
+                        newShowList.setMdSingleWeight(showList1.getMdSingleWeight());
+                        BigDecimal b = new BigDecimal(i);
+                        BigDecimal a = new BigDecimal(1000);
+                        BigDecimal divide = b.divide(a, 4, BigDecimal.ROUND_HALF_UP);
+                        newShowList.setMdTotalWeight(Double.valueOf(divide.toString()));
+                        newShowList.setBlockId(showList1.getBlockId());
+                        returnList.add(newShowList);
+                    }
+                }
+            }
+            List<ShowList> finalList = new ArrayList<>();
+            boolean flag;
+            for (ShowList turn : returnList) {
+                flag = true;
+                for (ShowList list1 : finalList) {
+                    if (turn.getMaterialCode().equals(list1.getMaterialCode()) && turn.getMaterialDescription().equals(list1.getMaterialDescription()) && turn.getExtensionDescription().equals(list1.getExtensionDescription())) {
+                        Double mdTotalAmount = list1.getMdTotalAmount();
+                        Double mdTotalAmount1 = turn.getMdTotalAmount();
+                        BigDecimal b1 = new BigDecimal(Double.toString(mdTotalAmount));
+                        BigDecimal b2 = new BigDecimal(Double.toString(mdTotalAmount1));
+                        double v = b1.add(b2).doubleValue();
+                        Double mdTotalWeight = list1.getMdTotalWeight();
+                        Double mdTotalWeight1 = turn.getMdTotalWeight();
+                        BigDecimal a1 = new BigDecimal(Double.toString(mdTotalWeight));
+                        BigDecimal a2 = new BigDecimal(Double.toString(mdTotalWeight1));
+                        double b = a1.add(a2).doubleValue();
+                        list1.setMdTotalAmount(v);
+                        list1.setMdTotalWeight(b);
+                        flag = false;
+                        break;
+                    }
+                }
+                if (flag) {
+                    showList = new ShowList();
+                    showList.setMaterialCode(turn.getMaterialCode());
+                    showList.setMaterialDescription(turn.getMaterialDescription());
+                    showList.setExtensionDescription(turn.getExtensionDescription());
+                    showList.setMdUnits(turn.getMdUnits());
+                    showList.setMdTheParty(turn.getMdTheParty());
+                    showList.setMdText(turn.getMdText());
+                    showList.setMdTotalAmount(turn.getMdTotalAmount());
+                    showList.setMdSingleWeight(turn.getMdSingleWeight());
+                    showList.setMdTotalWeight(turn.getMdTotalWeight());
+                    showList.setBlockId(turn.getBlockId());
+                    finalList.add(showList);
+                }
+            }
+            for (ShowList l :
+                    finalList) {
+                l.setProjectName(projectName);
+            }
+            showListService.trunCate(projectName);
+            //将数据存入提资领料表
+            showListService.replaceData(finalList);
+        }
+        j.setSuccess(true);
+        return j;
+    }
+
+
+    @ResponseBody
+    @RequestMapping(value = "raiseData")
+    public Map<String, Object> raiseData(ShowList showList, HttpServletRequest request, HttpServletResponse response, Model model) {
+        Page<ShowList> page = showListService.findRaisePage(new Page<ShowList>(request, response), showList);
+        return getBootstrapData(page);
+    }
+
     /**
      * 模块清单显示页面
-     * */
+     */
     @ResponseBody
-    @RequestMapping(value ="mkData")
-    public Map<String, Object> mkData(ShowList showList,String item, HttpServletRequest request, HttpServletResponse response, Model model) {
+    @RequestMapping(value = "mkData")
+    public Map<String, Object> mkData(ShowList showList, String item, HttpServletRequest request, HttpServletResponse response, Model model) {
         ArrayList<String> objects = new ArrayList<>();
         ArrayList<String> findList = new ArrayList<>();
 
         //返回给页面的list
         List<ShowList> myList = new ArrayList<>();
-        if (item != null&&!"".equals(item)) {
+        if (item != null && !"".equals(item)) {
             String[] split = item.split(";");
             //回显list
             List<ShowList> returnList = new ArrayList<>();
@@ -177,7 +298,7 @@ public class ShowListController extends BaseController {
                         Double i = mdSingleWeight * number;
                         BigDecimal b1 = new BigDecimal(Double.toString(number));
                         BigDecimal b2 = new BigDecimal(Double.toString(mdCount));
-                        double v =  b1.multiply(b2).doubleValue();
+                        double v = b1.multiply(b2).doubleValue();
                         ShowList newShowList = new ShowList();
                         newShowList.setMdBigClass(showList1.getMdBigClass());
                         newShowList.setMdTheClass(showList1.getMdTheClass());
@@ -211,7 +332,7 @@ public class ShowListController extends BaseController {
     }
 
     @ResponseBody
-    @RequestMapping(value ="afterData")
+    @RequestMapping(value = "afterData")
     public Map<String, Object> afterData(ShowList showList, HttpServletRequest request, HttpServletResponse response, Model model) {
         ArrayList<String> objects = new ArrayList<>();
         ArrayList<String> findList = new ArrayList<>();
@@ -219,7 +340,7 @@ public class ShowListController extends BaseController {
         String item = showListService.itemQuery(procInsId);
         //返回给页面的list
         List<ShowList> myList = new ArrayList<>();
-        if (item != null&&!"".equals(item)) {
+        if (item != null && !"".equals(item)) {
             String[] split = item.split(";");
             //回显list
             List<ShowList> returnList = new ArrayList<>();
@@ -251,7 +372,7 @@ public class ShowListController extends BaseController {
                         Double i = mdSingleWeight * number;
                         BigDecimal b1 = new BigDecimal(Double.toString(number));
                         BigDecimal b2 = new BigDecimal(Double.toString(mdCount));
-                        double v =  b1.multiply(b2).doubleValue();
+                        double v = b1.multiply(b2).doubleValue();
                         ShowList newShowList = new ShowList();
                         newShowList.setMdBigClass(showList1.getMdBigClass());
                         newShowList.setMdTheClass(showList1.getMdTheClass());
@@ -284,4 +405,4 @@ public class ShowListController extends BaseController {
         }
 
     }
-    }
+}

+ 118 - 0
src/main/java/com/jeeplus/modules/sg/raiseCapital/entity/RaiseCapital.java

@@ -0,0 +1,118 @@
+package com.jeeplus.modules.sg.raiseCapital.entity;
+
+import com.jeeplus.core.persistence.DataEntity;
+
+/**
+ * 提资模块实体类
+ * */
+public class RaiseCapital extends DataEntity<RaiseCapital> {
+
+    /**
+     * 项目编号
+     * */
+    private String projectNo;
+    /**
+     * 批准人
+     * */
+    private String approver;
+    /**
+     * erp编码
+     * */
+    private String erpCode;
+    /**
+     * 审核人
+     * */
+    private String reviewer;
+    /**
+     * 项目名称
+     * */
+    private String projectName;
+    /**
+     * 制单人
+     * */
+    private String preparedBy;
+    /**
+     * 甲方项目经理确认
+     * */
+    private String manager;
+    /**
+     * 领用单位
+     * */
+    private String reqUnit;
+    /**
+     * 制单时间
+     * */
+    private String preTime;
+
+    public String getProjectNo() {
+        return projectNo;
+    }
+
+    public void setProjectNo(String projectNo) {
+        this.projectNo = projectNo;
+    }
+
+    public String getApprover() {
+        return approver;
+    }
+
+    public void setApprover(String approver) {
+        this.approver = approver;
+    }
+
+    public String getErpCode() {
+        return erpCode;
+    }
+
+    public void setErpCode(String erpCode) {
+        this.erpCode = erpCode;
+    }
+
+    public String getReviewer() {
+        return reviewer;
+    }
+
+    public void setReviewer(String reviewer) {
+        this.reviewer = reviewer;
+    }
+
+    public String getProjectName() {
+        return projectName;
+    }
+
+    public void setProjectName(String projectName) {
+        this.projectName = projectName;
+    }
+
+    public String getPreparedBy() {
+        return preparedBy;
+    }
+
+    public void setPreparedBy(String preparedBy) {
+        this.preparedBy = preparedBy;
+    }
+
+    public String getManager() {
+        return manager;
+    }
+
+    public void setManager(String manager) {
+        this.manager = manager;
+    }
+
+    public String getReqUnit() {
+        return reqUnit;
+    }
+
+    public void setReqUnit(String reqUnit) {
+        this.reqUnit = reqUnit;
+    }
+
+    public String getPreTime() {
+        return preTime;
+    }
+
+    public void setPreTime(String preTime) {
+        this.preTime = preTime;
+    }
+}

+ 17 - 0
src/main/java/com/jeeplus/modules/sg/raiseCapital/mapper/RaiseCapitalMapper.java

@@ -0,0 +1,17 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.sg.raiseCapital.mapper;
+
+import com.jeeplus.core.persistence.BaseMapper;
+import com.jeeplus.core.persistence.annotation.MyBatisMapper;
+import com.jeeplus.modules.sg.raiseCapital.entity.RaiseCapital;
+import com.jeeplus.modules.test.one.dialog.entity.Leave1;
+
+/**
+ * 提资MAPPER接口
+ */
+@MyBatisMapper
+public interface RaiseCapitalMapper extends BaseMapper<RaiseCapital> {
+	
+}

+ 161 - 0
src/main/java/com/jeeplus/modules/sg/raiseCapital/mapper/xml/RaiseCapitalMapper.xml

@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.modules.sg.raiseCapital.mapper.RaiseCapitalMapper">
+    
+	<sql id="raiseCapitalColumns">
+		a.id AS "id",
+		a.office_id AS "office.id",
+		a.user_id AS "tuser.id",
+		a.area_id AS "area",
+		a.begin_date AS "beginDate",
+		a.end_date AS "endDate",
+		a.create_by AS "createBy.id",
+		a.create_date AS "createDate",
+		a.update_by AS "updateBy.id",
+		a.update_date AS "updateDate",
+		a.remarks AS "remarks",
+		a.del_flag AS "delFlag",
+				
+		office.name AS "office.name",
+				
+		tuser.name AS "tuser.name"
+	</sql>
+	
+	<sql id="raiseCapitalJoins">
+		
+		LEFT JOIN sys_office office ON office.id = a.office_id
+		LEFT JOIN sys_user tuser ON tuser.id = a.user_id
+	</sql>
+	
+    
+	<select id="get" resultType="Leave1" >
+		SELECT 
+			<include refid="raiseCapitalColumns"/>
+		FROM test_leave a
+		<include refid="raiseCapitalJoins"/>
+		WHERE a.id = #{id}
+	</select>
+	
+	<select id="findList" resultType="Leave1" >
+		SELECT 
+			<include refid="raiseCapitalColumns"/>
+		FROM test_leave a
+		<include refid="raiseCapitalJoins"/>
+		<where>
+			a.del_flag = #{DEL_FLAG_NORMAL}
+			${dataScope}
+			<if test="office != null and office.id != null and office.id != ''">
+				AND a.office_id = #{office.id}
+			</if>
+			<if test="tuser != null and tuser.id != null and tuser.id != ''">
+				AND a.user_id = #{tuser.id}
+			</if>
+			<if test="area != null and area != ''">
+				AND a.area_id LIKE 
+					<if test="dbName == 'oracle'">'%'||#{area}||'%'</if>
+					<if test="dbName == 'mssql'">'%'+#{area}+'%'</if>
+					<if test="dbName == 'mysql'">concat('%',#{area},'%')</if>
+			</if>
+			<if test="beginBeginDate != null and endBeginDate != null ">
+				AND a.begin_date BETWEEN #{beginBeginDate} AND #{endBeginDate}
+			</if>
+			<if test="endDate != null and endDate != ''">
+				AND a.end_date = #{endDate}
+			</if>
+			<if test="remarks != null and remarks != ''">
+				AND a.remarks = #{remarks}
+			</if>
+		</where>
+		<choose>
+			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
+				ORDER BY ${page.orderBy}
+			</when>
+			<otherwise>
+				ORDER BY a.update_date DESC
+			</otherwise>
+		</choose>
+	</select>
+	
+	<select id="findAllList" resultType="Leave1" >
+		SELECT 
+			<include refid="raiseCapitalColumns"/>
+		FROM test_leave a
+		<include refid="raiseCapitalJoins"/>
+		<where>
+			a.del_flag = #{DEL_FLAG_NORMAL}
+			${dataScope}
+		</where>		
+		<choose>
+			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
+				ORDER BY ${page.orderBy}
+			</when>
+			<otherwise>
+				ORDER BY a.update_date DESC
+			</otherwise>
+		</choose>
+	</select>
+	
+	<insert id="insert">
+		INSERT INTO test_leave(
+			id,
+			office_id,
+			user_id,
+			area_id,
+			begin_date,
+			end_date,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
+			remarks,
+			del_flag
+		) VALUES (
+			#{id},
+			#{office.id},
+			#{tuser.id},
+			#{area},
+			#{beginDate},
+			#{endDate},
+			#{createBy.id},
+			#{createDate},
+			#{updateBy.id},
+			#{updateDate},
+			#{remarks},
+			#{delFlag}
+		)
+	</insert>
+	
+	<update id="update">
+		UPDATE test_leave SET 	
+			office_id = #{office.id},
+			user_id = #{tuser.id},
+			area_id = #{area},
+			begin_date = #{beginDate},
+			end_date = #{endDate},
+			update_by = #{updateBy.id},
+			update_date = #{updateDate},
+			remarks = #{remarks}
+		WHERE id = #{id}
+	</update>
+	
+	
+	<!--物理删除-->
+	<update id="delete">
+		DELETE FROM test_leave
+		WHERE id = #{id}
+	</update>
+	
+	<!--逻辑删除-->
+	<update id="deleteByLogic">
+		UPDATE test_leave SET 
+			del_flag = #{DEL_FLAG_DELETE}
+		WHERE id = #{id}
+	</update>
+	
+	
+	<!-- 根据实体名称和字段名称和字段值获取唯一记录 -->
+	<select id="findUniqueByProperty" resultType="Leave1" statementType="STATEMENT">
+		select * FROM test_leave  where ${propertyName} = '${value}'
+	</select>
+	
+</mapper>

+ 243 - 0
src/main/java/com/jeeplus/modules/sg/raiseCapital/service/RaiseCapitalService.java

@@ -0,0 +1,243 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.sg.raiseCapital.service;
+
+import com.jeeplus.common.config.Global;
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.service.CrudService;
+import com.jeeplus.modules.sg.financial.erpcredit.util.SerializeUtil;
+import com.jeeplus.modules.sg.managementcenter.activiti.utils.MyActiviUtils;
+import com.jeeplus.modules.sg.picking.activiti.entity.*;
+import com.jeeplus.modules.sg.picking.activiti.mapper.PickIngMapper;
+import com.jeeplus.modules.sg.picking.activiti.mapper.ShowListMapper;
+import com.jeeplus.modules.sg.raiseCapital.entity.RaiseCapital;
+import com.jeeplus.modules.sg.raiseCapital.mapper.RaiseCapitalMapper;
+import com.jeeplus.modules.sg.raiseCapital.utils.RaiseExportUtil;
+import com.jeeplus.modules.sg.raiseCapital.utils.RaiseTemplate;
+import com.jeeplus.modules.sys.entity.DictValue;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import com.jeeplus.modules.test.one.dialog.mapper.Leave1Mapper;
+import net.oschina.j2cache.CacheChannel;
+import net.oschina.j2cache.J2Cache;
+import net.oschina.j2cache.redis.RedisCacheProvider;
+import net.oschina.j2cache.redis.RedisClient;
+import org.apache.poi.xssf.usermodel.XSSFFont;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.method.P;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * 提资模块Service
+ */
+@Service
+@Transactional(readOnly = true)
+public class RaiseCapitalService extends CrudService<RaiseCapitalMapper, RaiseCapital> {
+	@Autowired
+	private HttpServletRequest request;
+
+	@Autowired
+	private PickIngMapper pickIngMapper;
+
+	@Autowired
+	private ShowListMapper showListMapper;
+
+	public RaiseCapital get(String id) {
+		return super.get(id);
+	}
+	
+	public List<RaiseCapital> findList(RaiseCapital raiseCapital) {
+		return super.findList(raiseCapital);
+	}
+	
+	public Page<RaiseCapital> findPage(Page<RaiseCapital> page, RaiseCapital raiseCapital) {
+		return super.findPage(page, raiseCapital);
+	}
+	
+	@Transactional(readOnly = false)
+	public void save(RaiseCapital raiseCapital) {
+		super.save(raiseCapital);
+	}
+	
+	@Transactional(readOnly = false)
+	public void delete(RaiseCapital raiseCapital) {
+		super.delete(raiseCapital);
+	}
+
+	/**
+	 * 导出自动决算书
+	 * @param request
+	 * @param response
+	 */
+	@Transactional(readOnly = false)
+	public void getExport(String projectName,HttpServletRequest request, HttpServletResponse response){
+		String id = UserUtils.getUser().getId();
+		CacheChannel channel = J2Cache.getChannel();
+		RedisClient client = ((RedisCacheProvider)channel.getL2Provider()).getRedisClient();
+		HashMap<String, Object> newMap = (HashMap<String,Object>) SerializeUtil.deserialize(client.get().get(id.getBytes()));
+		//模块表的数量
+		List<ShowList> myList = (List<ShowList>)newMap.get("myList");
+		//模块表
+		List<PickList> newList = newAllList();
+		ShowList showList = new ShowList();
+		showList.setProjectName(projectName);
+		//领料清单-从数据库
+		List<ShowList> materialsList = showListMapper.findRaiseList(showList);
+
+
+		RaiseCapital newRaise = (RaiseCapital) newMap.get("raiseCapital");
+
+		RaiseTemplate raiseTemplate = new RaiseTemplate();
+		File newFile = raiseTemplate.createNewFile();
+		InputStream inputStream = null;
+		XSSFWorkbook workbook = null;
+		XSSFFont font=null;
+		//模块表
+		XSSFSheet sheetModular = null;
+		//领料清单
+		XSSFSheet sheetPickingList = null;
+		try {
+			inputStream = new FileInputStream(newFile);// 将excel文件转为输入流
+			workbook = new XSSFWorkbook(inputStream);// 创建个workbook,
+			font = workbook.createFont();
+			sheetModular =workbook.getSheetAt(0);//模块表
+			/*sheetModuleList = workbook.getSheetAt(1);//模块清单*/
+			sheetPickingList = workbook.getSheetAt(1);//领料清单
+		} catch (Exception e1) {
+			e1.printStackTrace();
+		}
+		try {
+			// 写数据
+			FileOutputStream fos = new FileOutputStream(newFile);
+			RaiseExportUtil.getSheetModular(sheetModular,myList,newList,newRaise,workbook);//模块表
+			/*RaiseExportUtil.getSheetModuleList(sheetModuleList,moduleList,workbook);//模块清单*/
+			RaiseExportUtil.getSheetPickingList(sheetPickingList,materialsList,newRaise,workbook);//领料清单
+            showListMapper.trunCate(projectName);
+			workbook.write(fos);
+			fos.flush();
+			fos.close();
+			InputStream fis = new BufferedInputStream(new FileInputStream(
+					newFile));
+			byte[] buffer = new byte[fis.available()];
+			fis.read(buffer);
+			fis.close();
+			response.reset();
+			response.setContentType("text/html;charset=UTF-8");
+			OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
+			response.setContentType("application/x-msdownload");
+			String newName = URLEncoder.encode(projectName + "物料清册" + System.currentTimeMillis() + ".xlsx", "UTF-8");
+			response.addHeader("Content-Disposition","attachment;filename=\"" + newName + "\"");
+			response.addHeader("Content-Length", "" + newFile.length());
+			toClient.write(buffer);
+			toClient.flush();
+		} catch (Exception e) {
+			e.printStackTrace();
+		} finally {
+			try {
+				if (null != inputStream) {
+					inputStream.close();
+				}
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+		}
+
+	}
+
+	/**
+	 * 遍历查询结构 大类 中类 小类
+	 * 去除重复,记录大类
+	 * 根据大类查询它的中类放入list并记录
+	 */
+	public List<PickList> newAllList() {
+		PickIng entity = new PickIng();
+		entity.setVersion(MyActiviUtils.findDic().getValue());
+		//查询除所有数据
+		List<PickIng> allList = pickIngMapper.findAllList(entity);
+		//创建返回对象集合
+		List<PickList> returnList = new ArrayList<>();
+
+		//循环得到所有大类
+		for (PickIng pickIng : allList) {
+			boolean flag = false;
+			for (PickList list : returnList) {
+				if (pickIng.getMdBigClass().equals(list.getName())) {
+					flag = true;
+					break;
+				}
+			}
+			if (flag == false) {
+				//创建返回对象
+				PickList pickList = new PickList();
+				pickList.setName(pickIng.getMdBigClass());
+				returnList.add(pickList);
+			}
+		}
+
+		//循环所有的大类,与查出的数据做比对,相同的就放入同一个实体类
+		for (PickList pList : returnList) {
+			List<MdTheClass> mdTheClassList = new ArrayList<>();
+			//获得大类
+			String name = pList.getName();
+			//遍历查询的所有数据,与大类做比对,相同的,将中类记录下来
+			for (PickIng pickIng : allList) {
+				boolean flag = false;
+				//如果查出的数据中和记录下的大类一致,将中类放入大类的
+				if (pickIng.getMdBigClass().equals(name)) {
+					for (MdTheClass md : mdTheClassList) {
+						if (md.getName().equals(pickIng.getMdTheClass())) {
+							flag = true;
+						}
+					}
+					if (flag == false) {
+						//创建中类对象,包含种类名称及对应的小类集合
+						MdTheClass mdTheClass = new MdTheClass();
+						mdTheClass.setId(pickIng.getId());
+						mdTheClass.setName(pickIng.getMdTheClass());
+						mdTheClassList.add(mdTheClass);
+					}
+				}
+			}
+			pList.setMdTheClassList(mdTheClassList);
+		}
+
+		for (PickList pList : returnList) {
+			List<MdTheClass> mdTheClassList = pList.getMdTheClassList();
+			for (MdTheClass md : mdTheClassList) {
+				//创建
+				List<MdSmallClass> mdSmallClassList = new ArrayList<>();
+				for (PickIng pc : allList) {
+					if (md.getName().equals(pc.getMdTheClass()) && pList.getName().equals(pc.getMdBigClass())) {
+						//创建小类对象
+						MdSmallClass mdSmallClass = new MdSmallClass();
+						mdSmallClass.setName(pc.getMdSmallClass());
+						mdSmallClass.setId(pc.getId());
+						mdSmallClass.setMdUnit(pc.getMdUnit());
+						if (Global.SYS_TYPE.equals("2")) {
+							if (pc.getMdImg() != null && !"".equals(pc.getMdImg())) {
+								mdSmallClass.setMdImg("http://" + request.getServerName() + pc.getMdImg());
+							}
+						} else {
+							mdSmallClass.setMdImg(pc.getMdImg());
+						}
+						mdSmallClassList.add(mdSmallClass);
+					}
+					md.setMdSmallClassList(mdSmallClassList);
+				}
+			}
+		}
+		return returnList;
+	}
+
+}

+ 404 - 0
src/main/java/com/jeeplus/modules/sg/raiseCapital/utils/RaiseExportUtil.java

@@ -0,0 +1,404 @@
+package com.jeeplus.modules.sg.raiseCapital.utils;
+
+import com.jeeplus.modules.sg.financial.erpcredit.entity.*;
+import com.jeeplus.modules.sg.financial.erpcredit.util.ExportUtilCalculate;
+import com.jeeplus.modules.sg.financial.settlement.entity.MaintainData;
+import com.jeeplus.modules.sg.picking.activiti.entity.MdSmallClass;
+import com.jeeplus.modules.sg.picking.activiti.entity.MdTheClass;
+import com.jeeplus.modules.sg.picking.activiti.entity.PickList;
+import com.jeeplus.modules.sg.picking.activiti.entity.ShowList;
+import com.jeeplus.modules.sg.raiseCapital.entity.RaiseCapital;
+import org.apache.poi.hssf.usermodel.HSSFCellStyle;
+import org.apache.poi.hssf.usermodel.HSSFFont;
+import org.apache.poi.ss.usermodel.CellStyle;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFCell;
+import org.apache.poi.xssf.usermodel.XSSFFont;
+import org.apache.poi.xssf.usermodel.XSSFRow;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 写入表格中模板
+ */
+public class RaiseExportUtil {
+
+
+    //模块表
+    public static void getSheetModular(Sheet sheet, List<ShowList> myList, List<PickList> newList, RaiseCapital raiseCapital, Workbook workbook) {
+        if (sheet != null) {
+            CellStyle cellStyleFont = getCellStyleFont(workbook);
+            CellStyle cellStyle = getCellStyle(workbook);
+            XSSFRow row = (XSSFRow) sheet.getRow(0);
+            XSSFCell cell = row.createCell(1);
+            cell.setCellValue(raiseCapital.getProjectName() + "物料清册");//标题
+            int i = 0;
+            for (int j = 0; j < newList.size(); j++) {
+                i = i + 1;
+                PickList pickList = newList.get(j);
+                row = (XSSFRow) sheet.getRow(i);
+                cell = row.createCell(1);
+                cell.setCellValue(pickList.getName());
+                List<MdTheClass> mdTheClassList = pickList.getMdTheClassList();
+                for (int k = 0; k < mdTheClassList.size(); k++) {
+                    MdTheClass mdTheClass = mdTheClassList.get(k);
+                    String name = mdTheClass.getName();
+                    if (null != name && !"".equals(name)) {
+                        i = i + 1;
+                        row = (XSSFRow) sheet.getRow(i);
+                        cell = row.createCell(1);
+                        cell.setCellValue(name);
+                    }
+                    List<MdSmallClass> mdSmallClassList = mdTheClass.getMdSmallClassList();
+                    int cellNum = 1;
+                    for (int l = 0; l < mdSmallClassList.size(); l++) {
+                        MdSmallClass mdSmallClass = mdSmallClassList.get(l);
+                        for (ShowList s :
+                                myList) {
+                            if (s.getId().equals(mdSmallClass.getId())) {
+                                mdSmallClass.setNumber(s.getNumber().toString());
+                            }
+                        }
+                        //小类每四次换一次行
+                        if (l % 4 == 0) {
+                            i = i + 1;
+                            cellNum = 1;
+                        }
+                        row = (XSSFRow) sheet.getRow(i);
+                        cell = row.createCell(cellNum);
+                        cell.setCellValue(mdSmallClass.getName());
+                        cellNum += 1;
+                        cell = row.createCell(cellNum);
+                        cell.setCellValue(mdSmallClass.getNumber());
+                        cellNum += 1;
+                        cell = row.createCell(cellNum);
+                        cell.setCellValue(mdSmallClass.getMdUnit());
+                        cellNum += 1;
+                    }
+                }
+            }
+            System.out.println(newList.toArray());
+        }
+
+    }
+
+    //模块清单
+    public static void getSheetModuleList(Sheet sheet, List<ShowList> showLists, XSSFWorkbook workbook) {
+        if (null != sheet) {
+            CellStyle style = getCellStyleFont(workbook);
+            CellStyle cellStyle = getCellStyle(workbook);
+            XSSFRow row = (XSSFRow) sheet.createRow(1);
+            XSSFCell cell = row.getCell(0);
+            ShowList showList = null;
+            for (int i = 0; i < showLists.size(); i++) {
+                showList = showLists.get(i);
+                row = (XSSFRow) sheet.createRow((int) i + 1);
+                //线路第一行
+                if (row.getCell(0) == null) {
+                    cell = row.createCell(0);
+                } else {
+                    cell = row.getCell(0);
+                }
+                cell.setCellValue(showList.getMdName());//添加模块名称
+                cell.setCellStyle(cellStyle);
+
+
+                //线路第二行
+                if (row.getCell(1) == null) {
+                    cell = row.createCell(1);
+                } else {
+                    cell = row.getCell(1);
+                }
+                cell.setCellValue(showList.getBigClassification());//大分类
+                cell.setCellStyle(cellStyle);
+
+                //添加第3行
+                if (row.createCell(2) == null) {
+                    cell = row.createCell(2);
+                } else {
+                    cell = row.getCell(2);
+                }
+                cell.setCellValue(showList.getTheClassification());//中分类
+                cell.setCellStyle(cellStyle);
+
+
+                //添加第4行
+                if (row.createCell(3) == null) {
+                    cell = row.createCell(3);
+                } else {
+                    cell = row.getCell(3);
+                }
+                cell.setCellValue(showList.getSmallClassification());//小分类
+                cell.setCellStyle(cellStyle);
+
+
+                //第5行
+                if (row.createCell(4) == null) {
+                    cell = row.createCell(4);
+                } else {
+                    cell = row.getCell(4);
+                }
+                cell.setCellValue(showList.getMaterialCode());//物料编码
+                cell.setCellStyle(cellStyle);
+
+
+                //第6行
+                if (row.createCell(5) == null) {
+                    cell = row.createCell(5);
+                } else {
+                    cell = row.getCell(5);
+                }
+                cell.setCellValue(showList.getMaterialDescription());//物料描述
+                cell.setCellStyle(cellStyle);
+
+
+                //第7行
+                if (row.createCell(6) == null) {
+                    cell = row.createCell(6);
+                } else {
+                    cell = row.getCell(6);
+                }
+                cell.setCellValue(showList.getExtensionDescription());//扩展描述
+                cell.setCellStyle(cellStyle);
+
+
+                //第8行
+                if (row.getCell(7) == null) {
+                    cell = row.createCell(7);
+                } else {
+                    cell = row.getCell(7);
+                }
+                cell.setCellValue(showList.getMdUnits());//单位
+                cell.setCellStyle(cellStyle);
+
+
+                //添加第9行
+                if (row.getCell(8) == null) {
+                    cell = row.createCell(8);
+                } else {
+                    cell = row.getCell(8);
+                }
+                cell.setCellValue(showList.getMdTotalAmount());//数量
+                cell.setCellStyle(cellStyle);
+
+                //添加滴10行
+                if (row.getCell(9) == null) {
+                    cell = row.createCell(9);
+                } else {
+                    cell = row.getCell(9);
+                }
+                cell.setCellValue(showList.getMdSingleWeight());//单重
+                cell.setCellStyle(cellStyle);
+
+
+                //添加第11行
+                if (row.getCell(10) == null) {
+                    cell = row.createCell(10);
+                } else {
+                    cell = row.getCell(10);
+                }
+                cell.setCellValue(showList.getMdTotalWeight());//总重
+                cell.setCellStyle(cellStyle);
+
+
+                //添加第12行
+                if (row.getCell(11) == null) {
+                    cell = row.createCell(11);
+                } else {
+                    cell = row.getCell(11);
+                }
+                cell.setCellValue(showList.getMdTheParty());//甲乙供
+                cell.setCellStyle(cellStyle);
+
+
+                //添加第13行
+                if (row.getCell(12) == null) {
+                    cell = row.createCell(12);
+                } else {
+                    cell = row.getCell(12);
+                }
+                cell.setCellValue(showList.getMdText());
+                cell.setCellStyle(cellStyle);
+
+
+                //添加第14行
+                if (row.getCell(13) == null) {
+                    cell = row.createCell(13);
+                } else {
+                    cell = row.getCell(13);
+                }
+                cell.setCellValue(showList.getMdTotalAmount());
+                cell.setCellStyle(cellStyle);
+
+            }
+        }
+    }
+
+    //领料清单
+    public static void getSheetPickingList(Sheet sheet, List<ShowList> showLists, RaiseCapital raiseCapital, Workbook workbook) {
+        if (sheet != null) {
+            CellStyle style = getCellStyleFont(workbook);
+            CellStyle cellStyle = getCellStyle(workbook);
+
+            XSSFRow row = (XSSFRow) sheet.getRow(0);
+            XSSFCell cell = row.getCell(0);
+            cell.setCellValue(raiseCapital.getProjectName() + "物料清册");//标题
+
+            row = (XSSFRow) sheet.getRow(1);
+            cell = row.getCell(2);
+            cell.setCellValue(raiseCapital.getProjectNo());//项目编号
+
+            row = (XSSFRow) sheet.getRow(1);
+            cell = row.getCell(6);
+            cell.setCellValue(raiseCapital.getApprover());//批准人
+
+            row = (XSSFRow) sheet.getRow(2);
+            cell = row.getCell(2);
+            cell.setCellValue(raiseCapital.getErpCode());//ERP编码
+
+            row = (XSSFRow) sheet.getRow(2);
+            cell = row.getCell(6);
+            cell.setCellValue(raiseCapital.getReviewer());//审核人
+
+            row = (XSSFRow) sheet.getRow(3);
+            cell = row.getCell(2);
+            cell.setCellValue(raiseCapital.getProjectName());//项目名称
+
+            row = (XSSFRow) sheet.getRow(3);
+            cell = row.getCell(6);
+            cell.setCellValue(raiseCapital.getPreparedBy());//制单人
+
+            row = (XSSFRow) sheet.getRow(4);
+            cell = row.getCell(0);
+            cell.setCellValue("甲方项目经理确认:" + raiseCapital.getManager());//甲方项目经理确认
+
+            row = (XSSFRow) sheet.getRow(4);
+            cell = row.getCell(3);
+            cell.setCellValue("领用单位:" + raiseCapital.getReqUnit());//领用单位
+
+            row = (XSSFRow) sheet.getRow(4);
+            cell = row.getCell(6);
+            cell.setCellValue(raiseCapital.getPreTime());//制单时间
+
+            ShowList showList = null;
+            for (int i = 0; i < showLists.size(); i++) {
+                showList = showLists.get(i);
+                row = (XSSFRow) sheet.createRow((int) i + 6);
+                //第一行
+                if (row.getCell(0) == null) {
+                    cell = row.createCell(0);
+                } else {
+                    cell = row.getCell(0);
+                }
+                cell.setCellValue(i + 1);
+                cell.setCellStyle(cellStyle);
+
+                //第二行
+                if (row.getCell(1) == null) {
+                    cell = row.createCell(1);
+                } else {
+                    cell = row.getCell(1);
+                }
+                cell.setCellValue(showList.getMaterialCode());//物料编码
+                cell.setCellStyle(cellStyle);
+
+                //第三行
+                if (row.getCell(2) == null) {
+                    cell = row.createCell(2);
+                } else {
+                    cell = row.getCell(2);
+                }
+                cell.setCellValue(showList.getMaterialDescription());//物料名称
+                cell.setCellStyle(cellStyle);
+
+
+                //第四行
+                if (row.getCell(3) == null) {
+                    cell = row.createCell(3);
+                } else {
+                    cell = row.getCell(3);
+                }
+                cell.setCellValue(showList.getExtensionDescription());//扩展描述
+                cell.setCellStyle(cellStyle);
+
+
+                //第五行
+                if (row.getCell(4) == null) {
+                    cell = row.createCell(4);
+                } else {
+                    cell = row.getCell(4);
+                }
+                cell.setCellValue(showList.getMdUnits());//单位
+                cell.setCellStyle(cellStyle);
+
+                //第六行
+                if (row.getCell(5) == null) {
+                    cell = row.createCell(5);
+                } else {
+                    cell = row.getCell(5);
+                }
+                cell.setCellValue(showList.getMdTotalAmount());//总量
+                cell.setCellStyle(cellStyle);
+
+                //第七行
+                if (row.getCell(6) == null) {
+                    cell = row.createCell(6);
+                } else {
+                    cell = row.getCell(6);
+                }
+                cell.setCellValue(showList.getMdSingleWeight());//单重
+                cell.setCellStyle(cellStyle);
+
+                //第8行
+                if (row.getCell(7) == null) {
+                    cell = row.createCell(7);
+                } else {
+                    cell = row.getCell(7);
+                }
+                cell.setCellValue(showList.getMdSingleWeight());//总重
+                cell.setCellStyle(cellStyle);
+
+            }
+        }
+    }
+
+    //设置 字体边框
+    public static CellStyle getCellStyleFont(Workbook workbook) {
+        XSSFFont font = (XSSFFont) workbook.createFont();
+        font.setFontHeightInPoints((short) 12);//设置字体大小
+        font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//粗体显示
+        CellStyle style = workbook.createCellStyle();
+        style.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框
+        style.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
+        style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
+        style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
+        style.setFont(font);
+        return style;
+    }
+
+    //设置边框
+    public static CellStyle getCellStyle(Workbook workbook) {
+        CellStyle style = workbook.createCellStyle();
+        style.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框
+        style.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
+        style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
+        style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
+        return style;
+    }
+
+    //设置边框
+    public static CellStyle getCellStyleAlign(Workbook workbook) {
+        CellStyle style = workbook.createCellStyle();
+        style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 居中
+        style.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框
+        style.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
+        style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
+        style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
+        return style;
+    }
+
+}

+ 88 - 0
src/main/java/com/jeeplus/modules/sg/raiseCapital/utils/RaiseTemplate.java

@@ -0,0 +1,88 @@
+package com.jeeplus.modules.sg.raiseCapital.utils;
+
+import java.io.*;
+
+/**
+ * 根据模板导出excel表格
+ */
+public class RaiseTemplate {
+
+    /**
+     * 复制文件
+     * @param file
+     *            源文件
+     * @param fileNew
+     *            复制到的新文件
+     */
+    public static void fileChannelCopy(File file, File fileNew) {
+        try {
+            InputStream in = null;
+            OutputStream out = null;
+            try {
+                in = new BufferedInputStream(new FileInputStream(file), 1024);
+                out = new BufferedOutputStream(new FileOutputStream(fileNew), 1024);
+                byte[] buffer = new byte[1024];
+                int len;
+                while ((len = in.read(buffer)) != -1) {
+                    out.write(buffer, 0, len);
+                }
+            } finally {
+                if (null != in) {
+                    in.close();
+                }
+                if (null != out) {
+                    out.close();
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public String getSispPath() {
+        String sispPath = this.getClass().getResource("/").getPath()+ "freemarker/";
+        return sispPath;
+    }
+    /**
+     * 读取excel模板,并复制到新文件中供写入和下载
+     * @return
+     */
+    public File createNewFile() {
+        // 读取模板,并赋值到新文件
+        // 文件模板路径
+        String path = (getSispPath() + "excelmodel/raiseCapital.xlsx");
+        File file = new File(path);
+        // 保存文件的路径
+        String realPath = (getSispPath() + "excelmodel");
+        // 新的文件名
+        String newFileName = "completion" + System.currentTimeMillis() + ".xlsx";
+        // 判断路径是否存在
+        File filePath = new File(realPath);
+        if (!filePath.exists()) {
+            filePath.mkdirs();
+        }
+        // 写入到新的excel
+        File newFile = new File(realPath, newFileName);
+        try {
+            newFile.createNewFile();
+            // 复制模板到新文件
+            fileChannelCopy(file, newFile);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return newFile;
+    }
+    /**
+     * 下载成功后删除
+     *
+     * @param files
+     */
+    private void deleteFile(File... files) {
+        for (File file : files) {
+            if (file.exists()) {
+                file.delete();
+            }
+        }
+    }
+
+}

+ 278 - 0
src/main/java/com/jeeplus/modules/sg/raiseCapital/web/RaiseCapitalController.java

@@ -0,0 +1,278 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.sg.raiseCapital.web;
+
+import com.alibaba.fastjson.JSON;
+import com.google.common.collect.Lists;
+import com.jeeplus.common.json.AjaxJson;
+import com.jeeplus.common.utils.DateUtils;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.utils.excel.ExportExcel;
+import com.jeeplus.common.utils.excel.ImportExcel;
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.web.BaseController;
+import com.jeeplus.modules.sg.financial.erpcredit.util.Result;
+import com.jeeplus.modules.sg.financial.erpcredit.util.SerializeUtil;
+import com.jeeplus.modules.sg.picking.activiti.entity.PickIng;
+import com.jeeplus.modules.sg.picking.activiti.entity.PickList;
+import com.jeeplus.modules.sg.picking.activiti.entity.ShowList;
+import com.jeeplus.modules.sg.picking.activiti.service.PickIngService;
+import com.jeeplus.modules.sg.picking.activiti.service.ShowListService;
+import com.jeeplus.modules.sg.raiseCapital.entity.RaiseCapital;
+import com.jeeplus.modules.sg.raiseCapital.service.RaiseCapitalService;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import net.oschina.j2cache.CacheChannel;
+import net.oschina.j2cache.J2Cache;
+import net.oschina.j2cache.redis.RedisCacheProvider;
+import net.oschina.j2cache.redis.RedisClient;
+import net.oschina.j2cache.redis.RedisUtils;
+import org.apache.shiro.authz.annotation.Logical;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+import redis.clients.jedis.Jedis;
+
+import javax.json.Json;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import javax.validation.ConstraintViolationException;
+import java.math.BigDecimal;
+import java.util.*;
+
+/**
+ * 提资模块Controller
+ * @author qy
+ * @date 2021-07-06
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/raiseCapital")
+public class RaiseCapitalController extends BaseController {
+
+	@Autowired
+	private RaiseCapitalService raiseCapitalService;
+
+	@Autowired
+	private PickIngService pickIngService;
+
+	@Autowired
+	private ShowListService showListService;
+	
+	@ModelAttribute
+	public RaiseCapital get(@RequestParam(required=false) String id) {
+		RaiseCapital entity = null;
+		if (StringUtils.isNotBlank(id)){
+			entity = raiseCapitalService.get(id);
+		}
+		if (entity == null){
+			entity = new RaiseCapital();
+		}
+		return entity;
+	}
+	
+	/**
+	 * 提资表单列表页面
+	 */
+	@RequiresPermissions("test:raiseCapital:list")
+	@RequestMapping(value = {"list", ""})
+	public String list(RaiseCapital raiseCapital, Model model) {
+		List<PickList> pickListList = raiseCapitalService.newAllList();
+		model.addAttribute("pickListList", pickListList);
+		model.addAttribute("raiseCapital", raiseCapital);
+		return "modules/sg/raiseCapital/raiseCapital";
+	}
+	
+		/**
+	 * 提资表单列表数据
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:raiseCapital:list")
+	@RequestMapping(value = "data")
+	public Map<String, Object> data(RaiseCapital raiseCapital, HttpServletRequest request, HttpServletResponse response, Model model) {
+		Page<RaiseCapital> page = raiseCapitalService.findPage(new Page<RaiseCapital>(request, response), raiseCapital); 
+		return getBootstrapData(page);
+	}
+
+	/**
+	 * 查看,增加,编辑提资表单表单页面
+	 */
+	@RequiresPermissions(value={"test:raiseCapital:view","test:raiseCapital:add","test:raiseCapital:edit"},logical=Logical.OR)
+	@RequestMapping(value = "form")
+	public String form(RaiseCapital raiseCapital, Model model) {
+		model.addAttribute("raiseCapital", raiseCapital);
+		return "modules/test/one/dialog/leave1Form";
+	}
+
+	/**
+	 * 保存提资表单
+	 */
+	@ResponseBody
+	@RequiresPermissions(value={"test:raiseCapital:add","test:raiseCapital:edit"},logical=Logical.OR)
+	@RequestMapping(value = "save")
+	public AjaxJson save(RaiseCapital raiseCapital, Model model) throws Exception{
+		AjaxJson j = new AjaxJson();
+		/**
+		 * 后台hibernate-validation插件校验
+		 */
+		String errMsg = beanValidator(raiseCapital);
+		if (StringUtils.isNotBlank(errMsg)){
+			j.setSuccess(false);
+			j.setMsg(errMsg);
+			return j;
+		}
+		//新增或编辑表单保存
+		raiseCapitalService.save(raiseCapital);//保存
+		j.setSuccess(true);
+		j.setMsg("保存提资表单成功");
+		return j;
+	}
+	
+	/**
+	 * 删除提资表单
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:raiseCapital:del")
+	@RequestMapping(value = "delete")
+	public AjaxJson delete(RaiseCapital raiseCapital) {
+		AjaxJson j = new AjaxJson();
+		raiseCapitalService.delete(raiseCapital);
+		j.setMsg("删除提资表单成功");
+		return j;
+	}
+	
+	/**
+	 * 批量删除提资表单
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:raiseCapital:del")
+	@RequestMapping(value = "deleteAll")
+	public AjaxJson deleteAll(String ids) {
+		AjaxJson j = new AjaxJson();
+		String idArray[] =ids.split(",");
+		for(String id : idArray){
+			raiseCapitalService.delete(raiseCapitalService.get(id));
+		}
+		j.setMsg("删除提资表单成功");
+		return j;
+	}
+
+	/**
+	 * 导入Excel数据
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:raiseCapital:import")
+    @RequestMapping(value = "import")
+   	public AjaxJson importFile(@RequestParam("file")MultipartFile file, HttpServletResponse response, HttpServletRequest request) {
+		AjaxJson j = new AjaxJson();
+		try {
+			int successNum = 0;
+			int failureNum = 0;
+			StringBuilder failureMsg = new StringBuilder();
+			ImportExcel ei = new ImportExcel(file, 1, 0);
+			List<RaiseCapital> list = ei.getDataList(RaiseCapital.class);
+			for (RaiseCapital raiseCapital : list){
+				try{
+					raiseCapitalService.save(raiseCapital);
+					successNum++;
+				}catch(ConstraintViolationException ex){
+					failureNum++;
+				}catch (Exception ex) {
+					failureNum++;
+				}
+			}
+			if (failureNum>0){
+				failureMsg.insert(0, ",失败 "+failureNum+" 条提资表单记录。");
+			}
+			j.setMsg( "已成功导入 "+successNum+" 条提资表单记录"+failureMsg);
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg("导入提资表单失败!失败信息:"+e.getMessage());
+		}
+		return j;
+    }
+	
+	/**
+	 * 下载导入提资表单数据模板
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:raiseCapital:import")
+    @RequestMapping(value = "import/template")
+     public AjaxJson importFileTemplate(HttpServletResponse response) {
+		AjaxJson j = new AjaxJson();
+		try {
+            String fileName = "提资表单数据导入模板.xlsx";
+    		List<RaiseCapital> list = Lists.newArrayList(); 
+    		new ExportExcel("提资表单数据", RaiseCapital.class, 1).setDataList(list).write(response, fileName).dispose();
+    		return null;
+		} catch (Exception e) {
+			j.setSuccess(false);
+			j.setMsg( "导入模板下载失败!失败信息:"+e.getMessage());
+		}
+		return j;
+    }
+
+    /**
+	 * 获取item和基础数据,存入hashmap,存入redis
+	 * */
+	@ResponseBody
+	@RequestMapping(value = "exportCache")
+	public AjaxJson exportCache(RaiseCapital raiseCapital,String item, HttpServletRequest request, HttpServletResponse response, Model model) {
+		AjaxJson j = new AjaxJson();
+		ArrayList<String> objects = new ArrayList<>();
+		ArrayList<String> findList = new ArrayList<>();
+		List<ShowList> myList = new ArrayList<>();
+		//领料清单list
+		List<ShowList> billMaterials = new ArrayList<>();
+		ShowList showList = new ShowList();
+		if (item != null&&!"".equals(item)) {
+			String[] split = item.split(";");
+			for (int i = 0; i < split.length; i++) {
+				objects.add(split[i]);
+			}
+			for (String s : objects) {
+				String[] split1 = s.split(":");
+				ShowList myShow = new ShowList();
+				myShow.setId(split1[0]);
+				String s1 = split1[1];
+				myShow.setNumber(Double.parseDouble(s1));
+				findList.add(split1[0]);
+				myList.add(myShow);
+			}
+		}
+		HashMap<String, Object> saveMap = new HashMap<>();
+		saveMap.put("raiseCapital", raiseCapital);
+		saveMap.put("myList", myList);
+		String id = UserUtils.getUser().getId();
+		CacheChannel channel = J2Cache.getChannel();
+		RedisClient client = ((RedisCacheProvider)channel.getL2Provider()).getRedisClient();
+		try {
+			client.get().setex(id.getBytes(),120, SerializeUtil.serizlize(saveMap));
+		} finally {
+			client.release();
+		}
+		j.setSuccess(true);
+		return j;
+	}
+
+	@ResponseBody
+	@RequestMapping(value = "export")
+	public Result exportFile(String projectName,HttpServletRequest request, HttpServletResponse response){
+		Result j = new Result();
+		try {
+			raiseCapitalService.getExport(projectName,request,response);
+			j.setSuccess(true);
+			j.setMsg("导出成功!");
+		}catch (Exception e){
+			j.setSuccess(false);
+			j.setMsg("导出失败!失败信息:"+e.getMessage());
+		}
+		return j;
+	}
+}

BIN
src/main/resources/freemarker/excelmodel/raiseCapital.xlsx


+ 66 - 0
src/main/webapp/webpage/modules/sg/picking/activiti/netRaise.jsp

@@ -0,0 +1,66 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>配网物资专职审核领料单</title>
+	<meta http-equiv="Content-type" content="text/html; charset=utf-8">
+	<meta name="decorator" content="ani"/>
+	<%@ include file="/webpage/include/bootstraptable.jsp"%>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			$('#beginDate').datetimepicker({
+				format: "YYYY-MM-DD HH:mm:ss"
+			});
+			$('#endDate').datetimepicker({
+				format: "YYYY-MM-DD HH:mm:ss"
+			});
+		});
+		function save() {
+			var project = $("#projectId").val();
+			var projectName = $("#raiseName").val();
+			var mdTotalAmount = $("#mdTotalAmount").val();
+			if (null==project||""==project){
+				jp.error("请选择需要添加的项目!");
+			}else if(null==mdTotalAmount||""==mdTotalAmount||mdTotalAmount<=0) {
+				jp.error("请填入正确的数值");
+			}else {
+				jp.loading();
+				jp.post("${ctx}/picking/activiti/raiseSave",{"project":project,"projectName":projectName,"mdTotalAmount":mdTotalAmount},function (data) {
+					if (data.success) {
+						console.log(data);
+						jp.getParent().refresh();
+						var dialogIndex = parent.layer.getFrameIndex(window.name); //获取窗口索引
+						parent.layer.close(dialogIndex);
+						jp.success(data.msg);
+					} else {
+						jp.error(data.msg);
+					}
+				})
+			}
+		}
+	</script>
+</head>
+<body class="bg-white">
+	<form:form id="inputForm" modelAttribute="showList" class="form-horizontal">
+		<form:hidden path="id"/>
+		<input type="hidden" id="raiseName" name="raiseName" value="${showList.projectName}"/>
+		<table class="table table-bordered">
+			<tbody>
+			<tr>
+				<td class="width-15 active"><label class="pull-right" style="float: left">物料信息:</label></td>
+				<td class="width-35">
+					<sys:itemselect url="${ctx}/sg/managementcenter/marterialProvided/searchData" id="project" name="projectId" value="${materialProvided.id}" labelName="materialProvided.materialDescription" labelValue="${materialProvided.materialDescription}"
+									title="选择项目号" cssClass="form-control " fieldLabels="${fns:urlEncode('物料编码|物料描述|扩展编码|扩展编码描述|计量单位|参考概算价格|版本号')}" fieldKeys="materialCode|materialDescription|extendedCode|extendedDescription|measuringUnit|referencePrice|versionName" searchLabels="${fns:urlEncode('物料编码|物料描述')}" searchKeys="materialCode|materialDescription"  isMultiSelected="false"></sys:itemselect>
+				</td>
+			</tr>
+			<tr>
+				<td class="width-15 active"><label class="pull-right" style="float: left">添加数量:</label></td>
+				<td class="width-35">
+					<input type="number" id="mdTotalAmount" class="form-control">
+				</td>
+			</tr>
+			</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 423 - 0
src/main/webapp/webpage/modules/sg/raiseCapital/raiseCapital.js

@@ -0,0 +1,423 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script>
+$(document).ready(function() {
+	window.operateEvents = {
+		'change input': function (e, value, row, index) {
+			var ss = $('#' + row.id).val();
+			jp.confirm('确认要修改?', function () {
+				jp.get("${ctx}/picking/activiti/raiseUpdate?id=" + row.id + "&mdTotalAmount=" + ss, function (data) {
+					jp.success(data.msg);
+					refresh();
+				})
+			}, function () {
+				$('#informationTable').bootstrapTable('refresh');
+			})
+		}
+	};
+	var item = "";
+	//bootstrapTable加载数据
+	$('#informationTable').bootstrapTable({
+		//请求方法
+		method: 'post',
+		//类型json
+		dataType: "json",
+		contentType: "application/x-www-form-urlencoded",
+		//显示检索按钮
+		showSearch: false,
+		//显示刷新按钮
+		showRefresh: false,
+		//显示切换手机试图按钮
+		showToggle: false,
+		//显示 内容列下拉框
+		showColumns: false,
+		//显示到处按钮
+		showExport: false,
+		//显示切换分页按钮
+		showPaginationSwitch: false,
+		//最低显示2行
+		minimumCountColumns: 2,
+		//是否显示行间隔色
+		striped: true,
+		//是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+		cache: false,
+		//是否显示分页(*)
+		pagination: false,
+		//排序方式
+		sortOrder: "asc",
+		//初始化加载第一页,默认第一页
+		pageNumber: 1,
+		//每页的记录行数(*)
+		pageSize: 10,
+		//可供选择的每页的行数(*)
+		pageList: [10, 25, 50, 100],
+		//这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+		url: "${ctx}/picking/showlist/raiseData",
+		//默认值为 'limit',传给服务端的参数为:limit, offset, search, sort, order Else
+		////查询参数,每次调用是会带上这个参数,可自定义
+		queryParams: function (params) {
+			var searchParam = $("#searchForm").serializeJSON();
+			searchParam.pageNo = params.limit === undefined ? "1" : params.offset / params.limit + 1;
+			searchParam.pageSize = params.limit === undefined ? -1 : params.limit;
+			searchParam.orderBy = params.sort === undefined ? "" : params.sort + " " + params.order;
+			return searchParam;
+		},
+		//分页方式:client客户端分页,server服务端分页(*)
+		sidePagination: "server",
+		contextMenuTrigger: "right",//pc端 按右键弹出菜单
+		contextMenuTriggerMobile: "press",//手机端 弹出菜单,click:单击, press:长按。
+		contextMenu: '#context-menu',
+		onClickRow: function (row, $el) {
+		},
+		onShowSearch: function () {
+			$("#search-collapse").slideToggle();
+		},
+		formatNoMatches: function () {
+			return "你的自定义文字说明";
+		},
+		columns: [
+			{
+				checkbox: true
+			},
+			{
+				field: 'materialCode',
+				title: '物料编码',
+			}, {
+				field: 'materialDescription',
+				title: '物料名称',
+			}, {
+				field: 'extensionDescription',
+				title: '扩展描述',
+			}, {
+				field: 'mdUnits',
+				title: '单位',
+			}, {
+				field: 'mdTotalAmount',
+				title: '总量',
+				events: operateEvents,
+				formatter: getTime
+			}, {
+				field: 'mdSingleWeight',
+				title: '单重/kg',
+			}, {
+				field: 'mdTotalWeight',
+				title: '总重/吨',
+			}, {
+				field: 'mdTheParty',
+				title: '甲乙供',
+			}, {
+				field: 'mdText',
+				title: '备注',
+			}
+		]
+	});
+
+	$('#informationTable2').bootstrapTable({
+		//请求方法
+		method: 'post',
+		//类型json
+		dataType: "json",
+		contentType: "application/x-www-form-urlencoded",
+		//显示检索按钮
+		showSearch: false,
+		//显示刷新按钮
+		showRefresh: false,
+		//显示切换手机试图按钮
+		showToggle: false,
+		//显示 内容列下拉框
+		showColumns: false,
+		//显示到处按钮
+		showExport: false,
+		//显示切换分页按钮
+		showPaginationSwitch: false,
+		//最低显示2行
+		minimumCountColumns: 2,
+		//是否显示行间隔色
+		striped: true,
+		//是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
+		cache: false,
+		//是否显示分页(*)
+		pagination: false,
+		//排序方式
+		sortOrder: "asc",
+		//初始化加载第一页,默认第一页
+		pageNumber:1,
+		//每页的记录行数(*)
+		pageSize: 10,
+		//可供选择的每页的行数(*)
+		pageList: [10, 25, 50, 100],
+		//这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据
+		url: "${ctx}/picking/showlist/mkData",
+		//默认值为 'limit',传给服务端的参数为:limit, offset, search, sort, order Else
+		////查询参数,每次调用是会带上这个参数,可自定义
+		queryParams : function(params) {
+			var searchParam = $("#searchForm").serializeJSON();
+			searchParam.pageNo = params.limit === undefined? "1" :params.offset/params.limit+1;
+			searchParam.pageSize = params.limit === undefined? -1 : params.limit;
+			searchParam.orderBy = params.sort === undefined? "" : params.sort+ " "+  params.order;
+			return searchParam;
+		},
+		//分页方式:client客户端分页,server服务端分页(*)
+		sidePagination: "server",
+		contextMenuTrigger:"right",//pc端 按右键弹出菜单
+		contextMenuTriggerMobile:"press",//手机端 弹出菜单,click:单击, press:长按。
+		contextMenu: '#context-menu',
+		onClickRow: function(row, $el){
+		},
+		onShowSearch: function () {
+			$("#search-collapse").slideToggle();
+		},
+		formatNoMatches:function(){
+			return "你的自定义文字说明";
+		},
+		columns: [
+			{
+				field: 'mdBigClass',
+				title: '模块大类',
+			},
+			{
+				field: 'mdTheClass',
+				title: '模块中类',
+			},
+			{
+				field: 'mdName',
+				title: '模块名称',
+			},
+			{
+				field: 'materialCode',
+				title: '物料编码',
+			},{
+				field: 'materialDescription',
+				title: '物料名称',
+			},{
+				field: 'extensionDescription',
+				title: '扩展描述',
+			},{
+				field: 'mdUnits',
+				title: '单位',
+			},{
+				field: 'mdTotalAmount',
+				title: '总量',
+			},{
+				field: 'mdSingleWeight',
+				title: '单重/kg',
+			},{
+				field: 'mdTotalWeight',
+				title: '总重/吨',
+			},{
+				field: 'mdTheParty',
+				title: '甲乙供',
+			},{
+				field: 'mdText',
+				title: '备注',
+			}
+		]
+	});
+
+	function getTime(value, row, index) {
+		return [
+			"<input  id="+row.id+" type='number' name='changeAmount' class='form-control required deal'  value="+row.mdTotalAmount+">",
+		].join('');
+	}
+
+	  if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端
+		  $('#informationTable').bootstrapTable("toggleView");
+		}
+
+	$('#informationTable').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
+		'check-all.bs.table uncheck-all.bs.table', function () {
+		$('#remove').prop('disabled', ! $('#informationTable').bootstrapTable('getSelections').length);
+	});
+
+	function getTime(value, row, index) {
+		return [
+			"<input  id="+row.id+" type='number' name='changeAmount' class='form-control required deal'  value="+row.mdTotalAmount+">",
+		].join('');
+	}
+
+	// 绑定查询按扭
+	$("#search").click("click", function() {
+		  $('#informationTable').bootstrapTable('refresh');
+		});
+    $("#click1").click("click", function() {
+        // alert("1");
+        $("#click2").attr("style","");
+        $("#click3").attr("style","");
+        $("#click1").attr("style","border-bottom: 0px;border-left: 1px solid rgb(221,221,221);border-right: 1px solid rgb(221,221,221);border-top: 1px solid rgb(221,221,221)");
+    });
+    $("#click2").click("click",function () {
+        $("#click1").attr("style","");
+		$("#click3").attr("style","");
+        $("#click2").attr("style","border-bottom: 0px;border-left: 1px solid rgb(221,221,221);border-right: 1px solid rgb(221,221,221);border-top: 1px solid rgb(221,221,221)");
+    });
+	$("#click2").click("click",function () {
+		$("#click1").attr("style","");
+		$("#click2").attr("style","");
+		$("#click3").attr("style","border-bottom: 0px;border-left: 1px solid rgb(221,221,221);border-right: 1px solid rgb(221,221,221);border-top: 1px solid rgb(221,221,221)");
+	});
+	// 绑定查询重置按扭
+	 $("#reset").click("click", function() {
+		  $("#searchForm  input").val("");
+		  $("#searchForm  select").val("");
+		  $('#informationTable').bootstrapTable('refresh');
+		});
+
+		$("#dq").click("click", function () {
+			$("#div1").attr("style", "display:block;");
+			$("#div2").attr("style", "display:none;");
+			$("#div3").attr("style", "display:none;");
+		});
+		$("#qd").click("click", function () {
+			let projectName = $("#projectName").val();
+			var item = "";
+			$('input[name="need"]').each(function(){
+				var val = $(this).val();
+				if (val!=null&&val!=""&&val>0) {
+					item += $(this).attr("id")+":"+val+";"
+				}
+			})
+			//将item提交,遍历后保存数据
+			if(projectName == null || projectName == ""){
+				jp.error("项目名称不能为空!");
+			} else if (item == null || item == "") {
+				jp.error("请填写模块表");
+			} else {
+				$("#div1").attr("style", "display:none;");
+				$("#div2").attr("style", "display:block;");
+				$("#div3").attr("style", "display:none;");
+				jp.post("${ctx}/picking/showlist/saveData",
+					{
+						"item": item,
+						"projectName": projectName
+					},
+					function (data) {
+						console.log(projectName);
+						$('#informationTable').bootstrapTable('refresh', {
+							query:
+								{
+									projectName: projectName
+								}
+						});
+					})
+			}
+		});
+	$("#mkqd").click("click", function () {
+		$("#div1").attr("style", "display:none;");
+		$("#div2").attr("style", "display:none;");
+		$("#div3").attr("style", "display:block;");
+		var item = "";
+		$('input[name="need"]').each(function(){
+			var val = $(this).val();
+			if (val!=null&&val!=""&&val>0) {
+				item += $(this).attr("id")+":"+val+";"
+				console.log(item+"\t");
+			}
+		})
+		$('#informationTable2').bootstrapTable('refresh', {
+			query:
+				{
+					item: item
+				}
+		});
+	});
+	$("#agree").click(function () {
+		var item = "";
+		$('input[name="need"]').each(function(){
+			var val = $(this).val();
+			if (val!=null&&val!=""&&val>0) {
+				item += $(this).attr("id")+":"+val+";"
+				console.log(item+"\t");
+			}
+		})
+		let projectNo = $("#projectNo").val();
+		let approver = $("#approver").val();
+		let erpCode = $("#erpCode").val();
+		let reviewer = $("#reviewer").val();
+		let projectName = $("#projectName").val();
+		let preparedBy = $("#preparedBy").val();
+		let manager = $("#manager").val();
+		let reqUnit = $("#reqUnit").val();
+		let preTime = $("#preTime").val();
+		if(projectName == null || projectName == ""){
+			jp.error("项目名称不能为空!");
+		} else if (item == null || item == "") {
+			jp.error("请填写模块表");
+		} else {
+			jp.post("${ctx}/raiseCapital/exportCache",
+			{
+			    "item":item,
+				"projectNo": projectNo,
+				"approver": approver,
+				"erpCode": erpCode,
+				"reviewer": reviewer,
+				"projectName": projectName,
+				"preparedBy": preparedBy,
+				"manager": manager,
+				"reqUnit": reqUnit,
+				"preTime": preTime
+			},
+			function (data) {
+				if(data.success){
+					jp.downloadFile('${ctx}/raiseCapital/export?projectName='+projectName,'raiseCapital');//给个name是为了能够在某些条件下下载两个文件
+					jp.success("下载成功")
+					refreshWindows();
+				}
+			})
+		}
+	});
+
+
+
+
+	function refreshWindows(){
+		location.reload();
+	}
+
+	function addRow(list, idx, tpl, row){
+		$(list).append(Mustache.render(tpl, {
+			idx: idx, delBtn: true, row: row
+		}));
+	}
+})
+
+//刷新列表
+function refresh() {
+    let projectName = $("#projectName").val();
+    $('#informationTable').bootstrapTable('refresh',{
+        query:
+            {
+                projectName: projectName
+            }
+    });
+}
+
+function getIdSelections() {
+    return $.map($("#informationTable").bootstrapTable('getSelections'), function (row) {
+        return row.id
+    });
+}
+
+function deleteAll(){
+	jp.confirm('确认要删除该领料信息?', function(){
+		jp.loading();
+		jp.get("${ctx}/picking/activiti/deleteRaiseAll?ids=" + getIdSelections(), function(data){
+			refresh();
+			jp.success(data.msg);
+		})
+	})
+}
+
+function add(){
+	var projectName = $("#projectName").val();
+	jp.openSaveDialog('新增领料信息', "${ctx}/picking/activiti/netRaise?projectName=" + projectName, '800px', '500px');
+}
+// $(document).ready(function (){
+//     $("li").each(function(index){
+//         $(this).click(function(){
+//             alert(index)
+//             $("li").removeClass("style");//删除当前元素的样式
+//             $("li").eq(index).attr("style","border-bottom: 0px;border-left: 1px solid rgb(221,221,221);border-right: 1px solid rgb(221,221,221);border-top: 1px solid rgb(221,221,221)");//添加当前元素的样式
+//         });
+//     });
+// });
+
+</script>

+ 180 - 0
src/main/webapp/webpage/modules/sg/raiseCapital/raiseCapital.jsp

@@ -0,0 +1,180 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>提资管理</title>
+	<meta http-equiv="Content-type" content="text/html; charset=utf-8">
+	<meta name="decorator" content="ani"/>
+	<%@ include file="/webpage/include/bootstraptable.jsp"%>
+	<%@include file="raiseCapital.js" %>
+	<style type="text/css">
+		#div1{
+			margin-top: 10px;
+		}
+		.well-class-body{
+			width: 150px;
+			word-wrap: break-word;
+			word-break: break-all;
+			/*text-align: right;*/
+			margin: 2px;
+		}
+		.list-lig-one{
+			color: #0C0C0C;
+			/*text-align: center;*/
+			font-size: 17px;
+			background-color: whitesmoke;
+		}
+		.list-lig-two{
+			/*background-color: #6495ED;*/
+			color: #333333;
+			font-size: 14px;
+		}
+	</style>
+</head>
+<body>
+	<div class="wrapper wrapper-content">
+	<div class="panel panel-primary">
+	<div class="panel-heading">
+		<h3 class="panel-title">提资管理</h3>
+	</div>
+		<div class="panel-body">
+			<div>
+				<ul class="nav nav-tabs">
+					<li role="presentation" id="click1" style="border-bottom: 0px;border-left: 1px solid rgb(221,221,221);border-right: 1px solid rgb(221,221,221);border-top: 1px solid rgb(221,221,221)"><a id="dq" href="javascript:void(0)">填写需要材料</a></li>
+					<%--<li role="presentation" id="click3" ><a id="mkqd" href="javascript:void(0)">查看模块清单</a></li>--%>
+					<li role="presentation" id="click2" ><a id="qd" href="javascript:void(0)">查看领料清单</a></li>
+				</ul>
+			</div>
+			<!-- 表格 -->
+			<div id="div1">
+				<table class="table table-bordered">
+					<tbody>
+					<tr>
+						<td class="width-15 active"><label class="pull-right">项目编号:</label></td>
+						<td class="width-35">
+							<input id="projectNo" cssClass="form-control" placeholder="项目编号"/>
+						</td>
+						<td class="width-15 active"><label class="pull-right">批准人:</label></td>
+						<td class="width-35">
+							<input id="approver" cssClass="form-control" placeholder="批准人"/>
+						</td>
+					</tr>
+					<tr>
+						<td class="width-15 active"><label class="pull-right">erp编码:</label></td>
+						<td class="width-35">
+							<input id="erpCode" cssClass="form-control" placeholder="erp编码"/>
+						</td>
+						<td class="width-15 active"><label class="pull-right">审核人:</label></td>
+						<td class="width-35">
+							<input id="reviewer" cssClass="form-control" placeholder="审核人"/>
+						</td>
+					</tr>
+					<tr>
+						<td class="width-15 active"><label class="pull-right">项目名称:<font color='red'>*</font></label></td>
+						<td class="width-35">
+							<input id="projectName" cssClass="form-control required" placeholder="必填"/>
+						</td>
+						<td class="width-15 active"><label class="pull-right">制单人:</label></td>
+						<td class="width-35">
+							<input id="preparedBy" cssClass="form-control required" placeholder="制单人"/>
+						</td>
+					</tr>
+					<tr>
+						<td class="width-15 active"><label class="pull-right">甲方项目经理确认:</label></td>
+						<td class="width-35">
+							<input id="manager" cssClass="form-control required" placeholder="甲方项目经理确认"/>
+						</td>
+						<td class="width-15 active"><label class="pull-right">领用单位:</label></td>
+						<td class="width-35">
+							<input id="reqUnit" cssClass="form-control required" placeholder="领用单位"/>
+						</td>
+					</tr>
+					<tr>
+						<td class="width-15 active"><label class="pull-right">制单时间:</label></td>
+						<td class="width-35">
+							<input id="preTime" cssClass="form-control" placeholder="制单时间"/>
+						</td>
+					</tr>
+					</tbody>
+				</table>
+				<table class="table table-view">
+					<tbody>
+					<c:forEach items="${pickListList}" var="items" varStatus="status">
+						<c:if test="${status.count eq 1 || (status.count-1) % 1 eq 0}">
+						<tr>
+						</c:if>
+							<td colspan="4" class="list-lig-one">${items.name}</td>
+						<c:if test="${status.count % 1 eq 0 || status.count eq 1}">
+						</tr>
+						</c:if>
+
+						<c:forEach items="${items.mdTheClassList}" var="items" varStatus="status">
+							<c:if test="${status.count eq 1 || (status.count-1) % 1 eq 0}">
+								<tr>
+							</c:if>
+							<td colspan="4" class="list-lig-two">${items.name}</td>
+							<c:if test="${status.count % 1 eq 0 || status.count eq 1}">
+								</tr>
+							</c:if>
+
+							<c:forEach items="${items.mdSmallClassList}" var="itemss" varStatus="status">
+								<c:if test="${status.count eq 1 || (status.count-1) % 4 eq 0}">
+									<tr>
+								</c:if>
+								<td style="text-align: center;vertical-align: middle">
+										<div class="well-class-body" style="float: left;">
+											<a href="javascript:jp.openViewDialog('模块清单','${ctx}/managementcenter/moduleacquisition/moduleListing/list?blockId=${itemss.id}', '800px', '500px');">
+												${itemss.name}
+											</a>
+										</div>
+										<div style="float: left;margin-left: 5px;margin: auto">
+											<input style="width:40px;" placeholder="0" type="number" min="0" name="need" id="${itemss.id}"/><span>&nbsp;${itemss.mdUnit}</span>
+<%--											<span><img onclick="jp.showPic('${itemss.mdImg}')" src="${itemss.mdImg}" height="50px"></span>--%>
+											<c:if test="${not empty itemss.mdImg}">
+												<a id="imgButton" class="btn btn-success btn-xs waves-effect m-r-5" href="javascript:jp.openViewDialog('查看附件','${ctx}/picking/activiti/pickPic?id=${itemss.id}', '800px', '500px')">显示附件</a>
+											</c:if>
+										</div>
+								</td>
+								<c:if test="${status.count % 4 eq 0 || status.count eq 4}">
+									</tr>
+								</c:if>
+							</c:forEach>
+
+						</c:forEach>
+					</c:forEach>
+					</tbody>
+				</table>
+			</div>
+<%--			//领料--%>
+			<div id="div2" style="display: none">
+				<!-- 工具栏 -->
+				<div style="margin-top: 10px;">
+					<button id="add" class="btn btn-primary" onclick="add()">
+						<i class="glyphicon glyphicon-plus"></i> 新建
+					</button>
+					<button id="remove" class="btn btn-danger" disabled onclick="deleteAll()">
+						<i class="glyphicon glyphicon-remove"></i> 删除
+					</button>
+				</div>
+				<table id="informationTable"   data-toolbar="#toolbar" class="table"></table>
+				<div class="row">
+					<div class="col-sm-3"></div>
+					<div class="col-sm-6">
+						<div class="form-group text-center">
+							<input id="agree" class="btn  btn-primary btn-lg btn-parsley" type="submit" value="导出文档" />&nbsp;
+						</div>
+					</div>
+				</div>
+			</div>
+<%--			//模块清单
+			<div id="div3" style="display: none">
+				<table id="informationTable2"   data-toolbar="#toolbar" class="table"></table>
+			</div>--%>
+
+		</div>
+
+	</div>
+	</div>
+</body>
+</html>
+