Ver código fonte

结算流程

yue 5 anos atrás
pai
commit
1d8c3f5958
20 arquivos alterados com 2018 adições e 9 exclusões
  1. 55 8
      src/main/java/com/jeeplus/modules/act/service/ActTaskService.java
  2. 39 0
      src/main/java/com/jeeplus/modules/act/web/ActTaskController.java
  3. 4 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/activiti/mapper/ConstructionMapper.java
  4. 6 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/activiti/mapper/xml/ConstructionMapper.xml
  5. 8 0
      src/main/java/com/jeeplus/modules/sg/managementcenter/activiti/service/ConstructionService.java
  6. 2 1
      src/main/java/com/jeeplus/modules/sg/managementcenter/project/mapper/xml/ProjectMapper.xml
  7. 41 0
      src/main/java/com/jeeplus/modules/sg/settActivi/enntity/SettActivi.java
  8. 141 0
      src/main/java/com/jeeplus/modules/sg/settActivi/enntity/SettList.java
  9. 51 0
      src/main/java/com/jeeplus/modules/sg/settActivi/mapper/SettActiviMapper.java
  10. 221 0
      src/main/java/com/jeeplus/modules/sg/settActivi/mapper/xml/SettActiviMapper.xml
  11. 114 0
      src/main/java/com/jeeplus/modules/sg/settActivi/service/SettActiviService.java
  12. 320 0
      src/main/java/com/jeeplus/modules/sg/settActivi/web/SettActiviController.java
  13. 277 0
      src/main/webapp/webpage/modules/sg/settactivi/activiti/returnDoc.js
  14. 75 0
      src/main/webapp/webpage/modules/sg/settactivi/activiti/returnDoc.jsp
  15. 205 0
      src/main/webapp/webpage/modules/sg/settactivi/activiti/reviewQuantity.js
  16. 87 0
      src/main/webapp/webpage/modules/sg/settactivi/activiti/reviewQuantity.jsp
  17. 35 0
      src/main/webapp/webpage/modules/sg/settactivi/activiti/settActiviStart.js
  18. 88 0
      src/main/webapp/webpage/modules/sg/settactivi/activiti/settActiviStart.jsp
  19. 174 0
      src/main/webapp/webpage/modules/sg/settactivi/activiti/useQuantity.js
  20. 75 0
      src/main/webapp/webpage/modules/sg/settactivi/activiti/useQuantity.jsp

+ 55 - 8
src/main/java/com/jeeplus/modules/act/service/ActTaskService.java

