Преглед изворни кода

Merge remote-tracking branch 'origin/master'

xian пре 6 година
родитељ
комит
3f44da9f6b

+ 9 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/approval/ApprovalInfo.java

@@ -24,6 +24,7 @@ public class ApprovalInfo implements Serializable{
     private ApprovalProduction approvalProduction;//生产审批集合
     private ApprovalApplyPick approvalApplyPick;//提货申请集合
     private List<ApprovalProductionContract> listProductionContract;//审批合同集合
+    private Integer approvalAdminId;//审核人adminid
 
     public Integer getApprovalId() {
         return approvalId;
@@ -136,4 +137,12 @@ public class ApprovalInfo implements Serializable{
     public void setApprovalApplyPick(ApprovalApplyPick approvalApplyPick) {
         this.approvalApplyPick = approvalApplyPick;
     }
+
+    public Integer getApprovalAdminId() {
+        return approvalAdminId;
+    }
+
+    public void setApprovalAdminId(Integer approvalAdminId) {
+        this.approvalAdminId = approvalAdminId;
+    }
 }

+ 27 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/approval/ApprovalProductionItem.java

@@ -19,6 +19,9 @@ public class ApprovalProductionItem implements Serializable{
     private String itemProductModel;//产品型号
     private String itemProductUnit;//单位
     private Integer itemProductBoxNumber;//箱数/套数
+    private Integer itemActualStorage;//本次应入库数量
+    private Integer itemShouldStorage;//实际入库数量
+    private Integer itemLackNumber;//入库后缺少数量
     private Date itemCreateTime;
     private Date itemUpdateTime;
 
@@ -117,4 +120,28 @@ public class ApprovalProductionItem implements Serializable{
     public void setItemUpdateTime(Date itemUpdateTime) {
         this.itemUpdateTime = itemUpdateTime;
     }
+
+    public Integer getItemActualStorage() {
+        return itemActualStorage;
+    }
+
+    public void setItemActualStorage(Integer itemActualStorage) {
+        this.itemActualStorage = itemActualStorage;
+    }
+
+    public Integer getItemShouldStorage() {
+        return itemShouldStorage;
+    }
+
+    public void setItemShouldStorage(Integer itemShouldStorage) {
+        this.itemShouldStorage = itemShouldStorage;
+    }
+
+    public Integer getItemLackNumber() {
+        return itemLackNumber;
+    }
+
+    public void setItemLackNumber(Integer itemLackNumber) {
+        this.itemLackNumber = itemLackNumber;
+    }
 }

+ 20 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/sys/Admin.java

@@ -54,6 +54,10 @@ public class Admin implements Serializable {
 
     private Integer adminManager;           // 1:员工;2:部门领导
 
+    private Integer adminPcId;           // 所属公司
+
+    private String adminOpenId;           // 管理员openid
+
     public Integer getAdminManager() {
         return adminManager;
     }
@@ -165,6 +169,22 @@ public class Admin implements Serializable {
         this.adminUpdateTime = adminUpdateTime;
     }
 
+    public Integer getAdminPcId() {
+        return adminPcId;
+    }
+
+    public void setAdminPcId(Integer adminPcId) {
+        this.adminPcId = adminPcId;
+    }
+
+    public String getAdminOpenId() {
+        return adminOpenId;
+    }
+
+    public void setAdminOpenId(String adminOpenId) {
+        this.adminOpenId = adminOpenId;
+    }
+
     /**
      * 本函数输出将作为默认的<shiro:principal/>输出.
      */

+ 24 - 1
watero-rst-interface/src/main/java/com/iamberry/rst/faces/approval/ApprovalOrderService.java

@@ -22,7 +22,7 @@ public interface ApprovalOrderService {
      * 新增生产审批信息
      * @return
      */
-    Boolean insertApprovalProduction(ApprovalProduction approvalProduction,List<ApprovalProductionItem> listApprovalProductionItem, List<ApprovalProductionContract> productionContracts,Map<String, Object> tasknfo);
+    Boolean insertApprovalProduction(ApprovalProduction approvalProduction,List<ApprovalProductionItem> listApprovalProductionItem, List<ApprovalProductionContract> productionContracts,Map<String, Object> tasknfo,String openId);
     /**
      * 新增生产审批信息产品
      * @return
@@ -68,4 +68,27 @@ public interface ApprovalOrderService {
      * @return
      */
     Integer updateApprovalInfo(ApprovalInfo approvalInfo);
+
+    /**
+     * 删除审核历史记录信息
+     * @return
+     */
+    Integer deleteHistoricalRecord(Integer approvalId);
+
+    /**
+     * 查询单个审批信息
+     * @return
+     */
+    List<ApprovalInfo> getApprovalInfo(ApprovalInfo approvalInfo);
+
+    /**
+     * 修改审批订单项
+     * @return
+     */
+    Integer updateProductionItem(ApprovalProductionItem approvalProductionItem);
+    /**
+     * 修改审批订单项
+     * @return
+     */
+    Integer insertInventoryRecords(ApprovalInventoryRecords approvalInventoryRecords);
 }

+ 13 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/sys/SysService.java

@@ -103,4 +103,17 @@ public interface SysService {
      * @return
      */
     Integer saveAdmin(Admin admin);
+
+    /**
+     * 根据用户openid获取登录信息
+     * @param admin
+     * @return
+     */
+    Admin getByOpenid(String admin);
+    /**
+     * 根据用户姓名获取登录信息
+     * @param adminName
+     * @return
+     */
+    Admin getByName(String adminName);
 }

+ 65 - 9
watero-rst-service/src/main/java/com/iamberry/rst/service/approval/ApprovalOrderServiceImpl.java

@@ -4,10 +4,13 @@ import com.github.pagehelper.PageHelper;
 import com.iamberry.rst.core.approval.*;
 import com.iamberry.rst.core.cm.CustomerInfo;
 import com.iamberry.rst.core.page.PagedResult;
+import com.iamberry.rst.core.sys.Admin;
 import com.iamberry.rst.faces.approval.ApprovalOrderService;
 import com.iamberry.rst.faces.approval.ApprovalTaskService;
 import com.iamberry.rst.service.approval.mapper.ApprovalOrderMapper;
+import com.iamberry.rst.service.sys.mapper.SysMapper;
 import com.iamberry.rst.util.PageUtil;
+import com.iamberry.wechat.core.entity.WechatUtils;
 import com.iamberry.wechat.tools.ResponseJson;
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
@@ -26,6 +29,8 @@ import java.util.*;
 public class ApprovalOrderServiceImpl implements ApprovalOrderService {
     @Autowired
     private ApprovalOrderMapper approvalOrderMapper;
+    @Autowired
+    private SysMapper sysMapper;
 
 
     @Override
@@ -38,15 +43,19 @@ public class ApprovalOrderServiceImpl implements ApprovalOrderService {
     public Boolean insertApprovalProduction(ApprovalProduction approvalProduction,
                                             List<ApprovalProductionItem> listApprovalProductionItem,
                                             List<ApprovalProductionContract> productionContracts,
-                                            Map<String, Object> tasknfo) {
-
+                                            Map<String, Object> tasknfo,
+                                            String openId) {
+        //获取登录人信息
+        Admin admin = sysMapper.getByOpenid(openId);
+        if(admin == null){
+            throw new RuntimeException("未查询到当前登录人信息");
+        }
         //添加审批信息
         ApprovalInfo approvalInfo = new ApprovalInfo();
-        approvalInfo.setApprovalName("XXX的审批订单");
+        approvalInfo.setApprovalName(admin.getAdminName()+"的审批订单");
         approvalInfo.setApprovalType(1);
         approvalInfo.setApprovalStatus(1);
-        approvalInfo.setApprovalStatusDetails("待 "+tasknfo.get("users").toString()+"审批");
-        approvalInfo.setAdminId(null);
+        approvalInfo.setAdminId(admin.getAdminId());
         approvalInfo.setApprovalApplicant(approvalProduction.getApplicantName());
         approvalInfo.setActivitiId(tasknfo.get("pid").toString());
         approvalInfo.setApprovalDetails("html内容");
@@ -58,7 +67,7 @@ public class ApprovalOrderServiceImpl implements ApprovalOrderService {
         //添加生产审批信息
         approvalProduction.setApprovalId(approvalInfo.getApprovalId());
         approvalProduction.setApplicantOrderNo("订单编号");
-        approvalProduction.setApplicantName("申请人姓名");
+        approvalProduction.setApplicantName(admin.getAdminName());
         //申请人ID
         approvalProduction.setApplicantId(1);
         approvalProduction.setProductionState(1);
@@ -69,7 +78,7 @@ public class ApprovalOrderServiceImpl implements ApprovalOrderService {
         //添加合同信息
         for(ApprovalProductionContract approvalProductionContract : productionContracts){
             approvalProductionContract.setApprovalId(approvalProduction.getProductionId());
-            approvalProductionContract.setContractName("XXX的审批订单合同");
+            approvalProductionContract.setContractName(admin.getAdminName()+"的审批订单合同");
             approvalOrderMapper.insertProductionContract(approvalProductionContract);
         }
         //封装生产审批产品项
@@ -79,7 +88,7 @@ public class ApprovalOrderServiceImpl implements ApprovalOrderService {
         }
         //添加流程信息
         ProcessInfo processInfo = new ProcessInfo();
-        processInfo.setAdminId(1);
+        processInfo.setAdminId(admin.getAdminId());
         processInfo.setApprovalId(approvalInfo.getApprovalId());
         processInfo.setProcessDesc(approvalInfo.getApprovalDetails());
         processInfo.setProcessState(1);
@@ -88,9 +97,36 @@ public class ApprovalOrderServiceImpl implements ApprovalOrderService {
             throw new RuntimeException("添加生产审批流程信息失败");
         }
         //添加审批历史记录
+        ApprovalInfo info = new ApprovalInfo();
+        info.setApprovalId(approvalInfo.getApprovalId());
+        if(tasknfo.get("users") == null){
+            throw new RuntimeException("获取下一个审批人信息失败"+tasknfo);
+        }
+        String[] split = tasknfo.get("users").toString().split(",");
+        for (String name : split){
+            //通过name查询管理员id
+            Admin approvalAdmin = sysMapper.getByName(name);
+            if(approvalAdmin == null){
+                throw new RuntimeException("获取下一个审批管理员信息失败"+tasknfo);
+            }
+
+            HistoricalRecord recordInfo = new HistoricalRecord();
+            recordInfo.setApprovalId(approvalInfo.getApprovalId());
+            recordInfo.setAdminId(approvalAdmin.getAdminId());
+            recordInfo.setRecordState(1);
+            recordInfo.setTaskId(tasknfo.get("taskId").toString());
+            if(approvalOrderMapper.insertHistoricalRecord(recordInfo) < 1){
+                throw new RuntimeException("添加历史审批信息失败"+tasknfo);
+            }
+            //修改审核信息表
+            info.setApprovalStatusDetails("待"+name+"审批");
+            if(approvalOrderMapper.updateApprovalInfo(info) < 1){
+                throw new RuntimeException("修改审批信息失败"+tasknfo);
+            }
+        }
         HistoricalRecord historicalRecord = new HistoricalRecord();
         historicalRecord.setApprovalId(approvalInfo.getApprovalId());
-        historicalRecord.setAdminId(1);
+        historicalRecord.setAdminId(admin.getAdminId());
         historicalRecord.setRecordState(1);
         historicalRecord.setTaskId(tasknfo.get("taskId").toString());
         historicalRecord.setApprovalTime(new Date());
@@ -148,4 +184,24 @@ public class ApprovalOrderServiceImpl implements ApprovalOrderService {
     public Integer updateApprovalInfo(ApprovalInfo approvalInfo) {
         return approvalOrderMapper.updateApprovalInfo(approvalInfo);
     }
+
+    @Override
+    public Integer deleteHistoricalRecord(Integer approvalId) {
+        return approvalOrderMapper.deleteHistoricalRecord(approvalId);
+    }
+
+    @Override
+    public List<ApprovalInfo> getApprovalInfo(ApprovalInfo approvalInfo) {
+        return approvalOrderMapper.listApprovalInfo(approvalInfo);
+    }
+
+    @Override
+    public Integer updateProductionItem(ApprovalProductionItem approvalProductionItem) {
+        return approvalOrderMapper.updateProductionItem(approvalProductionItem);
+    }
+
+    @Override
+    public Integer insertInventoryRecords(ApprovalInventoryRecords approvalInventoryRecords) {
+        return approvalOrderMapper.insertInventoryRecords(approvalInventoryRecords);
+    }
 }

+ 17 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/approval/mapper/ApprovalOrderMapper.java

@@ -65,5 +65,22 @@ public interface ApprovalOrderMapper {
       * @return
       */
      Integer updateApprovalInfo(ApprovalInfo approvalInfo);
+     /**
+      * 删除审核历史记录信息
+      * @return
+      */
+     Integer deleteHistoricalRecord(Integer approvalId);
+     /**
+      * 修改审批订单项
+      * @return
+      */
+     Integer updateProductionItem(ApprovalProductionItem approvalProductionItem);
+     /**
+      * 修改审批订单项
+      * @return
+      */
+     Integer insertInventoryRecords(ApprovalInventoryRecords approvalInventoryRecords);
+
+
 
 }

+ 82 - 194
watero-rst-service/src/main/java/com/iamberry/rst/service/approval/mapper/approvalOrderMapper.xml

@@ -66,6 +66,9 @@
     <result column="item_product_model" property="itemProductModel" jdbcType="VARCHAR" />
     <result column="item_product_unit" property="itemProductUnit" jdbcType="VARCHAR" />
     <result column="item_product_box_number" property="itemProductBoxNumber" jdbcType="INTEGER" />
+    <result column="item_should_storage" property="itemShouldStorage" jdbcType="INTEGER" />
+    <result column="item_actual_storage" property="itemActualStorage" jdbcType="INTEGER" />
+    <result column="item_lack_number" property="itemLackNumber" jdbcType="INTEGER" />
     <result column="item_create_time" property="itemCreateTime" jdbcType="TIMESTAMP" />
     <result column="item_update_time" property="itemUpdateTime" jdbcType="TIMESTAMP" />
   </resultMap>
@@ -151,14 +154,17 @@
     item_product_model,
     item_product_unit,
     item_product_box_number,
-    item_create_time,
+    item_should_storage,
+    item_actual_storage,
+    item_lack_number,
+    item_create_time
     )
     VALUES
     <foreach collection="list" item="item" separator=",">
       (
       #{item.productionId},#{item.productId},#{item.itemProductName},#{item.itemColorName},
       #{item.itemProductNum},#{item.itemBrandName},#{item.itemProductModel},#{item.itemProductUnit}
-      ,#{item.itemProductBoxNumber},NOW()
+      ,#{item.itemProductBoxNumber},#{item.itemShouldStorage},#{item.itemActualStorage},#{item.itemLackNumber},NOW()
       )
     </foreach>
   </insert>
@@ -166,10 +172,10 @@
 
   <insert id="insertProductionContract" parameterType="ApprovalProductionContract">
     INSERT INTO tb_rst_approval_production_contract(
-    contract_id
-    production_id
-    contract_url
-    contract_type
+    contract_id,
+    production_id,
+    contract_url,
+    contract_type,
     contract_create_time
     )
     VALUES
@@ -178,10 +184,10 @@
 
   <insert id="insertProcessInfo" parameterType="ProcessInfo">
     INSERT INTO tb_rst_process_info(
-    approval_id
-    admin_id
-    process_desc
-    process_state
+    approval_id,
+    admin_id,
+    process_desc,
+    process_state,
     process_create_time
     )
     VALUES
@@ -190,11 +196,11 @@
 
   <insert id="insertHistoricalRecord" parameterType="HistoricalRecord">
     INSERT INTO tb_rst_historical_record(
-    approval_id
-    admin_id
-    record_state
-    task_id
-    approval_time
+    approval_id,
+    admin_id,
+    record_state,
+    task_id,
+    approval_time,
     record_create_time
     )
     VALUES
@@ -250,31 +256,34 @@
 <!--查询审批信息列表-->
   <select id="listApprovalInfo" parameterType="ApprovalInfo" resultMap="ApprovalInfoResultMap">
     SELECT
-    ai.approval_id
-    ai.approval_name
-    ai.approval_type
-    ai.approval_status
-    ai.approval_status_details
-    ai.admin_id
-    ai.approval_applicant
-    ai.activiti_id
-    ai.approval_details
-    ai.approval_remark
+    ai.approval_id,
+    ai.approval_name,
+    ai.approval_type,
+    ai.approval_status,
+    ai.approval_status_details,
+    ai.admin_id,
+    ai.approval_applicant,
+    ai.activiti_id,
+    ai.approval_details,
+    ai.approval_remark,
     ai.approval_create_time
     from tb_rst_approval_info ai
     LEFT JOIN  tb_rst_historical_record hr ON ai.approval_id = hr.approval_id
     <where>
+      <if test="approvalId != null and approvalId != ''">
+        ai.approval_id = #{approvalId}
+      </if>
       <if test="adminId != null and adminId != ''">
-        ai.admin_id = #{adminId}
+        AND ai.admin_id = #{adminId}
       </if>
       <if test="approvalType != null and approvalType != ''">
-        ai.approval_type = #{approvalType}
+        AND ai.approval_type = #{approvalType}
       </if>
       <if test="approvalStatus != null and approvalStatus != ''">
-        ai.approval_status = #{approvalStatus}
+        AND ai.approval_status = #{approvalStatus}
       </if>
-      <if test="adminId != null and adminId != ''">
-        hr.admin_id = #{adminId}
+      <if test="approvalAdminId != null and approvalAdminId != ''">
+        AND hr.admin_id = #{approvalAdminId}
       </if>
     </where>
   </select>
@@ -337,6 +346,9 @@
     api.item_product_model itemProductModel,
     api.item_product_unit itemProductUnit,
     api.item_product_box_number itemProductBoxNumber,
+    api.item_should_storage itemShouldStorage,
+    api.item_actual_storage itemActualStorage,
+    api.item_lack_number itemLackNumber,
     api.item_create_time itemCreateTime,
     api.item_update_time itemUpdateTime
     from tb_rst_approval_production_item api
@@ -394,7 +406,7 @@
         hr.admin_id = #{adminId}
       </if>
       <if test="approvalId != null and approvalId != ''">
-        hr.approval_id = #{approvalId}
+        AND hr.approval_id = #{approvalId}
       </if>
     </where>
   </select>
@@ -414,7 +426,7 @@
         hr.admin_id = #{adminId}
       </if>
       <if test="approvalId != null and approvalId != ''">
-        hr.approval_id = #{approvalId}
+        AND hr.approval_id = #{approvalId}
       </if>
     </where>
   </select>
@@ -433,7 +445,7 @@
         approval_id = #{approvalId}
       </if>
       <if test="adminId != null and adminId != ''">
-        admin_id = #{adminId}
+        AND admin_id = #{adminId}
       </if>
     </where>
   </select>
@@ -447,7 +459,7 @@
         approval_status = #{approvalStatus},
       </if>
       <if test="approvalStatusDetails != null" >
-        approval_status_details = #{approvalStatusDetails}
+        approval_status_details = #{approvalStatusDetails},
       </if>
       <if test="approvalDetails != null" >
         approval_details = #{approvalDetails}
@@ -459,172 +471,48 @@
       </if>
     </where>
   </update>
- <!-- <resultMap id="BaseResultMap" type="ApprovalOrderInfo" >
-    <id column="approval_id" property="approvalId" jdbcType="INTEGER" />
-    <result column="applicant_name" property="applicantName" jdbcType="VARCHAR" />
-    <result column="applicant_id" property="applicantId" jdbcType="INTEGER" />
-    <result column="order_name" property="orderName" jdbcType="VARCHAR" />
-    <result column="company_name" property="companyName" jdbcType="VARCHAR" />
-    <result column="contact_name" property="contactName" jdbcType="VARCHAR" />
-    <result column="contact_tel" property="contactTel" jdbcType="VARCHAR" />
-    <result column="delivery_time" property="deliveryTime" jdbcType="TIMESTAMP" />
-    <result column="delivery_way" property="deliveryWay" jdbcType="VARCHAR" />
-    <result column="contract_name" property="contractName" jdbcType="VARCHAR" />
-    <result column="contract_img" property="contractImg" jdbcType="VARCHAR" />
-    <result column="attachment_img" property="attachmentImg" jdbcType="VARCHAR" />
-    <result column="approval_state" property="approvalState" jdbcType="INTEGER" />
-    <result column="current_admin_id" property="currentAdminId" jdbcType="INTEGER" />
-    <result column="approval_desc" property="approvalDesc" jdbcType="VARCHAR" />
-    <result column="approval_create_time" property="approvalCreateTime" jdbcType="TIMESTAMP" />
-    <result column="approval_update_time" property="approvalUpdateTime" jdbcType="TIMESTAMP" />
-    <collection property="approvalOrderItemList" column="approval_id" ofType="ApprovalOrderItem" select="listApprovalOrderItem"/>
-  </resultMap>
-  <sql id="approval_order_column_List" >
-    approval_id, applicant_name,applicant_id, order_name,company_name,contact_name,
-    contact_tel,delivery_time,delivery_way,contract_name,contract_img,attachment_img,approval_state
-    ,current_admin_id,approval_desc,approval_create_time,approval_update_time
-  </sql>
-  <sql id="order_item_column_List" >
-    item_id, approval_id,product_id, product_name,color_name,product_num,
-    item_create_time,item_update_time
-  </sql>
-  <sql id="approval_people_column_List" >
-    people_id, approval_name,admin_id,is_first,is_last,next_admin_id
-  </sql>
-
-  <sql id="approval_record_column_List" >
-    record_id,approval_name,admin_id,approval_id,record_state,approval_time,approval_desc,record_create_time,record_update_time
-  </sql>
-
-  &lt;!&ndash; 批量添加订单项数据 &ndash;&gt;
-  <insert id="insertItem" parameterType="ArrayList">
-    INSERT INTO tb_rst_approval_order_item
-    (
-    approval_id,
-    product_id,
-    product_name,
-    color_name,
-    product_num,
-    item_create_time,
-    )
-    VALUES
-    <foreach collection="list" item="item" separator=",">
-      (
-      #{item.approvalId},#{item.productId},#{item.productName},#{item.colorName},
-      #{item.productNum},#{item.itemCreateTime}
-      )
-    </foreach>
-  </insert>
 
-  <insert id="insertRecord" parameterType="ApprovalRecord">
-    INSERT INTO tb_rst_approval_order(
-    approval_name,
-    admin_id,
-    record_state,
-    approval_time,
-    approval_desc,
-    record_create_time
-    )
-    VALUES
-    (#{approvalName},
-    (#{adminId},#{recordState},
-    #{approvalTime},
-    #{approvalDesc},
-    #{recordCreateTime})
-  </insert>
+  <delete id="deleteHistoricalRecord" parameterType="Integer">
+    DELETE FROM tb_rst_historical_record where approval_id = #{approvalId}
+  </delete>
 
-  <select id="listApprovalOrderInfo" parameterType="ApprovalOrderInfo" resultMap="BaseResultMap">
-    SELECT
-      ao.approval_id,
-      ao.applicant_name,
-      ao.applicant_id,
-      ao.order_name,
-      ao.company_name,
-      ao.contact_name,
-      ao.contact_tel,
-      ao.delivery_time,
-      ao.delivery_way,
-      ao.contract_name,
-      ao.contract_img,
-      ao.attachment_img,
-      ao.approval_state,
-      ao.current_admin_id,
-      ao.approval_desc,
-      ao.approval_create_time,
-      ao.approval_update_time,
-      sa.admin_name AS currentAdminName
-    from tb_rst_approval_order ao
-    LEFT JOIN  tb_rst_sys_admin sa ON ao.current_admin_id = sa.admin_id
-    <where>
-      <if test="applicantId != null and applicantId != ''">
-        ao.applicant_id = #{applicantId}
-      </if>
-      <if test="currentAdminId != null and currentAdminId != ''">
-        OR ao.current_admin_id = #{currentAdminId}
-      </if>
-      <if test="approvalState != null and approvalState != ''">
-        OR ao.approval_state = #{approvalState}
-      </if>
-      <if test="approvalId != null and approvalId != ''">
-        OR ao.approval_id = #{approvalId}
-      </if>
-    </where>
-  </select>
-
-  <select id="listApprovalOrderItem" parameterType="Integer" resultType="ApprovalOrderItem">
-    SELECT
-    <include refid="order_item_column_List" />
-    FROM tb_rst_approval_order_item
-    WHERE approval_id = #{approvalId}
-  </select>
-
-  <update id="update" parameterType="ApprovalOrderInfo">
-    update tb_rst_approval_order
+  <!-- 修改审批订单项-->
+  <update id="updateProductionItem" parameterType="ApprovalProductionItem">
+    update tb_rst_approval_production_item
     <set >
-      <if test="applicantName != null" >
-        applicant_name = #{applicantName},
-      </if>
-      <if test="applicantId != null" >
-        applicant_id = #{applicantId},
-      </if>
-      <if test="orderName != null" >
-        order_name = #{orderName},
-      </if>
-      <if test="companyName != null" >
-        company_name = #{companyName},
+      <if test="itemShouldStorage != null" >
+        item_should_storage = #{itemShouldStorage},
       </if>
-      <if test="contactTel != null" >
-        contact_tel = #{contactTel},
+      <if test="itemActualStorage != null" >
+        item_actual_storage = #{itemActualStorage},
       </if>
-      <if test="deliveryTime != null" >
-        delivery_time = #{deliveryTime},
-      </if>
-      <if test="deliveryWay != null" >
-        delivery_way = #{deliveryWay},
-      </if>
-      <if test="contractName != null" >
-        contract_name = #{contractName},
-      </if>
-      <if test="contractImg != null" >
-        contract_img = #{contractImg},
-      </if>
-      <if test="attachmentImg != null" >
-        attachment_img = #{attachmentImg},
-      </if>
-      <if test="approvalState != null" >
-        approval_state = #{approvalState},
-      </if>
-      <if test="currentAdminId != null" >
-        current_admin_id = #{currentAdminId},
-      </if>
-      <if test="approvalDesc != null" >
-        approval_desc = #{approvalDesc}
+      <if test="itemLackNumber != null" >
+        item_lack_number = #{itemLackNumber}
       </if>
     </set>
-    where approval_id = #{approvalId}
+    <where>
+      <if test="itemId != null and itemId != ''">
+        item_id = #{itemId}
+      </if>
+    </where>
   </update>
-
-  <delete id="deleteItem" parameterType="Integer">
-    DELETE FROM tb_rst_approval_order_item where approval_id = #{approvalId}
-  </delete>-->
+  <!-- 添加仓库入库记录-->
+  <insert id="insertInventoryRecords" parameterType="ApprovalInventoryRecords">
+    INSERT INTO tb_rst_approval_inventory_records(
+    approval_id,
+    storage_state,
+    product_id,
+    product_name,
+    color_name,
+    should_storage,
+    actual_storage,
+    lack_number,
+    operating_admin_id,
+    operating_time
+    )
+    VALUES
+    (#{approvalId},#{storageState},#{productId}
+    ,#{productName},#{colorName},#{shouldStorage}
+    ,#{actualStorage},#{lackNumber},#{operatingAdminId},NOW())
+  </insert>
 </mapper>

+ 10 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/sys/SysServiceImpl.java

@@ -119,6 +119,16 @@ public class SysServiceImpl implements SysService {
     }
 
     @Override
+    public Admin getByOpenid(String admin) {
+        return sysMapper.getByOpenid(admin);
+    }
+
+    @Override
+    public Admin getByName(String adminName) {
+        return sysMapper.getByName(adminName);
+    }
+
+    @Override
     public List<Admin> listGetAdmin(Admin admin) {
         return sysMapper.listAdmin(admin);
     }

+ 14 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/sys/mapper/SysMapper.java

@@ -92,4 +92,18 @@ public interface SysMapper {
      * @return
      */
     Integer saveAdmin(Admin admin);
+
+    /**
+     * 根据用户openid获取登录信息
+     * @param admin
+     * @return
+     */
+    Admin getByOpenid(String admin);
+
+    /**
+     * 根据用户姓名获取登录信息
+     * @param adminName
+     * @return
+     */
+    Admin getByName(String adminName);
 }

+ 12 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/sys/mapper/sysMapper.xml

@@ -211,4 +211,16 @@
 			#{adminStatus},#{adminSaleNum},NOW()
 		)
 	</insert>
+	<!-- 根据openid获取管理员信息 -->
+	<select id="getByOpenid" parameterType="String" resultType="Admin">
+		SELECT * FROM tb_rst_sys_admin
+		WHERE
+			admin_open_id = #{adminOpenId}
+	</select>
+	<!-- 根据名称获取管理员信息 -->
+	<select id="getByName" parameterType="String" resultType="Admin">
+		SELECT * FROM tb_rst_sys_admin
+		WHERE
+			admin_name = #{adminName}
+	</select>
 </mapper>

+ 152 - 25
watero-rst-web/src/main/java/com/iamberry/rst/controllers/approval/ApprovalController.java

@@ -1,14 +1,21 @@
 package com.iamberry.rst.controllers.approval;
 
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.iamberry.rst.core.approval.*;
+import com.iamberry.rst.core.page.PageRequest;
 import com.iamberry.rst.core.page.PagedResult;
+import com.iamberry.rst.core.sys.Admin;
 import com.iamberry.rst.faces.approval.ApprovalOrderService;
 import com.iamberry.rst.faces.approval.ApprovalTaskService;
+import com.iamberry.rst.faces.sys.SysService;
+import com.iamberry.wechat.core.entity.WechatUtils;
 import com.iamberry.wechat.tools.ResponseJson;
 import com.iamberry.wechat.tools.ResultInfo;
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
@@ -19,18 +26,20 @@ import org.springframework.web.multipart.commons.CommonsMultipartFile;
 import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
 import java.io.*;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * Created by Administrator on 2018/10/9.
  */
+
+@Controller
+@RequestMapping("/wechat/approval")
 public class ApprovalController {
     private ApprovalOrderService approvalOrderService;
     @Autowired
     private ApprovalTaskService approvalTaskService;
+    @Autowired
+    private SysService sysService;
     /**
      * 新增审批信息
      * @param request
@@ -38,11 +47,16 @@ public class ApprovalController {
      * @param productionItems
      * @return
      */
+    @ResponseBody
+    @RequestMapping(value = "/addApproval")
     public ResponseJson addApproval(HttpServletRequest request, ApprovalProduction approvalProduction, String productionItems,String productionContracts){
         ResponseJson rj =new ResponseJson(200, "添加成功", 200);
         if (approvalProduction == null || productionItems == null) {
             return  ResponseJson.getFAILURE();
         }
+        //获取openid,根据openid查询当前登录人信息
+        String openId = WechatUtils.getUserBySession(request).getUserOpenid();
+
         //获取审批任务id
         Map<String, Object> taskinfo = approvalTaskService.salesmanSubmitApply(1);
 
@@ -73,7 +87,7 @@ public class ApprovalController {
             listProductionContract.add(contractInfo);
         }
 
-        boolean returnValue = approvalOrderService.insertApprovalProduction(approvalProduction,listApprovalProductionItem,listProductionContract,taskinfo);
+        boolean returnValue = approvalOrderService.insertApprovalProduction(approvalProduction,listApprovalProductionItem,listProductionContract,taskinfo,openId);
         if(!returnValue){
             return  ResponseJson.getFAILURE();
         }
@@ -122,24 +136,39 @@ public class ApprovalController {
     }
 
 /**
- *  查询待审批/我发起的 列表
+ *  查询我发起的/我审核的列表
  * @param approvalInfo
  * @param pageSize
  * @param pageNO
  * @param totalNum
+ * @param selectType 1.我发起的 2.我审核的
  * @return
  * @throws Exception
  */
     @ResponseBody
     @RequestMapping(value = "/approvalInfoList")
-    public ResponseJson listApprovalInfo(
-            ApprovalInfo approvalInfo,
+    public ResponseJson listApprovalInfo(HttpServletRequest request,
+            ApprovalInfo approvalInfo,Integer selectType,
             @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize,
             @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
             @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) throws Exception {
         ResponseJson rj =new ResponseJson(200, "查询成功", 200);
-
+        //获取openid,根据openid查询当前登录人信息
+        String openId = WechatUtils.getUserBySession(request).getUserOpenid();
+        Admin admin = sysService.getByOpenid(openId);
+        if(admin == null){
+            return new ResponseJson(200, "未查询到登录人信息", 500);
+        }
+        if(selectType == null){
+            return new ResponseJson(200, "参数不完整,缺少查询类型字段", 500);
+        }
+        if(selectType == 1){//我发起的
+            approvalInfo.setAdminId(admin.getAdminId());
+        }else if(selectType == 2){//我审核的
+            approvalInfo.setApprovalAdminId(admin.getAdminId());
+        }
         PagedResult<ApprovalInfo> pagedResult = approvalOrderService.listApprovalInfo(pageNO, pageSize,approvalInfo,totalNum == null);
+
         if (totalNum != 0) {
             pagedResult.setTotal(totalNum);
         }
@@ -156,56 +185,154 @@ public class ApprovalController {
      */
     @ResponseBody
     @RequestMapping(value = "/updateApprovalInfo")
-    public ResponseJson updateApprovalInfo(
+    public ResponseJson updateApprovalInfo(HttpServletRequest request,
             ApprovalInfo approvalInfo,Integer status) throws Exception {
         ResponseJson rj =new ResponseJson(200, "操作成功", 200);
         if(status == null){
             return  ResponseJson.getFAILURE();
         }
+        if(approvalInfo == null){
+            return  ResponseJson.getFAILURE();
+        }
+        //获取openid,根据openid查询当前登录人信息
+        String openId = WechatUtils.getUserBySession(request).getUserOpenid();
+        Admin admin = sysService.getByOpenid(openId);
+        if(admin == null){
+            return new ResponseJson(200, "未查询到登录人信息", 500);
+        }
+        //审批历史记录封装
         HistoricalRecord historicalRecord = new HistoricalRecord();
         historicalRecord.setApprovalId(approvalInfo.getApprovalId());
-        historicalRecord.setAdminId(1);
+        historicalRecord.setAdminId(admin.getAdminId());
+        historicalRecord.setApprovalTime(new Date());
+        //流程信息封装
+        ProcessInfo processInfo = new ProcessInfo();
+        processInfo.setAdminId(admin.getAdminId());
+        processInfo.setApprovalId(approvalInfo.getApprovalId());
+        processInfo.setProcessDesc(approvalInfo.getApprovalDetails());
+        //审批信息封装
+        ApprovalInfo info = new ApprovalInfo();
+        info.setApprovalId(approvalInfo.getApprovalId());
         switch (status){
             case 1:
-
-                //查询当前审核人当前审核任务信息
-                HistoricalRecord record = approvalOrderService.getHistoricalRecord(historicalRecord);
-                if(record == null){
-                    return  ResponseJson.getFAILURE();
-                }
                 //修改审核历史记录状态为已通过
                 historicalRecord.setRecordState(2);
                 if(approvalOrderService.updateHistoricalRecord(historicalRecord) < 1){
                     return  ResponseJson.getFAILURE();
                 }
+                //查询当前审核人当前审核任务信息
+                HistoricalRecord record = approvalOrderService.getHistoricalRecord(historicalRecord);
+                if(record == null){
+                    return  ResponseJson.getFAILURE();
+                }
                 //获取下一个审核人,并添加审核历史信息
                 Map<String, Object> taskMap = approvalTaskService.completeTask(approvalInfo.getActivitiId(),record.getTaskId());
                 if(taskMap == null){
                     return  ResponseJson.getFAILURE();
                 }
-                if((Integer)taskMap.get("status") == 1){//没有下一个审批人,修改审批任务状态为已审批通过
-
-                }else if((Integer)taskMap.get("status") == 0){//还有下一个审批人,需要增加审批历史记录
+                if(taskMap.get("status") == 1){//没有下一个审批人,修改审批任务状态为已审批通过
+                    info.setApprovalStatus(2);
+                    if(approvalOrderService.updateApprovalInfo(info) < 1){
+                        return  ResponseJson.getFAILURE();
+                    }
+                }else if(taskMap.get("status") == 0){//还有下一个审批人,需要增加审批历史任务
+                    if(taskMap.get("users") == null){
+                        return  ResponseJson.getFAILURE();
+                    }
+                    String[] split = taskMap.get("users").toString().split(",");
+                    for (String name : split){
+                        //通过name查询管理员id
+                       Admin approvalAdmin = sysService.getByName(name);
+                       if(approvalAdmin == null){
+                           return  ResponseJson.getFAILURE();
+                       }
 
+                        HistoricalRecord recordInfo = new HistoricalRecord();
+                        recordInfo.setApprovalId(approvalInfo.getApprovalId());
+                        recordInfo.setAdminId(approvalAdmin.getAdminId());
+                        recordInfo.setRecordState(1);
+                        recordInfo.setTaskId(taskMap.get("taskId").toString());
+                        if(approvalOrderService.insertHistoricalRecord(recordInfo) < 1){
+                            return  ResponseJson.getFAILURE();
+                        }
+                        //修改审核信息表
+                        info.setApprovalStatusDetails("待"+name+"审批");
+                        if(approvalOrderService.updateApprovalInfo(info) < 1){
+                            return  ResponseJson.getFAILURE();
+                        }
+                    }
+                }
+                //添加流程信息记录
+                processInfo.setProcessState(2);
+                if(approvalOrderService.insertProcessInfo(processInfo) < 1){
+                    return  ResponseJson.getFAILURE();
                 }
                 break;
             case 2:
-                //修改状态为已驳回
+                //修改历史记录状态为已驳回
                 historicalRecord.setRecordState(3);
                 if(approvalOrderService.updateHistoricalRecord(historicalRecord) < 1){
                     return  ResponseJson.getFAILURE();
                 }
-                ApprovalInfo approvalinfo = new ApprovalInfo();
-                approvalinfo.setApprovalId(approvalInfo.getApprovalId());
-                approvalinfo.setApprovalStatus(3);
-                if(approvalOrderService.updateApprovalInfo(approvalinfo) < 1){
+                info.setApprovalStatus(3);
+                if(approvalOrderService.updateApprovalInfo(info) < 1){
                     return  ResponseJson.getFAILURE();
                 }
                 //添加流程信息记录
+                processInfo.setProcessState(3);
+                if(approvalOrderService.insertProcessInfo(processInfo) < 1){
+                    return  ResponseJson.getFAILURE();
+                }
+
+                //调用第三方revokeTask接口执行撤销
+                approvalTaskService.revokeTask(approvalInfo.getActivitiId(),"审批人驳回审核");
+                break;
+            case 3:
+                //修改审批信息状态为撤销
+                info.setApprovalStatus(9);
+                if(approvalOrderService.updateApprovalInfo(info) < 1){
+                    return  ResponseJson.getFAILURE();
+                }
+                //删除该审批的历史记录
+                approvalOrderService.deleteHistoricalRecord(approvalInfo.getApprovalId());
 
+                //添加流程信息记录
+                processInfo.setProcessState(4);
+                if(approvalOrderService.insertProcessInfo(processInfo) < 1){
+                    return  ResponseJson.getFAILURE();
+                }
+                //调用第三方revokeTask接口执行撤销
+                approvalTaskService.revokeTask(approvalInfo.getActivitiId(),"业务员撤销审核");
+                break;
+            case 4:
+                //添加评论内容到流程信息表,不用修改任何状态
+                processInfo.setProcessState(0);
+                if(approvalOrderService.insertProcessInfo(processInfo) < 1){
+                    return  ResponseJson.getFAILURE();
+                }
                 break;
         }
         return rj;
     }
 
+
+    /**
+     *  查询审批订单详情
+     * @param approvalInfo
+     * @return
+     * @throws Exception
+     */
+    @ResponseBody
+    @RequestMapping(value = "/getApprovalInfo")
+    public ResponseJson getApprovalInfo(HttpServletRequest request,
+                                         ApprovalInfo approvalInfo) throws Exception {
+        ResponseJson rj =new ResponseJson(200, "查询成功", 200);
+        if(approvalInfo == null){
+            return  ResponseJson.getFAILURE();
+        }
+        List<ApprovalInfo> info = approvalOrderService.getApprovalInfo(approvalInfo);
+        rj.addResponseKeyValue("approvalInfo",info);
+        return rj;
+    }
+
 }