Browse Source

设计单位提资管理功能

user5 3 years ago
parent
commit
b9c6ea2bc0

+ 17 - 0
src/main/java/com/jeeplus/modules/sg/raiseCapitalDesign/mapper/RaiseCapitalDesignMapper.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.raiseCapitalDesign.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 RaiseCapitalDesignMapper extends BaseMapper<RaiseCapital> {
+
+}

+ 161 - 0
src/main/java/com/jeeplus/modules/sg/raiseCapitalDesign/mapper/xml/RaiseCapitalDesignMapper.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.raiseCapitalDesign.mapper.RaiseCapitalDesignMapper">
+
+	<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>

+ 244 - 0
src/main/java/com/jeeplus/modules/sg/raiseCapitalDesign/service/RaiseCapitalDesignService.java

@@ -0,0 +1,244 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.sg.raiseCapitalDesign.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.sg.raiseCapitalDesign.mapper.RaiseCapitalDesignMapper;
+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 RaiseCapitalDesignService extends CrudService<RaiseCapitalDesignMapper, 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/raiseCapitalDesign/utils/RaiseCapitalDesignExportUtil.java

@@ -0,0 +1,404 @@
+package com.jeeplus.modules.sg.raiseCapitalDesign.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 RaiseCapitalDesignExportUtil {
+
+
+    //模块表
+    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/raiseCapitalDesign/utils/RaiseCapitalDesignTemplate.java

@@ -0,0 +1,88 @@
+package com.jeeplus.modules.sg.raiseCapitalDesign.utils;
+
+import java.io.*;
+
+/**
+ * 根据模板导出excel表格
+ */
+public class RaiseCapitalDesignTemplate {
+
+    /**
+     * 复制文件
+     * @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();
+            }
+        }
+    }
+
+}

+ 274 - 0
src/main/java/com/jeeplus/modules/sg/raiseCapitalDesign/web/RaiseCapitalDesignController.java

@@ -0,0 +1,274 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.sg.raiseCapitalDesign.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.sg.raiseCapitalDesign.service.RaiseCapitalDesignService;
+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 徐滕
+ * @date 2021-08-10
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/raiseCapitalDesign")
+public class RaiseCapitalDesignController extends BaseController {
+
+	@Autowired
+	private RaiseCapitalDesignService raiseCapitalDesignService;
+
+
+	@ModelAttribute
+	public RaiseCapital get(@RequestParam(required=false) String id) {
+		RaiseCapital entity = null;
+		if (StringUtils.isNotBlank(id)){
+			entity = raiseCapitalDesignService.get(id);
+		}
+		if (entity == null){
+			entity = new RaiseCapital();
+		}
+		return entity;
+	}
+
+	/**
+	 * 提资表单列表页面
+	 */
+	@RequiresPermissions("test:raiseCapitalDesign:list")
+	@RequestMapping(value = {"list", ""})
+	public String list(RaiseCapital raiseCapital, Model model) {
+		List<PickList> pickListList = raiseCapitalDesignService.newAllList();
+		model.addAttribute("pickListList", pickListList);
+		model.addAttribute("raiseCapital", raiseCapital);
+		return "modules/sg/raiseCapitalDesign/raiseCapitalDesign";
+	}
+
+		/**
+	 * 提资表单列表数据
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:raiseCapitalDesign:list")
+	@RequestMapping(value = "data")
+	public Map<String, Object> data(RaiseCapital raiseCapital, HttpServletRequest request, HttpServletResponse response, Model model) {
+		Page<RaiseCapital> page = raiseCapitalDesignService.findPage(new Page<RaiseCapital>(request, response), raiseCapital);
+		return getBootstrapData(page);
+	}
+
+	/**
+	 * 查看,增加,编辑提资表单表单页面
+	 */
+	@RequiresPermissions(value={"test:raiseCapitalDesign:view","test:raiseCapitalDesign:add","test:raiseCapitalDesign: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:raiseCapitalDesign:add","test:raiseCapitalDesign: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;
+		}
+		//新增或编辑表单保存
+		raiseCapitalDesignService.save(raiseCapital);//保存
+		j.setSuccess(true);
+		j.setMsg("保存提资表单成功");
+		return j;
+	}
+
+	/**
+	 * 删除提资表单
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:raiseCapitalDesign:del")
+	@RequestMapping(value = "delete")
+	public AjaxJson delete(RaiseCapital raiseCapital) {
+		AjaxJson j = new AjaxJson();
+		raiseCapitalDesignService.delete(raiseCapital);
+		j.setMsg("删除提资表单成功");
+		return j;
+	}
+
+	/**
+	 * 批量删除提资表单
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:raiseCapitalDesign:del")
+	@RequestMapping(value = "deleteAll")
+	public AjaxJson deleteAll(String ids) {
+		AjaxJson j = new AjaxJson();
+		String idArray[] =ids.split(",");
+		for(String id : idArray){
+			raiseCapitalDesignService.delete(raiseCapitalDesignService.get(id));
+		}
+		j.setMsg("删除提资表单成功");
+		return j;
+	}
+
+	/**
+	 * 导入Excel数据
+	 */
+	@ResponseBody
+	@RequiresPermissions("test:raiseCapitalDesign: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{
+					raiseCapitalDesignService.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:raiseCapitalDesign: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 {
+			raiseCapitalDesignService.getExport(projectName,request,response);
+			j.setSuccess(true);
+			j.setMsg("导出成功!");
+		}catch (Exception e){
+			j.setSuccess(false);
+			j.setMsg("导出失败!失败信息:"+e.getMessage());
+		}
+		return j;
+	}
+}

+ 424 - 0
src/main/webapp/webpage/modules/sg/raiseCapitalDesign/raiseCapitalDesign.js

@@ -0,0 +1,424 @@
+<%@ 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 {
+			alert(111111);
+			jp.post("${ctx}/raiseCapitalDesign/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}/raiseCapitalDesign/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/raiseCapitalDesign/raiseCapitalDesign.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="raiseCapitalDesign.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>
+