@@ -214,14 +214,24 @@ public class ActTaskService extends BaseService {
             map.put("task.processDefinitionId", task.getProcessDefinitionId());
             map.put("task.processInstanceId", task.getProcessInstanceId());
             String s = constructionService.idProjectName(task.getProcessInstanceId());
-            String s2 = constructionService.idProjectName3(task.getProcessInstanceId());
-            String s1 = constructionService.idProjectName2(task.getProcessInstanceId());
-            if (!"".equals(s) && s != null) {
+            if ("".equalsIgnoreCase(s) || null == s) {
+                String s2 = constructionService.idProjectName3(task.getProcessInstanceId());
+                if ("".equalsIgnoreCase(s2) || null == s2) {
+                    String s1 = constructionService.idProjectName2(task.getProcessInstanceId());
+                    if ("".equalsIgnoreCase(s1) || null == s1) {
+                        String s4 = constructionService.idProjectName4(task.getProcessInstanceId());
+                        if ("".equalsIgnoreCase(s4) || null == s4) {
+                        } else {
+                            map.put("task.projectName", s4);
+                        }
+                    } else {
+                        map.put("task.projectName", s1);
+                    }
+                } else {
+                    map.put("task.projectName", s2);
+                }
+            }else {
                 map.put("task.projectName", s);
-            } else if (!"".equals(s1) && s1 != null) {
-                map.put("task.projectName", s1);
-            } else if (!"".equals(s2) && s2 != null) {
-                map.put("task.projectName", s2);
             }
             map.put("task.taskDefinitionKey", task.getTaskDefinitionKey());
             map.put("vars", task.getProcessVariables());
@@ -2840,8 +2850,45 @@ public class ActTaskService extends BaseService {
     }
 
     /**
+     * 复合数量修改
+     */
+    @Transactional(readOnly = false)
+    public void reviewQuantity(Act act) {
+        String flag = act.getFlag();
+        // 设置意见
+        act.setComment(("yes".equals(flag) ? "[同意] " : "[驳回] ") + act.getComment());
+        act.preUpdate();
+        // 对不同环节的业务逻辑进行操作
+        String taskDefKey = act.getTaskDefKey();
+        // 提交流程任务
+        Map<String, Object> vars = Maps.newHashMap();
+        vars.put("pass", "yes".equals(flag) ? true : false);
+        Project user = MyActiviUtils.findJSUser(act.getProcInsId());
+        String loginName = UserUtils.getByUserName(user.getProjectManageRole()).getLoginName();
+        vars.put("manager", loginName);
+        complete(act.getTaskId(), act.getProcInsId(), act.getComment(), vars);
+    }
+
+
+    /**
+     * 结算填写现场使用量
+     */
+    @Transactional(readOnly = false)
+    public void returnDoc(Act act) {
+        String flag = act.getFlag();
+        //设置意见
+        act.setComment(("yes".equals(flag) ? "[同意] " : "[驳回] ") + act.getComment());
+        act.preUpdate();
+        //对不同环节的业务逻辑进行操作
+        String taskDefKey = act.getTaskDefKey();
+        //提交流程任务
+        Map<String, Object> vars = Maps.newHashMap();
+        vars.put("pass", "yes".equals(flag) ? true : false);
+        complete(act.getTaskId(), act.getProcInsId(), act.getComment(), vars);
+    }
+
+    /**
      * 保存审核意见
-     *
      * @param act
      */
     @Transactional(readOnly = false)

+ 39 - 0
src/main/java/com/jeeplus/modules/act/web/ActTaskController.java

@@ -39,6 +39,7 @@ import com.jeeplus.modules.sg.materialmodule.activiti.service.MaterialModuleServ
 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.settActivi.service.SettActiviService;
 import com.jeeplus.modules.sys.entity.DictValue;
 import com.jeeplus.modules.sys.entity.User;
 import com.jeeplus.modules.sys.service.SystemService;
@@ -131,6 +132,9 @@ public class ActTaskController extends BaseController {
     @Autowired
     private MaterialModuleService materialModuleService;
 
+    @Autowired
+    private SettActiviService settActiviService;
+
 
     /**
      * 获取待办列表
@@ -1483,6 +1487,41 @@ public class ActTaskController extends BaseController {
     }
 
     /**
+     * 复合数量修改
+     */
+    @ResponseBody
+    @RequestMapping(value = "reviewQuantityTask")
+    public AjaxJson reviewQuantityTask(Act act,String pic, UploadImages uploadImages) {
+        AjaxJson j = new AjaxJson();
+        if (pic != null && pic != "") {
+            uploadImages.setPath(pic);
+            uploadImages.setProcInsId(act.getProcInsId());
+            uploadImages.setImgName("21");
+            uploadImages.setuId(UserUtils.getUser().getName());
+            Project user = MyActiviUtils.findJSUser(act.getProcInsId());
+            uploadImages.setProjectId(user.getId());
+            uploadImagesService.save(uploadImages);
+        }
+        actTaskService.reviewQuantity(act);
+        j.setMsg("审批成功");
+        return j;
+    }
+
+
+    /**
+     * 结束流程,完成结算
+     */
+    @ResponseBody
+    @RequestMapping(value = "returnDocTask")
+    public AjaxJson returnDocTask(Act act) {
+        AjaxJson j = new AjaxJson();
+        settActiviService.finSetStatus(act.getProcInsId());
+        actTaskService.returnDoc(act);
+        j.setMsg("审批成功");
+        return j;
+    }
+
+    /**
      * 运行人员审核图纸
      */
     @ResponseBody

+ 4 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/activiti/mapper/ConstructionMapper.java

@@ -49,12 +49,16 @@ public interface ConstructionMapper extends BaseMapper<Construction> {
     //根据流程定义号查询项目需求名称
     String idProjectName3(@Param("procInsId") String procInsId);
 
+    String idProjectName4(@Param("procInsId") String procInsId);
+
     List<String> insIdByName(String projectName);
 
     List<String> insIdByName2(String projectName);
 
     List<String> insIdByName3(String projectName);
 
+    List<String> insIdByName4(String projectName);
+
     void insertDisclose(Construction construction);
 
     List<Construction> findDisclosePage(Construction construction);

+ 6 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/activiti/mapper/xml/ConstructionMapper.xml

@@ -279,6 +279,9 @@
 	<select id="idProjectName3" resultType="string">
 		select project_name from sg_construction_process where proc_ins_id = #{procInsId};
 	</select>
+	<select id="idProjectName4" resultType="java.lang.String">
+		select requireName	from xm_settlement_process where proc_ins_id = #{procInsId};
+	</select>
 	<select id="findNameByInsID" resultType="com.jeeplus.modules.sg.managementcenter.project.entity.Project">
 		select id,require_name from xm_project_details where id =  (select project_id from md_picking_application where proc_ins_id  = #{id})
 	</select>
@@ -294,6 +297,9 @@
 	<select id="insIdByName3" resultType="java.lang.String">
 		select proc_ins_id from sg_construction_process where project_name like concat('%',#{projectName},'%')
 	</select>
+	<select id="insIdByName4" resultType="java.lang.String">
+		select proc_ins_id from xm_settlement_process where requireName like concat('%',#{projectName},'%')
+	</select>
 	<insert id="insertDisclose">
 		replace into xm_disclose_conclusion
 		(

+ 8 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/activiti/service/ConstructionService.java

@@ -112,13 +112,21 @@ public class ConstructionService extends CrudService<ConstructionMapper, Constru
 		return s;
 	}
 
+	//根据流程定义号查询结算流程项目需求名称
+	public String idProjectName4(String procInsId) {
+		String s = constructionMapper.idProjectName4(procInsId);
+		return s;
+	}
+
 	//根据输入的项目名称,分别从流程表中查询对应的项目信息
 	public List<String> insIdByName(String projectName){
 		List<String> strings = constructionMapper.insIdByName(projectName);
 		List<String> strings1 = constructionMapper.insIdByName2(projectName);
 		List<String> strings2 = constructionMapper.insIdByName3(projectName);
+		List<String> strings3 = constructionMapper.insIdByName4(projectName);
 		strings.addAll(strings1);
 		strings.addAll(strings2);
+		strings.addAll(strings3);
 		return strings;
 	}
 

+ 2 - 1
src/main/java/com/jeeplus/modules/sg/managementcenter/project/mapper/xml/ProjectMapper.xml

@@ -737,7 +737,8 @@
 
 	<select id="findUserById"  resultType="com.jeeplus.modules.sg.managementcenter.project.entity.Project">
 		select
-			project_name
+			id
+			,project_name
 			,demand_unit
 			,project_manage_role
 			,distribution_engineering

+ 41 - 0
src/main/java/com/jeeplus/modules/sg/settActivi/enntity/SettActivi.java

@@ -0,0 +1,41 @@
+package com.jeeplus.modules.sg.settActivi.enntity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.core.persistence.ActEntity;
+
+import java.util.Date;
+/**
+ * 结算流程
+ * */
+public class SettActivi extends ActEntity<SettActivi> {
+    //项目定义号
+    private String projectId;
+    //项目需求名称
+    private String requireName;
+    //项目经理
+    private String constructionUnitManage;
+
+    public String getProjectId() {
+        return projectId;
+    }
+
+    public void setProjectId(String projectId) {
+        this.projectId = projectId;
+    }
+
+    public String getRequireName() {
+        return requireName;
+    }
+
+    public void setRequireName(String requireName) {
+        this.requireName = requireName;
+    }
+
+    public String getConstructionUnitManage() {
+        return constructionUnitManage;
+    }
+
+    public void setConstructionUnitManage(String constructionUnitManage) {
+        this.constructionUnitManage = constructionUnitManage;
+    }
+}

+ 141 - 0
src/main/java/com/jeeplus/modules/sg/settActivi/enntity/SettList.java

@@ -0,0 +1,141 @@
+package com.jeeplus.modules.sg.settActivi.enntity;
+
+import com.jeeplus.common.utils.excel.annotation.ExcelField;
+import com.jeeplus.core.persistence.ActEntity;
+
+/**
+ * 结算流程列表
+ * */
+public class SettList extends ActEntity<SettList> {
+    //项目定义号
+    private String projectId;
+    //项目自定义描述
+    private String requireName;
+    //物料编码
+    private String materialEncoding;
+    //物料名称
+    private String materialName;
+    //单位
+    private String company;
+    //出库单价(元)
+    private Double unitPrice;
+    //出库数量
+    private Double outgoingQuantity;
+    //出库总价
+    private Double totalPrice;
+    //现场使用数量
+    private Double usedQuantity;
+    //审计现场复核数量
+    private Double reviewQuantity;
+    //施工单位备注
+    private String settMark;
+    //甲供材超欠供
+    private Double overUnder;
+
+
+    public String getProjectId() {
+        return projectId;
+    }
+
+    public void setProjectId(String projectId) {
+        this.projectId = projectId;
+    }
+
+    public String getRequireName() {
+        return requireName;
+    }
+
+    public void setRequireName(String requireName) {
+        this.requireName = requireName;
+    }
+
+    @ExcelField(title = "物料编码", align = 2, sort = 2)
+    public String getMaterialEncoding() {
+        return materialEncoding;
+    }
+
+    public void setMaterialEncoding(String materialEncoding) {
+        this.materialEncoding = materialEncoding;
+    }
+
+    @ExcelField(title = "物料名称", align = 2, sort = 3)
+    public String getMaterialName() {
+        return materialName;
+    }
+
+    public void setMaterialName(String materialName) {
+        this.materialName = materialName;
+    }
+
+    @ExcelField(title = "单位", align = 2, sort = 4)
+    public String getCompany() {
+        return company;
+    }
+
+    public void setCompany(String company) {
+        this.company = company;
+    }
+
+    @ExcelField(title = "出库单价(元)", align = 2, sort = 5)
+    public Double getUnitPrice() {
+        return unitPrice;
+    }
+
+    public void setUnitPrice(Double unitPrice) {
+        this.unitPrice = unitPrice;
+    }
+
+    @ExcelField(title = "出库数量", align = 2, sort = 6)
+    public Double getOutgoingQuantity() {
+        return outgoingQuantity;
+    }
+
+    public void setOutgoingQuantity(Double outgoingQuantity) {
+        this.outgoingQuantity = outgoingQuantity;
+    }
+
+    @ExcelField(title = "出库总价", align = 2, sort = 7)
+    public Double getTotalPrice() {
+        return totalPrice;
+    }
+
+    public void setTotalPrice(Double totalPrice) {
+        this.totalPrice = totalPrice;
+    }
+
+    @ExcelField(title = "现场使用数量", align = 2, sort = 8)
+    public Double getUsedQuantity() {
+        return usedQuantity;
+    }
+
+    public void setUsedQuantity(Double usedQuantity) {
+        this.usedQuantity = usedQuantity;
+    }
+
+    @ExcelField(title = "审计现场复核数量", align = 2, sort = 9)
+    public Double getReviewQuantity() {
+        return reviewQuantity;
+    }
+
+    public void setReviewQuantity(Double reviewQuantity) {
+        this.reviewQuantity = reviewQuantity;
+    }
+
+    @ExcelField(title = "施工单位备注", align = 2, sort = 10)
+    public String getSettMark() {
+        return settMark;
+    }
+
+    public void setSettMark(String settMark) {
+        this.settMark = settMark;
+    }
+
+    @ExcelField(title = "甲供材超欠供", align = 2, sort = 11)
+    public Double getOverUnder() {
+        return overUnder;
+    }
+
+    public void setOverUnder(Double overUnder) {
+        this.overUnder = overUnder;
+    }
+}

+ 51 - 0
src/main/java/com/jeeplus/modules/sg/settActivi/mapper/SettActiviMapper.java

@@ -0,0 +1,51 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.sg.settActivi.mapper;
+
+import com.jeeplus.core.persistence.BaseMapper;
+import com.jeeplus.core.persistence.annotation.MyBatisMapper;
+import com.jeeplus.modules.sg.managementcenter.project.entity.Project;
+import com.jeeplus.modules.sg.picking.activiti.entity.*;
+import com.jeeplus.modules.sg.settActivi.enntity.SettActivi;
+import com.jeeplus.modules.sg.settActivi.enntity.SettList;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * 模块显示MAPPER接口
+ * @author
+ * @version 2019-11-08
+ */
+
+@MyBatisMapper
+public interface SettActiviMapper extends BaseMapper<SettActivi> {
+
+    //根据项目idList查询项目信信息
+    List<Project> findByIdList(List<String> projectId);
+
+    //插入settList表中
+    void insertSettList(List<SettList> settLists);
+
+    void insertSettActivi(List<Project> projectList);
+
+    List<SettActivi> findAllSett(List<Project> projectList);
+
+    void updateSetStatus(List<SettActivi> settActivis);
+
+    void finSetStatus(String procInsId);
+
+    String findOutgoingQuantity(SettList settList);
+
+    List<SettList> findUseQuantityData(SettList settList);
+
+    void updateUsed(SettList settList);
+
+    void updateReviewQuantity(SettList settList);
+
+    void updateSettMark(SettList settList);
+
+    SettActivi exportFind(String procInsId);
+}

+ 221 - 0
src/main/java/com/jeeplus/modules/sg/settActivi/mapper/xml/SettActiviMapper.xml

@@ -0,0 +1,221 @@
+<?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.settActivi.mapper.SettActiviMapper">
+
+    <insert id="insert">
+        INSERT INTO md_acquisition_process
+            (id,
+           proc_ins_id,
+           project_id,
+           the_number,
+           version,
+           select_number,
+           create_by,
+           create_date,
+           update_by,
+           update_date,
+           remarks,
+           del_flag)
+        VALUES (#{id},
+                #{procInsId},
+                #{projectId},
+                #{theNumber},
+                #{version},
+                #{selectNumber},
+                #{createBy.id},
+                #{createDate},
+                #{updateBy.id},
+                #{updateDate},
+                #{remarks},
+                #{delFlag})
+    </insert>
+
+    <update id="update">
+        UPDATE md_acquisition_process
+        SET proc_ins_id   = #{procInsId},
+            project_id    = #{projectId},
+            the_number    = #{theNumber},
+            version       = #{version},
+            select_number = #{selectNumber},
+            update_by     = #{updateBy.id},
+            update_date   = #{updateDate},
+            remarks       = #{remarks}
+        WHERE id = #{id}
+    </update>
+
+
+    <!--物理删除-->
+    <update id="delete">
+        DELETE
+        FROM md_module_block
+        WHERE id = #{id}
+    </update>
+
+    <!--逻辑删除-->
+    <update id="deleteByLogic">
+        UPDATE md_module_block
+        SET del_flag = #{DEL_FLAG_DELETE}
+        WHERE id = #{id}
+    </update>
+
+    <select id="findByIdList" resultType="com.jeeplus.modules.sg.managementcenter.project.entity.Project">
+        select project_id,project_number,require_name,construction_unit_manage from xm_project_details where id in
+        (
+        <foreach collection="list" item="item" separator=",">
+            #{item}
+        </foreach>
+        )
+    </select>
+
+    <insert id="insertSettList">
+        insert into xm_settlement_list(
+        id,
+        create_by,
+        create_date,
+        update_by,
+        update_date,
+        projectId,
+        requireName,
+        procInsId,
+        materialEncoding,
+        materialName,
+        company,
+        unitPrice,
+        totalPrice,
+        outgoingQuantity,
+        usedQuantity,
+        reviewQuantity,
+        settMark,
+        overUnder
+        )VALUES
+        <foreach collection="list" item="item" index="index" separator=",">
+            (
+            #{item.id},
+            #{item.createBy.id},
+            #{item.createDate},
+            #{item.updateBy.id},
+            #{item.updateDate},
+            #{item.projectId},
+            #{item.requireName},
+            #{item.procInsId},
+            #{item.materialEncoding},
+            #{item.materialName},
+            #{item.company},
+            #{item.unitPrice},
+            #{item.totalPrice},
+            #{item.outgoingQuantity},
+            0,
+            0,
+            '',
+            0
+            )
+        </foreach>
+    </insert>
+
+    <insert id="insertSettActivi">
+        replace into xm_settlement_process(
+        id,
+        create_by,
+        create_date,
+        update_by,
+        update_date,
+        del_flag,
+        remarks,
+        projectId,
+        requireName
+        )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.projectId},
+            #{item.requireName}
+            )
+        </foreach>
+    </insert>
+    <select id="findAllSett" resultType="com.jeeplus.modules.sg.settActivi.enntity.SettActivi">
+        select a.id,a.projectId,a.requireName,a.proc_ins_id,b.construction_unit_manage from xm_settlement_process a
+        left join xm_project_details b
+        on a.projectId = b.project_id
+        where a.requireName in
+        (
+        <foreach collection="list" item="item" separator=",">
+            #{item.requireName}
+        </foreach>
+        )
+    </select>
+
+    <update id="updateSetStatus">
+        update xm_project_details set sett_status = '1' where project_id in
+        (
+        <foreach collection="list" item="item" separator=",">
+            #{item.projectId}
+        </foreach>
+        )
+    </update>
+
+    <update id="finSetStatus">
+        update xm_project_details
+        set sett_status = '2'
+        where project_id = (
+            select projectId from xm_settlement_process where proc_ins_id = #{procInsId}
+        );
+    </update>
+
+    <select id="findOutgoingQuantity" resultType="java.lang.String">
+        select outgoingQuantity
+        from xm_settlement_list
+        where id = #{id};
+    </select>
+
+    <select id="findUseQuantityData" resultType="com.jeeplus.modules.sg.settActivi.enntity.SettList">
+        select id,
+               projectId,
+               requireName,
+               materialEncoding,
+               materialName,
+               company,
+               unitPrice,
+               totalPrice,
+               outgoingQuantity,
+               usedQuantity,
+               reviewQuantity,
+               settMark,
+               overUnder
+        from xm_settlement_list
+        where procInsId = #{procInsId}
+    </select>
+
+    <update id="updateUsed">
+        update xm_settlement_list
+        set usedQuantity = #{usedQuantity}
+        where id = #{id};
+    </update>
+
+    <update id="updateReviewQuantity">
+        update xm_settlement_list
+        set reviewQuantity = #{reviewQuantity},
+            overUnder      = #{overUnder}
+        where id = #{id};
+    </update>
+
+    <update id="updateSettMark">
+        update xm_settlement_list
+        set settMark = #{settMark}
+        where id = #{id};
+    </update>
+
+    <select id="exportFind" resultType="com.jeeplus.modules.sg.settActivi.enntity.SettActivi">
+        select a.requireName, b.project_id, b.construction_unit_manage
+        from xm_settlement_process a
+                 left join xm_project_details b
+                           on a.projectId = b.project_id
+        where a.proc_ins_id = #{procInsId}
+    </select>
+
+</mapper>

+ 114 - 0
src/main/java/com/jeeplus/modules/sg/settActivi/service/SettActiviService.java

@@ -0,0 +1,114 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.sg.settActivi.service;
+
+import com.jeeplus.common.config.Global;
+import com.jeeplus.core.persistence.Page;
+import com.jeeplus.core.service.CrudService;
+import com.jeeplus.modules.sg.managementcenter.activiti.utils.MyActiviUtils;
+import com.jeeplus.modules.sg.managementcenter.project.entity.Project;
+import com.jeeplus.modules.sg.picking.activiti.entity.*;
+import com.jeeplus.modules.sg.picking.activiti.mapper.PickIngMapper;
+import com.jeeplus.modules.sg.settActivi.enntity.SettActivi;
+import com.jeeplus.modules.sg.settActivi.enntity.SettList;
+import com.jeeplus.modules.sg.settActivi.mapper.SettActiviMapper;
+import com.jeeplus.modules.sys.entity.DictValue;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.List;
+
+/**
+ * 模块显示Service
+ * @author
+ * @version 2019-11-08
+ */
+@Service
+@Transactional(readOnly = true)
+public class SettActiviService extends CrudService<SettActiviMapper, SettActivi> {
+
+	@Autowired
+	private SettActiviMapper settActiviMapper;
+
+	@Override
+	public Page<SettActivi> findPage(Page<SettActivi> page, SettActivi entity) {
+		return super.findPage(page, entity);
+	}
+
+	public Page<SettList> useQuantityData(Page<SettList> page, SettList entity) {
+		dataRuleFilter(entity);
+		entity.setPage(page);
+		page.setList(settActiviMapper.findUseQuantityData(entity));
+		return page;
+	}
+
+	//根据项目idList查询项目信息
+	public List<Project> findByIdList(List<String> projectId) {
+		return settActiviMapper.findByIdList(projectId);
+	}
+
+	//插入settlist表中
+	@Transactional(readOnly = false)
+	public void insertSettList(List<SettList> settLists) {
+		for (SettList s : settLists) {
+			s.preInsert();
+		}
+		settActiviMapper.insertSettList(settLists);
+	}
+
+	@Transactional(readOnly = false)
+	public void insertSettActivi(List<Project> projectList) {
+		for (Project p : projectList) {
+			p.preInsert();
+		}
+		settActiviMapper.insertSettActivi(projectList);
+	}
+
+	public List<SettActivi> findAllSett(List<Project> projectList) {
+		return settActiviMapper.findAllSett(projectList);
+	}
+
+	@Transactional(readOnly = false)
+	public void updateSetStatus(List<SettActivi> settActivis) {
+		settActiviMapper.updateSetStatus(settActivis);
+	}
+
+	@Transactional(readOnly = false)
+	public void finSetStatus(String procInsId) {
+		settActiviMapper.finSetStatus(procInsId);
+	}
+
+	/**
+	 * 修改项目的
+	 * */
+	@Transactional(readOnly = false)
+	public void updateUsed(SettList settList) {
+		settActiviMapper.updateUsed(settList);
+	}
+
+	@Transactional(readOnly = false)
+	public void updateReviewQuantity(SettList settList) {
+		String outgoingQuantity = settActiviMapper.findOutgoingQuantity(settList);
+		Double reviewQuantity = settList.getReviewQuantity();
+		Double aDouble = Double.valueOf(outgoingQuantity);
+		double v = reviewQuantity - aDouble;
+		settList.setOverUnder(v);
+		settActiviMapper.updateReviewQuantity(settList);
+	}
+
+	@Transactional(readOnly = false)
+	public void updateSettMark(SettList settList) {
+		settActiviMapper.updateSettMark(settList);
+	}
+
+	@Transactional(readOnly = false)
+	public SettActivi exportFind(String procInsId) {
+		return settActiviMapper.exportFind(procInsId);
+	}
+}

+ 320 - 0
src/main/java/com/jeeplus/modules/sg/settActivi/web/SettActiviController.java

@@ -0,0 +1,320 @@
+package com.jeeplus.modules.sg.settActivi.web;
+
+import com.google.common.collect.Maps;
+import com.jeeplus.common.config.Global;
+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.act.entity.Act;
+import com.jeeplus.modules.act.service.ActProcessService;
+import com.jeeplus.modules.act.service.ActTaskService;
+import com.jeeplus.modules.sg.audit.information.entity.Information;
+import com.jeeplus.modules.sg.audit.information.utils.FreemarkerUtil;
+import com.jeeplus.modules.sg.audit.information.utils.RandomUtil;
+import com.jeeplus.modules.sg.audit.information.utils.ResponseUtil;
+import com.jeeplus.modules.sg.audit.material.entity.Material;
+import com.jeeplus.modules.sg.managementcenter.activiti.service.ConstructionService;
+import com.jeeplus.modules.sg.managementcenter.activiti.utils.MyActiviUtils;
+import com.jeeplus.modules.sg.managementcenter.materialInventory.entity.MaterialInventory;
+import com.jeeplus.modules.sg.managementcenter.materialProvided.entity.MaterialProvided;
+import com.jeeplus.modules.sg.managementcenter.materialProvided.service.MaterialProvidedService;
+import com.jeeplus.modules.sg.managementcenter.project.entity.Project;
+import com.jeeplus.modules.sg.managementcenter.project.service.ProjectService;
+import com.jeeplus.modules.sg.managementcenter.project.util.ImportUtil;
+import com.jeeplus.modules.sg.picking.activiti.entity.*;
+import com.jeeplus.modules.sg.picking.activiti.service.PickIngService;
+import com.jeeplus.modules.sg.picking.activiti.service.ShowListService;
+import com.jeeplus.modules.sg.settActivi.enntity.SettActivi;
+import com.jeeplus.modules.sg.settActivi.enntity.SettList;
+import com.jeeplus.modules.sg.settActivi.service.SettActiviService;
+import com.jeeplus.modules.sys.entity.DictValue;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import freemarker.template.Configuration;
+import freemarker.template.Template;
+import org.activiti.engine.repository.ProcessDefinition;
+import org.apache.poi.ss.usermodel.Row;
+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.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import java.io.*;
+import java.math.BigDecimal;
+import java.net.URLDecoder;
+import java.util.*;
+
+@Controller
+@RequestMapping(value = "${adminPath}/settActivi")
+public class SettActiviController extends BaseController {
+    @Autowired
+    private SettActiviService settActiviService;
+    @Autowired
+    private ActProcessService actProcessService;
+    @Autowired
+    private ActTaskService actTaskService;
+
+    /**
+     * 填写项目表
+     */
+    @RequestMapping(value = "start")
+    public String form(SettActivi settActivi, Model model) {
+        model.addAttribute("settActivi", settActivi);
+        return "modules/sg/settactivi/activiti/settActiviStart";
+    }
+
+    /**
+     * 填写现场使用数量页面
+     */
+    @RequestMapping(value = "usequantity")
+    public String useQuantity(SettActivi settActivi, Model model) {
+        model.addAttribute("settActivi", settActivi);
+        return "modules/sg/settactivi/activiti/useQuantity";
+    }
+
+    /**
+     * 审计现场复核数量
+     */
+    @RequestMapping(value = "reviewQuantity")
+    public String reviewQuantity(SettActivi settActivi, Model model) {
+        model.addAttribute("settActivi", settActivi);
+        return "modules/sg/settactivi/activiti/reviewQuantity";
+    }
+
+    /**
+     * 生成领料退料单
+     */
+    @RequestMapping(value = "returndoc")
+    public String returnDoc(SettActivi settActivi, Model model) {
+        model.addAttribute("settActivi", settActivi);
+        return "modules/sg/settactivi/activiti/returnDoc";
+    }
+
+    /**
+     * 修改现场使用数量
+     */
+    @ResponseBody
+    @RequestMapping(value = "updateUsed")
+    public AjaxJson updateUsed(SettList settList, String usedQuantity, Model model) throws Exception {
+        AjaxJson j = new AjaxJson();
+        //获取新的数量
+        Double aDouble = Double.valueOf(usedQuantity);
+        settList.setUsedQuantity(aDouble);
+        settActiviService.updateUsed(settList);
+        j.setMsg("成功");
+        return j;
+    }
+
+    /**
+     * 审计现场复核数量
+     */
+    @ResponseBody
+    @RequestMapping(value = "updateReviewQuantity")
+    public AjaxJson updateReviewQuantity(SettList settList, String reviewQuantity, Model model) throws Exception {
+        AjaxJson j = new AjaxJson();
+        //获取新的数量
+        Double aDouble = Double.valueOf(reviewQuantity);
+        settList.setReviewQuantity(aDouble);
+        settActiviService.updateReviewQuantity(settList);
+        j.setMsg("成功");
+        return j;
+    }
+
+    /**
+     * 修改施工单位备注
+     */
+    @ResponseBody
+    @RequestMapping(value = "updateSettMark")
+    public AjaxJson updateSettMark(SettList settList, String settMark, Model model) throws Exception {
+        AjaxJson j = new AjaxJson();
+        //获取新的数量
+        settList.setSettMark(settMark);
+        settActiviService.updateSettMark(settList);
+        j.setMsg("成功");
+        return j;
+    }
+
+
+    @ResponseBody
+    @RequestMapping(value = "useQuantityData")
+    public Map<String, Object> useQuantityData(SettList settList, HttpServletRequest request, HttpServletResponse response, Model model) {
+        Page<SettList> page = settActiviService.useQuantityData(new Page<SettList>(request, response), settList);
+        return getBootstrapData(page);
+    }
+
+
+
+    /**
+     * 导出excel文件
+     */
+    @ResponseBody
+    @RequestMapping(value = "exportSett")
+    public AjaxJson exportSett(SettList settList, HttpServletRequest request, HttpServletResponse response){
+        AjaxJson j = new AjaxJson();
+        try {
+            String fileName = "竣工甲供材核对表"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+            Page<SettList> page = settActiviService.useQuantityData(new Page<SettList>(request, response), settList);
+            new ExportExcel("竣工甲供材核对表", SettList.class).setDataList(page.getList()).write(response, fileName).dispose();
+            j.setSuccess(true);
+            j.setMsg("导出成功!");
+            return j;
+        } catch (Exception e) {
+            j.setSuccess(false);
+            j.setMsg("导出需求基本信息记录失败!失败信息:"+e.getMessage());
+        }
+        return j;
+    }
+
+
+    /**
+     * 验收流程批量发起
+     */
+    @ResponseBody
+    @RequestMapping(value = "save")
+    public AjaxJson save(MultipartFile file, HttpServletResponse response, HttpServletRequest request, SettActivi settActivi, Model model) throws Exception {
+        AjaxJson j = new AjaxJson();
+        /**
+         * 后台hibernate-validation插件校验
+         */
+        String projectId = settActivi.getProjectId();
+        if (projectId == null || "".equals(projectId)) {
+            j.setMsg("请选择项目");
+            j.setSuccess(false);
+            return j;
+        }
+        if (null == file || file.getSize() <= 0) {
+            j.setMsg("请导入文件");
+            j.setSuccess(false);
+            return j;
+        }
+        String errMsg = beanValidator(settActivi);
+        if (StringUtils.isNotBlank(errMsg)) {
+            j.setSuccess(false);
+            j.setMsg(errMsg);
+            return j;
+        }
+        String[] split = projectId.split(",");
+        List<String> searchList = new ArrayList<>();
+        for (int i = 0; i < split.length; i++) {
+            searchList.add(split[i]);
+        }
+        //根据选择的项目查询项目信息
+        List<Project> byIdList = settActiviService.findByIdList(searchList);
+        //读取文件,获取文件信息
+        ImportExcel importExcel = new ImportExcel(file, 1, 0);
+        int lastDataRowNum = importExcel.getLastDataRowNum();
+        Row row = null;
+        List<SettList> settLists = new ArrayList<>();
+        for (int i = 1; i < lastDataRowNum; i++) {
+            SettList settList = new SettList();
+            row = importExcel.getRow(i);
+            //项目定义编码
+            Object projectNumber = importExcel.getCellValue(row, 10);
+            //项目定义编码
+            Object requireName = importExcel.getCellValue(row, 11);
+            //金额
+            Object totalPrice = importExcel.getCellValue(row, 15);
+            //数量
+            Object outgoingQuantity = importExcel.getCellValue(row, 16);
+            //编码
+            Object materialEncoding = importExcel.getCellValue(row, 18);
+            //描述
+            Object materialName = importExcel.getCellValue(row, 19);
+            //单位
+            Object company = importExcel.getCellValue(row, 20);
+            settList.setProjectId(projectNumber.toString());
+            settList.setMaterialEncoding(materialEncoding.toString());
+            settList.setMaterialName(materialName.toString());
+            settList.setCompany(company.toString());
+            settList.setRequireName(requireName.toString());
+            Double oQ = Double.valueOf(outgoingQuantity.toString());
+            Double tP = Double.valueOf(totalPrice.toString());
+            settList.setOutgoingQuantity(oQ);
+            settList.setTotalPrice(tP);
+            double v = tP / oQ;
+            settList.setUnitPrice(v);
+            settLists.add(settList);
+        }
+        Map<String, Object> vars = Maps.newHashMap();
+        //将选择的项目信息存入结算流程表中
+        settActiviService.insertSettActivi(byIdList);
+        //根据项目需求名称查询出本次所有
+        List<SettActivi> allSett = settActiviService.findAllSett(byIdList);
+        //跟新项目的状态
+        settActiviService.updateSetStatus(allSett);
+        for (SettActivi set : allSett) {
+            vars.put("manager", UserUtils.getByUserName(set.getConstructionUnitManage()).getLoginName());
+            ProcessDefinition p = actProcessService.getProcessDefinition(settActivi.getAct().getProcDefId());
+            String title = settActivi.getCurrentUser().getName() + "在" + DateUtils.getDateTime() + "发起" + p.getName();
+            actTaskService.startProcess(p.getKey(), "xm_settlement_process", set.getId(), title, vars);
+        }
+        List<SettActivi> allSett1 = settActiviService.findAllSett(byIdList);
+        for (SettActivi a : allSett1) {
+            List<SettList> lists = new ArrayList<>();
+            for (SettList list : settLists) {
+                if (a.getRequireName().equals(list.getRequireName())) {
+                    list.setProcInsId(a.getProcInsId());
+                    lists.add(list);
+                }
+            }
+            if (lists.size()>0) {
+                settActiviService.insertSettList(lists);
+            }
+        }
+        j.setMsg("发起领料流程成功!");
+        j.getBody().put("targetUrl", "/act/task/process/");
+        return j;
+    }
+
+
+
+    //导出excel
+    @ResponseBody
+    @RequestMapping(value = "exportExcel")
+    public void exportExcel(SettList settList, HttpServletRequest request, HttpServletResponse response) {
+        StringBuilder stringBuilder = new StringBuilder();
+        Template template = null;
+        response.setContentType("text/text;charset=utf-8");
+        response.setCharacterEncoding("UTF-8");
+        File path = new File(this.getClass().getResource("/").getPath() + "/freemarker");
+        Configuration cfg = new Configuration();
+        try {
+            cfg.setDefaultEncoding("UTF-8");
+            //配置cfg对象
+            cfg.setDirectoryForTemplateLoading(path);
+//            根据模板名称获取Template对象
+            template = cfg.getTemplate("jiesuan.ftl");
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        Map<String, Object> data = new HashMap<>();
+        Page<SettList> page = settActiviService.useQuantityData(new Page<SettList>(request, response), settList);
+        List<SettList> list = page.getList();
+        int i = 1;
+        for (SettList s : list) {
+            s.setId(String.valueOf(i));
+            i++;
+        }
+        data.put("list", list);
+        SettActivi settActivi = settActiviService.exportFind(settList.getProcInsId());
+        data.put("projectId",settActivi.getProjectId());
+        data.put("projectName", settActivi.getRequireName());
+        data.put("manager", settActivi.getConstructionUnitManage());
+        File docFile = new File(path + "\\镇江本部配网工程竣工甲供材核对表.xls");
+        FreemarkerUtil.generateFile(data, template, docFile);
+        ResponseUtil.docResponse("镇江本部配网工程竣工甲供材核对表.xls", docFile, response);
+    }
+
+}
+
+

+ 277 - 0
src/main/webapp/webpage/modules/sg/settactivi/activiti/returnDoc.js

@@ -0,0 +1,277 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script>
+	$(document).ready(function() {
+		var procInsId = $('#procInsId').val();
+
+		$('#testPicTable').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}/managementcenter/upload/data?procInsId="+procInsId,
+			//默认值为 'limit',传给服务端的参数为:limit, offset, search, sort, order Else
+			//queryParamsType:'',
+			////查询参数,每次调用是会带上这个参数,可自定义
+			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',
+			onContextMenuItem: function(row, $el){
+				if($el.data("item") == "edit"){
+					edit(row.id);
+				}else if($el.data("item") == "view"){
+					view(row.id);
+				} else if($el.data("item") == "delete"){
+					jp.confirm('确认要删除该图片管理记录吗?', function(){
+						jp.loading();
+						jp.get("${ctx}/managementcenter/upload/delete?id="+row.id, function(data){
+							if(data.success){
+								$('#testPicTable').bootstrapTable('refresh');
+								jp.success(data.msg);
+							}else{
+								jp.error(data.msg);
+							}
+						})
+
+					});
+
+				}
+			},
+			onClickRow: function(row, $el){
+			},
+			onShowSearch: function () {
+				$("#search-collapse").slideToggle();
+			},
+			columns: [
+				 {
+					field: 'path',
+					title: '附件',
+					formatter:function(value, row , index){
+						var valueArray = value.split("|");
+						var labelArray = [];
+						for(var i =0 ; i<valueArray.length; i++){
+							if(!/\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(valueArray[i]))
+							{
+								labelArray[i] = "<a href=\""+valueArray[i]+"\" url=\""+valueArray[i]+"\" target=\"_blank\">"+decodeURIComponent(valueArray[i].substring(valueArray[i].lastIndexOf("/")+1))+"</a>"
+							}else{
+								labelArray[i] = '<img   onclick="jp.showPic(\''+valueArray[i]+'\')"'+' height="50px" src="'+valueArray[i]+'">';
+							}
+						}
+						return labelArray.join(" ");
+					}
+
+				},{
+					field: 'project.requireName',
+					title: '项目需求名称',
+				},{
+					field: 'project.projectId',
+					title: '流程定义号',
+				},
+				{
+					field: 'imgName',
+					title: '文件用途',
+				},
+				{
+					field: 'uId',
+					title: '上传人员',
+				}
+			]
+		});
+
+		$('#settTable').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}/settActivi/useQuantityData?procInsId="+procInsId,
+			//默认值为 '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: 'materialEncoding',
+					title: '物料编码',
+				}, {
+					field: 'materialName',
+					title: '物料名称',
+				}, {
+					field: 'company',
+					title: '单位',
+				},{
+					field: 'unitPrice',
+					title: '出库单价(元)',
+				}, {
+				field: 'totalPrice',
+				title: '出库总价(元)',
+				},
+				{
+					field: 'outgoingQuantity',
+					title: '出库数量'
+				},{
+					field: 'usedQuantity',
+					title: '现场使用数量',
+				}, {
+					field: 'reviewQuantity',
+					title: '审计现场复核数量',
+				}, {
+					field: 'settMark',
+					title: '施工单位备注',
+				}, {
+					field: 'overUnder',
+					title: '甲供材超欠供',
+				}
+			]
+		});
+
+
+		jp.ajaxForm("#inputForm",function(data){
+			if(data.success){
+				jp.alert(data.msg);
+				jp.go("${ctx}"+ data.body.targetUrl);
+			}else{
+				jp.alert(data.msg);
+				$("#inputForm").find("button:submit").button("reset");
+			}
+		});
+
+		function getTime(value, row, index) {
+			return [
+				"<input  id="+row.id+" type='number' name='usedQuantity' class='form-control required deal'  value="+row.usedQuantity+">",
+			].join('');
+		}
+
+		$("#agree").click(function () {
+			jp.prompt("同意, 审批意见", function (message) {
+				jp.post("${ctx}/act/task/returnDocTask",
+				{
+					"taskId":"${settActivi.act.taskId}",
+					"taskName":"${settActivi.act.taskName}",
+					"taskDefKey":"${settActivi.act.taskDefKey}",
+					"procInsId": procInsId,
+					"procDefId":"${settActivi.act.procDefId}",
+					"flag":"yes",
+					"comment":window.encodeURI(message)
+				},
+				function (data) {
+					if(data.success){
+						jp.success(data.msg);
+						jp.go("${ctx}/act/task/todo")
+					}
+				})
+			})
+		})
+
+
+		$("#printf").click(function () {
+			var procInsId = $("#procInsId").val();
+			// jp.downloadFile('${ctx}/settActivi/exportSett?procInsId='+procInsId);
+			 jp.downloadFile('${ctx}/settActivi/exportExcel?procInsId='+procInsId);
+		});
+
+		$('#acceptDate').datetimepicker({
+			format: "YYYY-MM-DD HH:mm:ss"
+		});
+
+		$('#examineDate').datetimepicker({
+			format: "YYYY-MM-DD HH:mm:ss"
+		});
+		//富文本初始化
+		$('#reason').summernote({
+			height: 300,
+			lang: 'zh-CN',
+			callbacks: {
+				onChange: function(contents, $editable) {
+					$("input[name='reason']").val($('#reason').summernote('code'));//取富文本的值
+				}
+			}
+		});
+	})
+
+</script>

+ 75 - 0
src/main/webapp/webpage/modules/sg/settactivi/activiti/returnDoc.jsp

@@ -0,0 +1,75 @@
+<%@ page pageEncoding="UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp" %>
+<html>
+<head>
+    <title>生成领料退料单</title>
+    <meta name="decorator" content="ani"/>
+    <!-- SUMMERNOTE -->
+    <%@include file="/webpage/include/summernote.jsp" %>
+    <%@include file="returnDoc.js" %>
+    <style type="text/css">
+        /* 下边两行是去掉input 输入框右边的上下箭头按钮*/
+        .deal::-webkit-inner-spin-button {
+            -webkit-appearance: none !important;
+        }
+        .deal::-webkit-outer-spin-button {
+            -webkit-appearance: none !important;
+        }
+        input[type="number"]{
+            -moz-appearance:textfield;
+        }
+    </style>
+</head>
+<body>
+
+<div class="wrapper wrapper-content">
+    <div class="row">
+        <div class="col-md-12">
+            <div class="panel panel-primary">
+                <div class="panel-heading">
+                    <h3 class="panel-title">
+                        <a class="panelButton" href="#" onclick="history.go(-1)"><i class="ti-angle-left"></i> 返回</a>
+                    </h3>
+                </div>
+
+                <div class="panel-body">
+                    <form:form id="inputForm" modelAttribute="settActivi" action="" method="post" class="form-horizontal" enctype="multipart/form-data">
+                        <form:hidden path="id"/>
+                        <form:hidden path="act.taskId"/>
+                        <form:hidden path="act.taskName"/>
+                        <form:hidden path="act.taskDefKey"/>
+                        <form:hidden path="act.procDefId"/>
+                        <input type="hidden" id="procInsId" name="procInsId" value="${settActivi.act.procInsId}"/>
+                        <div class="form-group text-center">
+                            <h3> 生成领料退料单</h3>
+                        </div>
+
+                        <div id="">
+                            <button id="exportDoc" class="btn btn-info">
+                                <i class="fa fa-folder-open-o"></i> 生成领料单
+                            </button>
+                        </div>
+                        <table id="testPicTable"   data-toolbar="#toolbar"></table>
+                        <!-- 表格 -->
+                        <table id="settTable" 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" style="text-align: center;margin-top: 20px;">
+                                    <input id="agree" class="btn  btn-primary btn-lg btn-parsley" type="submit" value="完成领料" />&nbsp;
+                                </div>
+                            </div>
+                        </div>
+                    </form:form>
+                    <c:if test="${not empty settActivi.id}">
+                        <act:flowChart procInsId="${settActivi.act.procInsId}"/>
+                        <act:histoicFlow procInsId="${settActivi.act.procInsId}"/>
+                    </c:if>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+</body>
+</html>

+ 205 - 0
src/main/webapp/webpage/modules/sg/settactivi/activiti/reviewQuantity.js

@@ -0,0 +1,205 @@
+<%@ 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}/settActivi/updateReviewQuantity?id="+row.id+"&reviewQuantity="+ss, function (data) {
+						jp.success(data.msg);
+						$('#settTable').bootstrapTable('refresh');
+					})
+				},function () {
+					$('#settTable').bootstrapTable('refresh');
+				})
+			}
+		};
+		window.operateEvents2 = {
+			'change input': function (e, value, row, index) {
+				var ss = $('#'+row.id+'z').val();
+				jp.confirm('确认要修改?', function () {
+					jp.get("${ctx}/settActivi/updateSettMark?id="+row.id+"&settMark="+ss, function (data) {
+						jp.success(data.msg);
+						$('#settTable').bootstrapTable('refresh');
+					})
+				},function () {
+					$('#settTable').bootstrapTable('refresh');
+				})
+			}
+		};
+		var procInsId = $('#procInsId').val();
+		$('#settTable').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}/settActivi/useQuantityData?procInsId="+procInsId,
+			//默认值为 '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: 'materialEncoding',
+					title: '物料编码',
+				}, {
+					field: 'materialName',
+					title: '物料名称',
+				}, {
+					field: 'company',
+					title: '单位',
+				},{
+					field: 'unitPrice',
+					title: '出库单价(元)',
+				}, {
+				field: 'totalPrice',
+				title: '出库总价(元)',
+				},
+				{
+					field: 'outgoingQuantity',
+					title: '出库数量'
+				},{
+					field: 'usedQuantity',
+					title: '现场使用数量',
+				}, {
+					field: 'reviewQuantity',
+					title: '审计现场复核数量',
+					events: operateEvents,
+					formatter: getTime
+				}, {
+					field: 'settMark',
+					title: '施工单位备注',
+					events: operateEvents2,
+					formatter: getTime2
+				}, {
+					field: 'overUnder',
+					title: '甲供材超欠供',
+				}
+			]
+		});
+
+
+		jp.ajaxForm("#inputForm",function(data){
+			if(data.success){
+				jp.alert(data.msg);
+				jp.go("${ctx}"+ data.body.targetUrl);
+			}else{
+				jp.alert(data.msg);
+				$("#inputForm").find("button:submit").button("reset");
+			}
+		});
+
+		function getTime(value, row, index) {
+			return [
+				"<input  id="+row.id+" type='number' name='reviewQuantity' class='form-control required deal'  value="+row.reviewQuantity+">",
+			].join('');
+		}
+
+		function getTime2(value, row, index) {
+			return [
+				"<input  id="+row.id+'z'+" type='text' name='settMark' class='form-control required deal'  value="+row.settMark+">",
+			].join('');
+		}
+
+		$("#agree").click(function () {
+			var val = $("input[name='pic']").val();
+			console.log(val);
+			if (val == "" || val == null) {
+				jp.error("请上传对应的文件")
+				return false;
+			}
+			jp.prompt("同意, 审批意见", function (message) {
+				jp.post("${ctx}/act/task/reviewQuantityTask",
+					{
+						"taskId":"${settActivi.act.taskId}",
+						"taskName":"${settActivi.act.taskName}",
+						"taskDefKey":"${settActivi.act.taskDefKey}",
+						"procInsId": procInsId,
+						"pic": val,
+						"procDefId":"${settActivi.act.procDefId}",
+						"flag":"yes",
+						"comment":window.encodeURI(message)
+					},
+					function (data) {
+						if(data.success){
+							jp.success(data.msg);
+							jp.go("${ctx}/act/task/todo")
+						}
+					})
+			})
+		})
+
+
+		$("#printf").click(function () {
+			var procInsId = $("#procInsId").val();
+			// jp.downloadFile('${ctx}/settActivi/exportSett?procInsId='+procInsId);
+			 jp.downloadFile('${ctx}/settActivi/exportExcel?procInsId='+procInsId);
+		});
+
+		$('#acceptDate').datetimepicker({
+			format: "YYYY-MM-DD HH:mm:ss"
+		});
+
+		$('#examineDate').datetimepicker({
+			format: "YYYY-MM-DD HH:mm:ss"
+		});
+		//富文本初始化
+		$('#reason').summernote({
+			height: 300,
+			lang: 'zh-CN',
+			callbacks: {
+				onChange: function(contents, $editable) {
+					$("input[name='reason']").val($('#reason').summernote('code'));//取富文本的值
+				}
+			}
+		});
+	})
+
+</script>

+ 87 - 0
src/main/webapp/webpage/modules/sg/settactivi/activiti/reviewQuantity.jsp

@@ -0,0 +1,87 @@
+<%@ page pageEncoding="UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp" %>
+<html>
+<head>
+    <title>审计现场复核数量</title>
+    <meta name="decorator" content="ani"/>
+    <!-- SUMMERNOTE -->
+    <%@include file="/webpage/include/summernote.jsp" %>
+    <%@include file="reviewQuantity.js" %>
+    <style type="text/css">
+        /* 下边两行是去掉input 输入框右边的上下箭头按钮*/
+        .deal::-webkit-inner-spin-button {
+            -webkit-appearance: none !important;
+        }
+        .deal::-webkit-outer-spin-button {
+            -webkit-appearance: none !important;
+        }
+        input[type="number"]{
+            -moz-appearance:textfield;
+        }
+    </style>
+</head>
+<body>
+
+<div class="wrapper wrapper-content">
+    <div class="row">
+        <div class="col-md-12">
+            <div class="panel panel-primary">
+                <div class="panel-heading">
+                    <h3 class="panel-title">
+                        <a class="panelButton" href="#" onclick="history.go(-1)"><i class="ti-angle-left"></i> 返回</a>
+                    </h3>
+                </div>
+
+                <div class="panel-body">
+                    <form:form id="inputForm" modelAttribute="settActivi" action="" method="post" class="form-horizontal" enctype="multipart/form-data">
+                        <form:hidden path="id"/>
+                        <form:hidden path="act.taskId"/>
+                        <form:hidden path="act.taskName"/>
+                        <form:hidden path="act.taskDefKey"/>
+                        <form:hidden path="act.procDefId"/>
+                        <input type="hidden" id="procInsId" name="procInsId" value="${settActivi.act.procInsId}"/>
+                        <div class="form-group text-center">
+                            <h3> 审计现场复核数量</h3>
+                        </div>
+
+                        <table class="table table-bordered">
+                            <tbody>
+                            <tr>
+                                <td class="width-15 active"><label class="pull-right"><font color="red">*</font>上传扫描件:</label></td>
+                                <td class="width-35">
+                                    <sys:fileUpload  path="pic" fileNumLimit="50" fileSizeLimit="50" value="${}" type="file" uploadPath="/jiesuan"></sys:fileUpload>
+                                </td>
+                            </tr>
+                            </tbody>
+                        </table>
+
+                        <div id="">
+                            <button id="printf" class="btn btn-info">
+                                <i class="fa fa-folder-open-o"></i> 导出
+                            </button>
+                        </div>
+
+
+                        <!-- 表格 -->
+                        <table id="settTable" 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" style="text-align: center;margin-top: 20px;">
+                                    <input id="agree" class="btn  btn-primary btn-lg btn-parsley" type="submit" value="完成领料" />&nbsp;
+                                </div>
+                            </div>
+                        </div>
+                    </form:form>
+                    <c:if test="${not empty settActivi.id}">
+                        <act:flowChart procInsId="${settActivi.act.procInsId}"/>
+                        <act:histoicFlow procInsId="${settActivi.act.procInsId}"/>
+                    </c:if>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+</body>
+</html>

+ 35 - 0
src/main/webapp/webpage/modules/sg/settactivi/activiti/settActiviStart.js

@@ -0,0 +1,35 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<script>
+	/**
+	 * 配网专职提交申请页面
+	 * */
+	$(document).ready(function() {
+		jp.ajaxForm("#inputForm",function(data){
+			if(data.success){
+				jp.alert(data.msg);
+				jp.go("${ctx}"+ data.body.targetUrl);
+			}else{
+				jp.alert(data.msg);
+				$("#inputForm").find("button:submit").button("reset");
+			}
+		});
+
+		$('#acceptDate').datetimepicker({
+			format: "YYYY-MM-DD HH:mm:ss"
+		});
+
+		$('#examineDate').datetimepicker({
+			format: "YYYY-MM-DD HH:mm:ss"
+		});
+		//富文本初始化
+		$('#reason').summernote({
+			height: 300,
+			lang: 'zh-CN',
+			callbacks: {
+				onChange: function(contents, $editable) {
+					$("input[name='reason']").val($('#reason').summernote('code'));//取富文本的值
+				}
+			}
+		});
+	})
+</script>

+ 88 - 0
src/main/webapp/webpage/modules/sg/settactivi/activiti/settActiviStart.jsp

@@ -0,0 +1,88 @@
+<%@ page pageEncoding="UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp" %>
+<html>
+<head>
+    <title>领料提交申请</title>
+    <meta name="decorator" content="ani"/>
+    <!-- SUMMERNOTE -->
+    <%@include file="/webpage/include/summernote.jsp" %>
+    <%@include file="settActiviStart.js" %>
+    <script>
+
+    </script>
+</head>
+<body>
+
+<div class="wrapper wrapper-content">
+    <div class="row">
+        <div class="col-md-12">
+            <div class="panel panel-primary">
+                <div class="panel-heading">
+                    <h3 class="panel-title">
+                        <a class="panelButton" href="#" onclick="history.go(-1)"><i class="ti-angle-left"></i> 返回</a>
+                    </h3>
+                </div>
+                <div class="panel-body">
+
+                    <form:form id="inputForm" modelAttribute="settActivi" action="${ctx}/settActivi/save" method="post"
+                               class="form-horizontal" enctype="multipart/form-data">
+                        <form:hidden path="id"/>
+                        <form:hidden path="act.taskId"/>
+                        <form:hidden path="act.taskName"/>
+                        <form:hidden path="act.taskDefKey"/>
+                        <form:hidden path="act.procInsId"/>
+                        <form:hidden path="act.procDefId"/>
+                        <form:hidden id="flag" path="act.flag"/>
+                        <div class="form-group text-center">
+                            <h3> 领料申请</h3>
+                        </div>
+                        <table class="table table-bordered">
+                            <tbody>
+                            <tr>
+                                <td class="width-15 active"><label class="pull-right"><font
+                                        color="red">*</font>项目名称:</label></td>
+                                <td class="width-35">
+                                    <sys:itemselect url="${ctx}/sg/managementcenter/project/settData" id="project"
+                                                    name="projectId" value="${projectId}"
+                                                    labelName="project.requireName" labelValue="${projectName}"
+                                                    title="选择项目号" cssClass="form-control "
+                                                    fieldLabels="${fns:urlEncode('项目需求名称|工程编号|项目名称|项目定义号')}"
+                                                    fieldKeys="requireName|projecId|projectName|projectNumber"
+                                                    searchLabels="${fns:urlEncode('项目需求名称')}" searchKeys="requireName"
+                                                    isMultiSelected="true">
+                                    </sys:itemselect>
+                                </td>
+                            </tr>
+                            <tr>
+                                <td class="width-15 active"><label class="pull-right"><font color="red">*</font>导入文件:</label></td>
+                                <td class="width-35">
+									<input id="file" name="file"   type="file"  class="form-control" style="margin: 0 auto" />
+                                </td>
+                            </tr>
+                            </tbody>
+                        </table>
+
+                        <div class="form-group">
+                            <div class="col-lg-3"></div>
+                            <div class="col-lg-6">
+                                <div class="form-group text-center">
+                                    <div>
+                                        <button class="btn btn-primary btn-block btn-lg btn-parsley"
+                                                onclick="checkFile()" data-loading-text="正在提交...">提 交
+                                        </button>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </form:form>
+                    <c:if test="${not empty showList.id}">
+                        <act:flowChart procInsId="${showList.act.procInsId}"/>
+                        <act:histoicFlow procInsId="${showList.act.procInsId}"/>
+                    </c:if>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+</body>
+</html>

+ 174 - 0
src/main/webapp/webpage/modules/sg/settactivi/activiti/useQuantity.js

@@ -0,0 +1,174 @@
+<%@ 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}/settActivi/updateUsed?id="+row.id+"&usedQuantity="+ss, function (data) {
+						jp.success(data.msg);
+						$('#settTable').bootstrapTable('refresh');
+					})
+				},function () {
+					$('#settTable').bootstrapTable('refresh');
+				})
+			}
+		};
+		var procInsId = $('#procInsId').val();
+		$('#settTable').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}/settActivi/useQuantityData?procInsId="+procInsId,
+			//默认值为 '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: 'materialEncoding',
+					title: '物料编码',
+				}, {
+					field: 'materialName',
+					title: '物料名称',
+				}, {
+					field: 'company',
+					title: '单位',
+				},{
+					field: 'unitPrice',
+					title: '出库单价(元)',
+				}, {
+				field: 'totalPrice',
+				title: '出库总价(元)',
+				},
+				{
+					field: 'outgoingQuantity',
+					title: '出库数量'
+				},{
+					field: 'usedQuantity',
+					title: '现场使用数量',
+					events: operateEvents,
+					formatter: getTime
+				}, {
+					field: 'reviewQuantity',
+					title: '审计现场复核数量',
+				}, {
+					field: 'settMark',
+					title: '施工单位备注',
+				}
+			]
+		});
+
+
+		jp.ajaxForm("#inputForm",function(data){
+			if(data.success){
+				jp.alert(data.msg);
+				jp.go("${ctx}"+ data.body.targetUrl);
+			}else{
+				jp.alert(data.msg);
+				$("#inputForm").find("button:submit").button("reset");
+			}
+		});
+
+		function getTime(value, row, index) {
+			return [
+				"<input  id="+row.id+" type='number' name='usedQuantity' class='form-control required deal'  value="+row.usedQuantity+">",
+			].join('');
+		}
+
+		$("#agree").click(function () {
+			jp.prompt("同意, 审批意见", function (message) {
+				jp.post("${ctx}/act/task/useQuantityTask",
+					{
+						"taskId":"${settActivi.act.taskId}",
+						"taskName":"${settActivi.act.taskName}",
+						"taskDefKey":"${settActivi.act.taskDefKey}",
+						"procInsId": procInsId,
+						"procDefId":"${settActivi.act.procDefId}",
+						"flag":"yes",
+						"comment":window.encodeURI(message)
+					},
+					function (data) {
+						if(data.success){
+							jp.success(data.msg);
+							jp.go("${ctx}/act/task/todo")
+						}
+					})
+			})
+		})
+
+
+		$("#printf").click(function () {
+			var procInsId = $("#procInsId").val();
+			// jp.downloadFile('${ctx}/settActivi/exportSett?procInsId='+procInsId);
+			 jp.downloadFile('${ctx}/settActivi/exportExcel?procInsId='+procInsId);
+		});
+
+		$('#acceptDate').datetimepicker({
+			format: "YYYY-MM-DD HH:mm:ss"
+		});
+
+		$('#examineDate').datetimepicker({
+			format: "YYYY-MM-DD HH:mm:ss"
+		});
+		//富文本初始化
+		$('#reason').summernote({
+			height: 300,
+			lang: 'zh-CN',
+			callbacks: {
+				onChange: function(contents, $editable) {
+					$("input[name='reason']").val($('#reason').summernote('code'));//取富文本的值
+				}
+			}
+		});
+	})
+
+</script>

+ 75 - 0
src/main/webapp/webpage/modules/sg/settactivi/activiti/useQuantity.jsp

@@ -0,0 +1,75 @@
+<%@ page pageEncoding="UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp" %>
+<html>
+<head>
+    <title>填写现场使用数量</title>
+    <meta name="decorator" content="ani"/>
+    <!-- SUMMERNOTE -->
+    <%@include file="/webpage/include/summernote.jsp" %>
+    <%@include file="useQuantity.js" %>
+    <style type="text/css">
+        /* 下边两行是去掉input 输入框右边的上下箭头按钮*/
+        .deal::-webkit-inner-spin-button {
+            -webkit-appearance: none !important;
+        }
+        .deal::-webkit-outer-spin-button {
+            -webkit-appearance: none !important;
+        }
+        input[type="number"]{
+            -moz-appearance:textfield;
+        }
+    </style>
+</head>
+<body>
+
+<div class="wrapper wrapper-content">
+    <div class="row">
+        <div class="col-md-12">
+            <div class="panel panel-primary">
+                <div class="panel-heading">
+                    <h3 class="panel-title">
+                        <a class="panelButton" href="#" onclick="history.go(-1)"><i class="ti-angle-left"></i> 返回</a>
+                    </h3>
+                </div>
+
+                <div class="panel-body">
+                    <form:form id="inputForm" modelAttribute="settActivi" action="" method="post" class="form-horizontal" enctype="multipart/form-data">
+                        <form:hidden path="id"/>
+                        <form:hidden path="act.taskId"/>
+                        <form:hidden path="act.taskName"/>
+                        <form:hidden path="act.taskDefKey"/>
+                        <form:hidden path="act.procDefId"/>
+                        <input type="hidden" id="procInsId" name="procInsId" value="${settActivi.act.procInsId}"/>
+                        <div class="form-group text-center">
+                            <h3> 填写现场使用数量</h3>
+                        </div>
+
+                        <div id="">
+                            <button id="printf" class="btn btn-info">
+                                <i class="fa fa-folder-open-o"></i> 导出
+                            </button>
+                        </div>
+
+                        <!-- 表格 -->
+                        <table id="settTable" 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" style="text-align: center;margin-top: 20px;">
+                                    <input id="agree" class="btn  btn-primary btn-lg btn-parsley" type="submit" value="填写完成" />&nbsp;
+                                </div>
+                            </div>
+                        </div>
+                    </form:form>
+                    <c:if test="${not empty settActivi.id}">
+                        <act:flowChart procInsId="${settActivi.act.procInsId}"/>
+                        <act:histoicFlow procInsId="${settActivi.act.procInsId}"/>
+                    </c:if>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+</body>
+</html>