Browse Source

Merge remote-tracking branch 'origin/master'

xian 6 years ago
parent
commit
996cbda592
41 changed files with 1858 additions and 33 deletions
  1. 3 0
      watero-common-core/src/main/java/com/iamberry/wechat/core/entity/ResultMsg.java
  2. 52 0
      watero-common-core/src/main/java/com/iamberry/wechat/core/entity/coupon/Exchange.java
  3. 52 0
      watero-common-core/src/main/java/com/iamberry/wechat/core/entity/coupon/ExchangeItem.java
  4. 72 0
      watero-common-core/src/main/java/com/iamberry/wechat/core/entity/thanksgiving/ThanksGiving.java
  5. 15 4
      watero-common-tool/src/main/java/com/iamberry/wechat/tools/HttpClient431Util.java
  6. 1 1
      watero-common-tool/src/main/java/com/iamberry/wechat/tools/NameUtils.java
  7. 11 0
      watero-common-tool/src/main/java/com/iamberry/wechat/tools/payUtil/RandomUtil.java
  8. 10 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/approval/ApprovalApplyPickItem.java
  9. 9 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/approval/ApprovalProductionItem.java
  10. 12 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/kdn/KuaiDiNiaoService.java
  11. 11 2
      watero-rst-service/src/main/java/com/iamberry/rst/service/approval/ApplyPickServiceImpl.java
  12. 20 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/approval/ApprovalOrderServiceImpl.java
  13. 17 6
      watero-rst-service/src/main/java/com/iamberry/rst/service/approval/mapper/applyPickItemMapper.xml
  14. 2 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/approval/mapper/applyPickMapper.xml
  15. 14 8
      watero-rst-service/src/main/java/com/iamberry/rst/service/approval/mapper/approvalOrderMapper.xml
  16. 5 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/approval/mapper/approvalProductionMapper.xml
  17. 176 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/kdn/KuaiDiNiaoServiceImpl.java
  18. 29 0
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/approval/ApplyPickController.java
  19. 39 0
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/approval/ApprovalController.java
  20. 1 1
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/approval/adminApprovalController.java
  21. 82 2
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AppComplaintQuestionInfoController.java
  22. 107 2
      watero-rst-web/src/main/java/com/iamberry/rst/utils/KuaiDi100.java
  23. 157 0
      watero-rst-web/src/main/java/com/iamberry/rst/utils/SeleOrdeCompUtil.java
  24. 76 0
      watero-rst-web/src/main/resources/RST.bpmn
  25. 61 0
      watero-rst-web/src/main/resources/pickRst.bpmn
  26. 1 1
      watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/list_wait_send_order.ftl
  27. 37 0
      watero-wechat-interface/src/main/java/com/iamberry/wechat/face/coupon/ExchangeItemService.java
  28. 37 0
      watero-wechat-interface/src/main/java/com/iamberry/wechat/face/coupon/ExchangeService.java
  29. 43 0
      watero-wechat-interface/src/main/java/com/iamberry/wechat/face/thanksgiving/ThanksGivingService.java
  30. 56 0
      watero-wechat-service/src/main/java/com/iamberry/wechat/service/coupon/ExchangeItemServiceImpl.java
  31. 56 0
      watero-wechat-service/src/main/java/com/iamberry/wechat/service/coupon/ExchangeServiceImpl.java
  32. 37 0
      watero-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/ExchangeItemMapper.java
  33. 37 0
      watero-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/ExchangeMapper.java
  34. 43 0
      watero-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/ThanksGivingMapper.java
  35. 69 0
      watero-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/exchangeItemMapper.xml
  36. 56 0
      watero-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/exchangeMapper.xml
  37. 89 0
      watero-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/thanksGivingMapper.xml
  38. 99 0
      watero-wechat-service/src/main/java/com/iamberry/wechat/service/thanksgiving/ThanksGivingServiceImpl.java
  39. 148 0
      watero-wechat-web/src/main/java/com/iamberry/wechat/handles/thanksgiving/ThanksGivingHandler.java
  40. 12 0
      watero-wechat-web/src/main/resources/iamberry-wechat-service-mybatis.xml
  41. 4 4
      watero-wechat-web/src/main/resources/jdbc.properties

+ 3 - 0
watero-common-core/src/main/java/com/iamberry/wechat/core/entity/ResultMsg.java

@@ -12,6 +12,9 @@ public class ResultMsg implements java.io.Serializable{
 	 */
 	private static final long serialVersionUID = 8987614804726091566L;
 
+	public static final String SUCCESS = "SUCCESS";
+	public static final String ERROR = "ERROR";
+
 	private boolean status; // 状态
 	
 	private String ResultCode ; //状态码

+ 52 - 0
watero-common-core/src/main/java/com/iamberry/wechat/core/entity/coupon/Exchange.java

@@ -0,0 +1,52 @@
+package com.iamberry.wechat.core.entity.coupon;
+
+import  java.util.Date;
+import  java.io.Serializable;
+/**
+ *  兑换表类
+ * @author
+ * @Date 2018-12-11
+ */
+public class Exchange  implements  Serializable{
+    private static final long serialVersionUID = 4161577323724581015L;
+    //
+    private Integer exchangeId;
+    //
+    private Integer couponId;
+    //创建时间
+    private Date exchangeCreateTime;
+    //修改时间'
+    private Date exchangeUpdateTime;
+
+    public Integer getExchangeId(){
+        return exchangeId;
+    }
+
+    public void setExchangeId(Integer  exchangeId){
+        this.exchangeId=exchangeId;
+    }
+
+    public Integer getCouponId(){
+        return couponId;
+    }
+
+    public void setCouponId(Integer  couponId){
+        this.couponId=couponId;
+    }
+
+    public Date getExchangeCreateTime(){
+        return exchangeCreateTime;
+    }
+
+    public void setExchangeCreateTime(Date  exchangeCreateTime){
+        this.exchangeCreateTime=exchangeCreateTime;
+    }
+
+    public Date getExchangeUpdateTime(){
+        return exchangeUpdateTime;
+    }
+
+    public void setExchangeUpdateTime(Date  exchangeUpdateTime){
+        this.exchangeUpdateTime=exchangeUpdateTime;
+    }
+}

+ 52 - 0
watero-common-core/src/main/java/com/iamberry/wechat/core/entity/coupon/ExchangeItem.java

@@ -0,0 +1,52 @@
+package com.iamberry.wechat.core.entity.coupon;
+
+
+import  java.io.Serializable;
+/**
+ *  兑换子表类
+ * @author
+ * @Date 2018-12-11
+ */
+public class ExchangeItem  implements  Serializable{
+    private static final long serialVersionUID = 5940933839681811215L;
+    //
+    private Integer exchangeItemId;
+    //兑换表id
+    private Integer exchangeId;
+    //颜色id
+    private Integer colorId;
+    //数量'
+    private Integer exchangeItemNum;
+
+    public Integer getExchangeItemId(){
+        return exchangeItemId;
+    }
+
+    public void setExchangeItemId(Integer  exchangeItemId){
+        this.exchangeItemId=exchangeItemId;
+    }
+
+    public Integer getExchangeId(){
+        return exchangeId;
+    }
+
+    public void setExchangeId(Integer  exchangeId){
+        this.exchangeId=exchangeId;
+    }
+
+    public Integer getColorId(){
+        return colorId;
+    }
+
+    public void setColorId(Integer  colorId){
+        this.colorId=colorId;
+    }
+
+    public Integer getExchangeItemNum(){
+        return exchangeItemNum;
+    }
+
+    public void setExchangeItemNum(Integer  exchangeItemNum){
+        this.exchangeItemNum=exchangeItemNum;
+    }
+}

+ 72 - 0
watero-common-core/src/main/java/com/iamberry/wechat/core/entity/thanksgiving/ThanksGiving.java

@@ -0,0 +1,72 @@
+package com.iamberry.wechat.core.entity.thanksgiving;
+
+import  java.util.Date;
+import  java.io.Serializable;
+/**
+ *  活动-领取优惠券类
+ * @author
+ * @Date 2018-12-11
+ */
+public class ThanksGiving  implements  Serializable{
+    private static final long serialVersionUID = 4870415709390973071L;
+    //
+    private Integer thanksGivingId;
+    //电话号码
+    private String thanksGivingPhone;
+    //领取状态 1:未领取 2:已领取
+    private Integer thanksGivingStatus;
+    //领取时间
+    private Date thanksGivingTime;
+    //领取人openid'
+    private String thanksGivingOpenId;
+    //领取的优惠券id'
+    private String couponItemId;
+
+    public Integer getThanksGivingId(){
+        return thanksGivingId;
+    }
+
+    public void setThanksGivingId(Integer  thanksGivingId){
+        this.thanksGivingId=thanksGivingId;
+    }
+
+    public String getThanksGivingPhone(){
+        return thanksGivingPhone;
+    }
+
+    public void setThanksGivingPhone(String  thanksGivingPhone){
+        this.thanksGivingPhone=thanksGivingPhone;
+    }
+
+    public Integer getThanksGivingStatus(){
+        return thanksGivingStatus;
+    }
+
+    public void setThanksGivingStatus(Integer  thanksGivingStatus){
+        this.thanksGivingStatus=thanksGivingStatus;
+    }
+
+    public Date getThanksGivingTime(){
+        return thanksGivingTime;
+    }
+
+    public void setThanksGivingTime(Date  thanksGivingTime){
+        this.thanksGivingTime=thanksGivingTime;
+    }
+
+    public String getThanksGivingOpenId(){
+        return thanksGivingOpenId;
+    }
+
+    public void setThanksGivingOpenId(String  thanksGivingOpenId){
+        this.thanksGivingOpenId=thanksGivingOpenId;
+    }
+
+    public String getCouponItemId() {
+        return couponItemId;
+    }
+
+    public void setCouponItemId(String couponItemId) {
+        this.couponItemId = couponItemId;
+    }
+}

+ 15 - 4
watero-common-tool/src/main/java/com/iamberry/wechat/tools/HttpClient431Util.java

@@ -725,9 +725,20 @@ public class HttpClient431Util {
     }
 
     public static void main(String[] args) throws Exception {
-    	long start = System.currentTimeMillis();
-    	boolean b = downloadFile("https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=gQHT8DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xLzgwamFXRURsc3AzTE1pQnoxbUFfAAIEkhQsVwMEAAAAAA%3D%3D", "D://abcdefgj.png");
-    	long end = System.currentTimeMillis();
-    	System.out.println(b + "," + (end - start));
+//    	long start = System.currentTimeMillis();
+//    	boolean b = downloadFile("https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=gQHT8DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xLzgwamFXRURsc3AzTE1pQnoxbUFfAAIEkhQsVwMEAAAAAA%3D%3D", "D://abcdefgj.png");
+//    	long end = System.currentTimeMillis();
+//    	System.out.println(b + "," + (end - start));
+
+        // 生成系统级请求数据
+//        Map<String, String> params = new HashMap<String, String>();
+//        params.put("nu", "221435993148");
+//        String url = "http://api.open.baidu.com/pae/common/api/Redirect";
+//        // 发送请求
+//        String html = HttpClient431Util.doGet(params, url);
+//        Document doc = Jsoup.parse(html);
+//        Element content = doc.getElementById("companyCode");
+//        String value = content.val();
     }
+
 }

+ 1 - 1
watero-common-tool/src/main/java/com/iamberry/wechat/tools/NameUtils.java

@@ -101,5 +101,5 @@ public class NameUtils {
     /** 
      * 验证码类型为仅小写字母 
      */  
-    public static final int TYPE_LOWER_ONLY = 6;  
+    public static final int TYPE_LOWER_ONLY = 6;
 }

+ 11 - 0
watero-common-tool/src/main/java/com/iamberry/wechat/tools/payUtil/RandomUtil.java

@@ -82,4 +82,15 @@ public class RandomUtil {
 		return sb.toString();
 	}
 
+	/**
+	 * 6为短信验证码
+	 * @return
+	 */
+	public static String getRandom(){
+		String randNum = new Random().nextInt(1000000)+"";
+		if(randNum.length()!=4){
+			return getRandom();
+		}
+		return randNum;
+	}
 }

+ 10 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/approval/ApprovalApplyPickItem.java

@@ -31,6 +31,8 @@ public class ApprovalApplyPickItem implements Serializable{
     private String itemProductUnit;
     //箱数/套数
     private Integer itemProductBoxNumber;
+    //生产审批订单项id
+    private Integer productionItemId;
     //创建时间
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@@ -156,4 +158,12 @@ public class ApprovalApplyPickItem implements Serializable{
     public void setItemExternalModel(String itemExternalModel) {
         this.itemExternalModel = itemExternalModel;
     }
+
+    public Integer getProductionItemId() {
+        return productionItemId;
+    }
+
+    public void setProductionItemId(Integer productionItemId) {
+        this.productionItemId = productionItemId;
+    }
 }

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

@@ -22,6 +22,7 @@ public class ApprovalProductionItem implements Serializable{
     private Integer itemActualStorage;//实际入库数量
     private Integer itemShouldStorage;//应入库数量
     private Integer itemLackNumber;//缺少数量
+    private Integer itemCanpickNumber;//可提货数量
     private Date itemCreateTime;
     private Date itemUpdateTime;
 
@@ -154,4 +155,12 @@ public class ApprovalProductionItem implements Serializable{
     public void setItemExternalModel(String itemExternalModel) {
         this.itemExternalModel = itemExternalModel;
     }
+
+    public Integer getItemCanpickNumber() {
+        return itemCanpickNumber;
+    }
+
+    public void setItemCanpickNumber(Integer itemCanpickNumber) {
+        this.itemCanpickNumber = itemCanpickNumber;
+    }
 }

+ 12 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/kdn/KuaiDiNiaoService.java

@@ -0,0 +1,12 @@
+package com.iamberry.rst.faces.kdn;
+
+public interface KuaiDiNiaoService {
+
+    /**
+     * 使用快递单号
+     * 查询快递公司
+     * @param code
+     * @return
+     */
+    String selectCourierCompany(String code);
+}

+ 11 - 2
watero-rst-service/src/main/java/com/iamberry/rst/service/approval/ApplyPickServiceImpl.java

@@ -112,8 +112,8 @@ public class ApplyPickServiceImpl  implements ApplyPickService {
             List<ApprovalProductionItem> approvalProductionItemList = approvalProductionMapper.getApprovalProductionItemList(approvalProductionItem);
             approvalProductionItem = approvalProductionItemList.get(0);
 
-            if(approvalApplyPickItem.getItemProductNum() > approvalProductionItem.getItemProductNum() ){
-                throw new RuntimeException(approvalProductionItem.getItemProductName()+"("+ approvalProductionItem.getItemColorName() +")"+"的提货数量不能大于"+approvalProductionItem.getItemProductNum());
+            if(approvalApplyPickItem.getItemProductNum() > approvalProductionItem.getItemCanpickNumber() ){
+                throw new RuntimeException(approvalProductionItem.getItemProductName()+"("+ approvalProductionItem.getItemColorName() +")"+"的提货数量不能大于可提货数量"+approvalProductionItem.getItemProductNum());
             }
             approvalApplyPickItem.setProductId(approvalProductionItem.getProductId());
             approvalApplyPickItem.setItemProductName(approvalProductionItem.getItemProductName());
@@ -123,6 +123,15 @@ public class ApplyPickServiceImpl  implements ApplyPickService {
             approvalApplyPickItem.setItemProductUnit(approvalProductionItem.getItemProductUnit());
             approvalApplyPickItem.setItemProductBoxNumber(approvalProductionItem.getItemProductBoxNumber());
             approvalApplyPickItem.setItemExternalModel(approvalProductionItem.getItemExternalModel());
+            approvalApplyPickItem.setProductionItemId(approvalProductionItem.getItemId());
+
+            //修改生产审批项可提货数量
+            ApprovalProductionItem  productionItem = new ApprovalProductionItem();
+            productionItem.setItemId(approvalApplyPickItem.getItemId());
+            productionItem.setItemCanpickNumber(approvalProductionItem.getItemCanpickNumber()-approvalApplyPickItem.getItemProductNum());
+            if(approvalOrderMapper.updateProductionItem(productionItem) < 1){
+                throw new RuntimeException("修改生产审批项可提货数量失败----itemId="+approvalApplyPickItem.getItemId());
+            }
         }
         flag = applyPickItemMapper.saveList(approvalApplyPick.getListApplyPickItem());
         if(flag < 1){

+ 20 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/approval/ApprovalOrderServiceImpl.java

@@ -275,6 +275,7 @@ public class ApprovalOrderServiceImpl implements ApprovalOrderService {
             /*productionItem.setItemShouldStorage(productionItem.getItemLackNumber());*/
             productionItem.setItemLackNumber(productionItem.getItemLackNumber() - jsonRecords.getInt("actualStorage"));
             productionItem.setItemActualStorage(productionItem.getItemActualStorage()+jsonRecords.getInt("actualStorage"));
+            productionItem.setItemCanpickNumber(productionItem.getItemActualStorage()+jsonRecords.getInt("actualStorage"));
             if(approvalOrderMapper.updateProductionItem(productionItem) < 1){
                 return new ResponseJson(200, "修改审批产品项失败", 500);
             }
@@ -702,6 +703,25 @@ public class ApprovalOrderServiceImpl implements ApprovalOrderService {
                     rj.setResultMsg("添加流程信息记录失败!");
                     return  rj;
                 }
+                //如果是提货订单则需要返回可提货数量
+                if (ainfo.getApprovalType() == 2) {
+                    //修改生产审批项的可提货数量
+                    ApprovalInfo approval = new ApprovalInfo();
+                    approval.setApprovalId(ainfo.getApprovalId());
+                    List<ApprovalInfo> listApprovalInfo =  approvalOrderMapper.listApprovalInfo(approval);
+                    for(ApprovalApplyPickItem item : listApprovalInfo.get(0).getApprovalApplyPick().getListApplyPickItem()){
+                        //查询生产审批id
+                        ApprovalProductionItem productionItem = approvalOrderMapper.getProductionItem(item.getProductionItemId());
+                        ApprovalProductionItem productItem = new ApprovalProductionItem();
+                        productItem.setItemId(item.getProductionItemId());
+                        productItem.setItemCanpickNumber(productionItem.getItemCanpickNumber()+item.getItemProductNum());
+                        if(approvalOrderMapper.updateProductionItem(productItem) < 1){
+                            rj = ResponseJson.getFAILURE();
+                            rj.setResultMsg("返回生产审批可提货数量失败!");
+                            return  rj;
+                        }
+                    }
+                }
                 //调用第三方revokeTask接口执行撤销
                 approvalTaskService.revokeTask(approvalInfo.getActivitiId(),"业务员撤销审核");
                 break;

+ 17 - 6
watero-rst-service/src/main/java/com/iamberry/rst/service/approval/mapper/applyPickItemMapper.xml

@@ -14,6 +14,7 @@
         <result    column="item_product_box_number"    property="itemProductBoxNumber" />
         <result    column="item_create_time"    property="itemCreateTime" />
         <result    column="item_update_time"    property="itemUpdateTime" />
+        <result    column="production_item_id"    property="productionItemId" />
     </resultMap>
     <sql    id="Base_List" >
         t.apply_item_id,
@@ -27,7 +28,8 @@
         t.item_product_unit,
         t.item_product_box_number,
         t.item_create_time,
-        t.item_update_time
+        t.item_update_time,
+        t.production_item_id
     </sql>
     <select id="getApprovalApplyPickItemList" resultMap="BaseResultMap" parameterType="ApprovalApplyPickItem" >
         select
@@ -64,6 +66,9 @@
             <if test="itemProductBoxNumber != null ">
                 AND t.item_product_box_number = #{itemProductBoxNumber}
             </if >
+            <if test="productionItemId != null ">
+                AND t.production_item_id = #{productionItemId}
+            </if >
         </where>
     </select>
     <select id="getApprovalApplyPickItemById" resultMap="BaseResultMap" parameterType="Integer" >
@@ -85,7 +90,8 @@
         item_brand_name,
         item_product_model,
         item_product_unit,
-        item_product_box_number
+        item_product_box_number,
+        production_item_id
         )
         values
         (
@@ -98,7 +104,8 @@
         #{itemBrandName},
         #{itemProductModel},
         #{itemProductUnit},
-        #{itemProductBoxNumber}
+        #{itemProductBoxNumber},
+        #{productionItemId}
         )
     </insert>
     <update id="update" parameterType="ApprovalApplyPickItem" >
@@ -133,7 +140,7 @@
                 item_product_unit = #{itemProductUnit},
             </if >
             <if test="itemProductBoxNumber != null ">
-                item_product_box_number = #{itemProductBoxNumber},
+                item_product_box_number = #{itemProductBoxNumber}
             </if >
         </set >
         where apply_item_id= #{applyItemId}
@@ -156,7 +163,9 @@
         item_brand_name,
         item_product_model,
         item_product_unit,
-        item_product_box_number
+        item_product_box_number,
+        item_external_model,
+        production_item_id
         )
         values
         <foreach collection="list" item="node" index="index" separator="," open="" close="">
@@ -170,7 +179,9 @@
             #{node.itemBrandName},
             #{node.itemProductModel},
             #{node.itemProductUnit},
-            #{node.itemProductBoxNumber}
+            #{node.itemProductBoxNumber},
+            #{node.itemExternalModel},
+            #{node.productionItemId}
             )
         </foreach >
     </insert>

+ 2 - 1
watero-rst-service/src/main/java/com/iamberry/rst/service/approval/mapper/applyPickMapper.xml

@@ -83,7 +83,8 @@
         <result    column="item_product_box_number"    property="itemProductBoxNumber" />
         <result    column="item_create_time"    property="itemCreateTime" />
         <result    column="item_update_time"    property="itemUpdateTime" />
-        <result    column="item_external_model"    property="itemExternalModel " />
+        <result    column="item_external_model"    property="itemExternalModel" />
+        <result    column="production_item_id"    property="productionItemId" />
     </resultMap>
     <resultMap  id="approvalInfoMap" type="ApprovalInfo" >
         <result    column="approval_id"    property="approvalId" />

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

@@ -172,7 +172,8 @@
     item_actual_storage,
     item_lack_number,
     item_create_time,
-    item_external_model
+    item_external_model,
+    item_canpick_number
     )
     VALUES
     <foreach collection="list" item="item" separator=",">
@@ -180,7 +181,7 @@
       #{item.productionId},#{item.productId},#{item.itemProductName},#{item.itemColorName},
       #{item.itemProductNum},#{item.itemBrandName},#{item.itemProductModel},#{item.itemProductUnit}
       ,#{item.itemProductBoxNumber},#{item.itemShouldStorage},#{item.itemActualStorage},#{item.itemLackNumber},NOW(),#{item.itemExternalModel}
-      )
+      ,#{item.itemCanpickNumber})
     </foreach>
   </insert>
 
@@ -359,7 +360,7 @@
         AND ai.approval_status in (2,6)
       </if>
       <if test="selectState != null and selectState != '' and selectState == 4">
-        AND ai.approval_status  = 7
+        AND ai.approval_status  in (7,10)
       </if>
       <if test="selectState != null and selectState != '' and selectState == 5">
         AND ai.approval_status in (1,4)
@@ -437,7 +438,8 @@
     api.item_lack_number itemLackNumber,
     api.item_create_time itemCreateTime,
     api.item_update_time itemUpdateTime,
-    api.item_external_model  itemExternalModel
+    api.item_external_model  itemExternalModel,
+    api.item_canpick_number  itemCanpickNumber
     from tb_rst_approval_production_item api
     where
         api.production_id = #{productionId}
@@ -554,11 +556,14 @@
   <update id="updateProductionItem" parameterType="ApprovalProductionItem">
     update tb_rst_approval_production_item
     <set >
-      <if test="itemActualStorage != null" >
+      <if test="itemActualStorage != null and itemActualStorage != ''" >
         item_actual_storage = #{itemActualStorage},
       </if>
-      <if test="itemLackNumber != null" >
-        item_lack_number = #{itemLackNumber}
+      <if test="itemLackNumber != null and itemLackNumber != ''" >
+        item_lack_number = #{itemLackNumber},
+      </if>
+      <if test="itemCanpickNumber != null and itemCanpickNumber != ''" >
+        item_canpick_number = #{itemCanpickNumber}
       </if>
     </set>
     WHERE
@@ -609,7 +614,8 @@
     api.item_lack_number itemLackNumber,
     api.item_create_time itemCreateTime,
     api.item_update_time itemUpdateTime,
-    api.item_external_model  itemExternalModel
+    api.item_external_model  itemExternalModel,
+    api.item_canpick_number  itemCanpickNumber
     from tb_rst_approval_production_item api
     where
     api.item_id = #{itemId}

+ 5 - 1
watero-rst-service/src/main/java/com/iamberry/rst/service/approval/mapper/approvalProductionMapper.xml

@@ -20,6 +20,8 @@
         <result    column="production_create_time"    property="productionCreateTime" />
         <result    column="production_update_time"    property="productionUpdateTime" />
         <result    column="contract_name"    property="contractName" />
+        <result    column="contact_address"    property="contactAddress" />
+        <result    column="inspection_time"    property="inspectionTime" />
     </resultMap>
     <sql    id="Base_List" >
         t.production_id,
@@ -39,7 +41,9 @@
         t.production_remark,
         t.production_create_time,
         t.production_update_time,
-        t.contract_name
+        t.contract_name,
+        t.contact_address,
+        t.inspection_time
     </sql>
     <select id="getApprovalProductionList" resultMap="BaseResultMap" parameterType="ApprovalProduction" >
         select

+ 176 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/kdn/KuaiDiNiaoServiceImpl.java

@@ -0,0 +1,176 @@
+package com.iamberry.rst.service.kdn;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.iamberry.rst.faces.kdn.KuaiDiNiaoService;
+import com.iamberry.wechat.tools.HttpClient431Util;
+import com.sun.org.apache.xml.internal.security.utils.Base64;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import java.io.*;
+import java.net.URLEncoder;
+import java.security.MessageDigest;
+import java.util.HashMap;
+import java.util.Map;
+
+@Service
+public class KuaiDiNiaoServiceImpl implements KuaiDiNiaoService {
+    private static Logger LOGGER = LoggerFactory.getLogger(KuaiDiNiaoServiceImpl.class);
+    private static String ERRORPATH = "D:\\testJavaPath\\error.txt";
+    private static String SUCCESSPATH = "D:\\testJavaPath\\success.txt";
+
+    //电商ID
+    private static final String EBusinessID="1343593";
+    //电商加密私钥,快递鸟提供
+    private static final String AppKey="3597c368-9dc0-40b5-9cf2-86d9cb90e38a";
+    //单号识别API
+    private final static  String URL = "http://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx";
+
+    //获取EBusinessID
+    public String getEBusinessID(){
+        return EBusinessID;
+    }
+
+    @Override
+    public String selectCourierCompany(String code) {
+        String courierCompang="";
+        Map<String,Object> requestMap = new HashMap();
+        requestMap.put("LogisticCode",code);
+        try {
+            // 第三方接口对时效性有要求,并发数不超过多少,此处Sleep 1200ms
+            Thread.sleep(1200);
+
+            // 生成电子面单的请求数据
+            String requestData = JSONObject.toJSONString(requestMap);
+            // 生成系统级请求数据
+            Map<String, String> params = new HashMap<String, String>();
+            params.put("RequestData", urlEncoder(requestData, "UTF-8"));
+            params.put("EBusinessID", EBusinessID);
+            params.put("RequestType", "2002");
+            String dataSign=encrypt(requestData, AppKey, "UTF-8");
+            params.put("DataSign", urlEncoder(dataSign, "UTF-8"));
+            params.put("DataType", "2");
+            // 发送请求
+            String json = HttpClient431Util.doPost(params, URL);
+
+            Map responseMap = JSONObject.parseObject(json);
+
+            JSONArray shippersAyyar = (JSONArray) responseMap.get("Shippers");
+            if(shippersAyyar.size() < 1){
+                LOGGER.info("=========快递单号:"+code+";查询不到快递公司");
+                String errorMsg = "快递单号:" + code+";查询不到快递公司+"+"\n";
+                writeTxt(ERRORPATH,errorMsg);
+            }
+            if(shippersAyyar.size()>0 &&  shippersAyyar.size() < 2){
+                JSONObject job = shippersAyyar.getJSONObject(0);  // 遍历 jsonarray 数组,把每一个对象转成 json 对象
+                String  shipperName = (String) job.get("ShipperName");
+                String  shipperCode = (String) job.get("ShipperCode");
+                courierCompang = shipperCode;
+                if(courierCompang == null || "".equals(courierCompang) ){
+                    LOGGER.info("=========快递单号:"+code+";查询不到快递公司,其中有一个快递公司");
+                    String errorMsg = "快递单号:" + code+";查询不到快递公司+"+"\n";
+                    writeTxt(ERRORPATH,errorMsg);
+                }else{
+                    LOGGER.info("=========快递单号:"+code+";查询成功,快递公司:"+shipperName+":"+shipperCode);
+                    String errorMsg = "快递单号:" + code+"快递公司:"+shipperName+":"+shipperCode +"\n";
+                    writeTxt(SUCCESSPATH,errorMsg);
+                }
+            }else{
+                StringBuffer company = new StringBuffer();
+                for(int i=0;i<shippersAyyar.size();i++){
+                    JSONObject job = shippersAyyar.getJSONObject(i);
+                    company.append(job.get("ShipperName")+":");
+                    company.append(job.get("ShipperCode")+";");
+                }
+                LOGGER.info("=========快递单号:"+code+";查询到多个快递公司:"+company.toString());
+                String errorMsg = "快递单号:"+code+";查询到多个快递公司:"+company.toString()+"\n";
+                writeTxt(ERRORPATH,errorMsg);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return courierCompang;
+    }
+
+    /**
+     * 写入文件
+     * @param path
+     * @param s
+     */
+    public static void writeTxt(String path,String s){
+        File file = new File(path);
+        try{
+            FileWriter fw = new FileWriter(file, true);
+            if(!file.exists()){
+                file.createNewFile();
+            }
+            BufferedWriter bw = new BufferedWriter(fw);
+            PrintWriter pw = new PrintWriter(bw);
+
+            pw.println(s);
+
+            pw.flush();
+            fw.flush();
+            pw.close();
+            fw.close();
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * base64编码
+     * @param str 内容
+     * @param charset 编码方式
+     * @throws UnsupportedEncodingException
+     */
+    private static String base64(String str, String charset) throws UnsupportedEncodingException {
+        return Base64.encode(str.getBytes(charset));
+    }
+
+    @SuppressWarnings("unused")
+    private static String urlEncoder(String str, String charset) throws UnsupportedEncodingException {
+        return URLEncoder.encode(str, charset);
+    }
+    /**
+     * 电商Sign签名生成
+     * @param content 内容
+     * @param keyValue Appkey
+     * @param charset 编码方式
+     * @throws UnsupportedEncodingException ,Exception
+     * @return DataSign签名
+     */
+    @SuppressWarnings("unused")
+    private static String encrypt (String content, String keyValue, String charset) throws UnsupportedEncodingException, Exception {
+        if (keyValue != null)
+        {
+            return base64(MD5(content + keyValue, charset), charset);
+        }
+        return base64(MD5(content, charset), charset);
+    }
+
+    /**
+     * MD5加密
+     * @param str 内容
+     * @param charset 编码方式
+     * @throws Exception
+     */
+    @SuppressWarnings("unused")
+    private static String MD5(String str, String charset) throws Exception {
+        MessageDigest md = MessageDigest.getInstance("MD5");
+        md.update(str.getBytes(charset));
+        byte[] result = md.digest();
+        StringBuilder sb = new StringBuilder(32);
+        for (byte aResult : result) {
+            int val = aResult & 0xff;
+            if (val <= 0xf) {
+                sb.append("0");
+            }
+            sb.append(Integer.toHexString(val));
+        }
+        return sb.toString().toLowerCase();
+    }
+
+}

+ 29 - 0
watero-rst-web/src/main/java/com/iamberry/rst/controllers/approval/ApplyPickController.java

@@ -269,6 +269,35 @@ public class ApplyPickController {
             rj.setResultMsg("修改审批信息状态为发货失败!");
             return  rj;
         }
+
+        //查询生产审批项可提货数量,并修改可提货数量
+        ApprovalInfo appinfo = approvalOrderService.getApprovalInfoById(aap.getProductionApprovalId());
+        Integer canpickNumber = 0;//可提货数量
+        for(ApprovalProductionItem item : appinfo.getApprovalProduction().getListProductionItem()){
+            canpickNumber += item.getItemCanpickNumber();
+        }
+        ApprovalInfo info = new ApprovalInfo();
+        info.setApprovalId(aap.getProductionApprovalId());
+        if(canpickNumber > 0){
+            //修改关联生产审批信息状态为已完成部分提货
+
+            info.setApprovalStatusDetails("已完成部分提货");
+            info.setApprovalStatus(11);
+            if(approvalOrderService.updateApprovalInfo(info) < 1){
+                rj = ResponseJson.getFAILURE();
+                rj.setResultMsg("修改关联审批信息状态为已完成部分提货失败!");
+                return  rj;
+            }
+        }else{
+            //修改关联生产审批信息状态为已完成提货
+            info.setApprovalStatusDetails("已完成提货");
+            info.setApprovalStatus(10);
+            if(approvalOrderService.updateApprovalInfo(info) < 1){
+                rj = ResponseJson.getFAILURE();
+                rj.setResultMsg("修改关联审批信息状态为已完成提货失败!");
+                return  rj;
+            }
+        }
         return rj;
     }
 }

+ 39 - 0
watero-rst-web/src/main/java/com/iamberry/rst/controllers/approval/ApprovalController.java

@@ -18,6 +18,10 @@ import com.iamberry.wechat.tools.ResponseJson;
 import com.iamberry.wechat.tools.ResultInfo;
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
+import org.activiti.bpmn.model.*;
+import org.activiti.bpmn.model.Process;
+import org.activiti.engine.RepositoryService;
+import org.activiti.engine.repository.Deployment;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -53,6 +57,8 @@ public class ApprovalController {
     private ApplyPickService applyPickService;
     @Autowired
     private ApprovalProductionService approvalProductionService;
+    @Autowired
+    private RepositoryService repositoryService;
     @SuppressWarnings("restriction")
     private BASE64Decoder decoder = new BASE64Decoder();
     /**
@@ -105,6 +111,7 @@ public class ApprovalController {
             approvalProductionItem.setItemShouldStorage(orderItem.getInt("itemProductNum"));
             approvalProductionItem.setItemActualStorage(0);
             approvalProductionItem.setItemLackNumber(orderItem.getInt("itemProductNum"));
+            approvalProductionItem.setItemCanpickNumber(0);
             if (orderItem.containsKey("itemExternalModel")) {
                 approvalProductionItem.setItemExternalModel(orderItem.getString("itemExternalModel"));
             }
@@ -652,4 +659,36 @@ public class ApprovalController {
         }
         return rj;
     }
+    /*@ResponseBody
+    @RequestMapping(value = "/deploymentPrecessDefinition")
+    public void deploymentPrecessDefinition(){
+        getBpmnModel();
+        repositoryService.deleteDeployment("310008",true);
+        repositoryService.deleteDeployment("427508",true);
+        repositoryService.deleteDeployment("427501",true);
+        repositoryService.deleteDeployment("422501",true);
+        *//*Deployment deployment = repositoryService.createDeployment()
+                .key("GenerationApproval")
+                .name("提交审批流程")
+                .addClasspathResource("RST.bpmn")
+                .deploy();
+        Deployment deployment = repositoryService.createDeployment()
+                .key("ApplicationForDelivery")
+                .name("提交提货订单审批流程")
+                .addClasspathResource("pickRst.bpmn")
+                .deploy();*//*
+        //获取审批任务id
+        Map<String, Object> taskinfo = approvalTaskService.salesmanSubmitApply(1);
+        String[] split = (String[])taskinfo.get("users");
+        for (String name : split){
+            System.out.println(name);
+        }
+        Map<String, Object> taskinfo2 = approvalTaskService.salesmanSubmitApply(2);
+        String[] split2 = (String[])taskinfo2.get("users");
+        for (String name : split2){
+            System.out.println(name);
+        }
+
+
+    }*/
 }

+ 1 - 1
watero-rst-web/src/main/java/com/iamberry/rst/controllers/approval/adminApprovalController.java

@@ -37,7 +37,7 @@ import java.util.*;
  */
 
 @Controller
-@RequestMapping("/approval")
+/*@RequestMapping("/approval")*/
 /*@RequestMapping("/wechat/approval")*/
 public class adminApprovalController {
     @Autowired

+ 82 - 2
watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AppComplaintQuestionInfoController.java

@@ -2,16 +2,21 @@ package com.iamberry.rst.controllers.cm;
 
 import com.iamberry.rst.core.cm.*;
 import com.iamberry.rst.core.order.ProductColor;
+import com.iamberry.rst.core.page.PagedResult;
 import com.iamberry.rst.faces.cm.ComplaintQuestionInfoService;
 import com.iamberry.rst.faces.cm.CustomerCommonService;
 import com.iamberry.rst.faces.cm.RelationOrderService;
 import com.iamberry.rst.faces.cm.SalesOrderService;
+import com.iamberry.rst.faces.kdn.KuaiDiNiaoService;
 import com.iamberry.rst.faces.order.EfastOrderService;
 import com.iamberry.rst.faces.product.ProductService;
 import com.iamberry.rst.service.cm.CustomerServiceImpl;
 import com.iamberry.rst.service.cm.mapper.FittingsInfoMapper;
+import com.iamberry.rst.utils.KuaiDi100;
+import com.iamberry.rst.utils.SeleOrdeCompUtil;
 import com.iamberry.wechat.tools.DateTimeUtil;
 import com.iamberry.wechat.tools.ResponseJson;
+import com.sun.tools.corba.se.idl.StringGen;
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
 import org.slf4j.Logger;
@@ -55,8 +60,9 @@ public class AppComplaintQuestionInfoController {
     @Autowired
     private ProductService productService;
     @Autowired
-    private FittingsInfoMapper fittingsInfoMapper;
-
+    private SeleOrdeCompUtil seleOrdeCompUtil;
+    @Autowired
+    private KuaiDi100 kuaiDi100;
 
     /**
      * 进入客诉问题描述
@@ -337,5 +343,79 @@ public class AppComplaintQuestionInfoController {
 //    }
 
 
+    /**
+     * 订单关联表,新增客诉id
+     * @param request
+     * @return
+     */
+  /*  @ResponseBody
+    @RequestMapping(value = "/synOrderCompany")
+    public ResponseJson synRelatedOrder(HttpServletRequest request){
+        ResponseJson msg = new ResponseJson();
+        SalesOrder salesOrder = new SalesOrder();
+//        PagedResult<SalesOrder> salesOrderPagedResult =  salesOrderService.listSalesOrderPage(1, 10, salesOrder, false);
+//        ArrayList<SalesOrder> salesOrderList = (ArrayList<SalesOrder>) salesOrderPagedResult.getDataList();
+//
+//        for (SalesOrder so:salesOrderList) {
+//            String  salesPostNum = so.getSalesPostNum();  //salesPostNum
+//            if(salesPostNum == null || "".equals(salesPostNum)){
+//                System.out.println("----------该订单无物流编号,订单编号:" + so.getSalesId()+"----------");
+//                continue;
+//            }
+//            String company = kuaiDiNiaoService.selectCourierCompany(salesPostNum);
+//            if(company != null && !"".equals(company)){
+//                so.setCompanyName(company);
+//                Integer flag = salesOrderService.distributionExpress(so);
+//                if(flag < 1){
+//                    System.out.println("*********修改订单物流方式出错,物流编号:"+ salesPostNum +";订单编号:" + so.getSalesId()+"***********");
+//                }
+//            }else{
+//                System.out.println("*********物流公司为空,物流编号:"+ salesPostNum +";订单编号:" + so.getSalesId()+"***********");
+//            }
+//        }
+        new Thread(new Producer(seleOrdeCompUtil)).start();
+        new Thread(new Consumer(seleOrdeCompUtil)).start();
+        return msg;
+    }
+*/
+  /*  public class Producer implements Runnable {
+        private SeleOrdeCompUtil seleOrdeCompUtil;
+        public Producer(SeleOrdeCompUtil seleOrdeCompUtil) {
+            this.seleOrdeCompUtil = seleOrdeCompUtil;
+        }
+        @Override
+        public void run() {
+            for(int i = 0;i<30700;i++){
+                this.seleOrdeCompUtil.produce("shenchan"+i);
+
+                try {
+                    Thread.sleep(500);//每隔10毫秒生产一个产品
+                } catch (InterruptedException e) {
+                    // TODO Auto-generated catch block
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+    public class Consumer implements Runnable {
+        private SeleOrdeCompUtil seleOrdeCompUtil;
+        public Consumer(SeleOrdeCompUtil seleOrdeCompUtil) {
+            this.seleOrdeCompUtil = seleOrdeCompUtil;
+        }
+        @Override
+        public void run() {
+            for(int i = 0;i<30700;i++){
+                this.seleOrdeCompUtil.consume("xiaofei"+i);
+                try {
+                    Thread.sleep(200);//每隔100毫秒消费一个
+                } catch (InterruptedException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }*/
+
+
+
 
 }

+ 107 - 2
watero-rst-web/src/main/java/com/iamberry/rst/utils/KuaiDi100.java

@@ -1,19 +1,31 @@
 package com.iamberry.rst.utils;
 
+import com.iamberry.wechat.tools.HttpClient431Util;
 import net.sf.json.JSONObject;
+import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
+import org.jsoup.nodes.Element;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
 
-import java.io.IOException;
-import java.io.InputStream;
+import java.io.*;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLConnection;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * Created by Administrator on 2017/8/15.
  */
 @Component
 public class KuaiDi100 {
+
+
+
+    private static Logger LOGGER = LoggerFactory.getLogger(KuaiDi100.class);
+
     private static String key = "29833628d495d7a5";//授权密匙key    百度的
   /*private static String key = "06d6c2ea1bdb4ee9";//授权密匙key  自己的*/
                     /*<option value="sto">申通快递</option>
@@ -303,4 +315,97 @@ public class KuaiDi100 {
         }
         return postFirm;
     }
+
+    /**
+     * 将快递100的物流公司编号转为rst的物流编号
+     * @return
+     */
+    private String kuaidiToRstCode(String company){
+        String postFirm = "";
+        switch (company){
+            case "shentong":postFirm="STO";break;
+            case "debangwuliu":postFirm="DBL";break;
+            case "youzhengguonei":postFirm="YZBK";break; //9719606885204 省外
+            case "ems":postFirm="EMS";break;    //1170100776910  省内
+            case "shunfeng":postFirm="SF";break;
+            case "jd":postFirm="jd";break;
+            case "youshuwuliu":postFirm="youshuwuliu";break;    //优速
+            case "zhongtong":postFirm="zto";break;    //优速
+            default:
+                postFirm = company;
+                LOGGER.error("未匹配到物流公司");
+                break;
+        }
+        return postFirm;
+    }
+
+
+    /**
+     * 快递一百
+     * 根据物流单号查询快递公司--仅能查询快递公司,不能查询快递流程
+     * @param code
+     * @return
+     */
+    public String selectCourierCompany(String code) {
+       String errorPath = "D:\\testJavaPath\\error.txt";
+       String successPath = "D:\\testJavaPath\\success.txt";
+
+        String courierCompang="";
+        Map<String,Object> requestMap = new HashMap();
+        requestMap.put("LogisticCode",code);
+        try {
+            Map<String, String> params = new HashMap<String, String>();
+            params.put("nu", "221435993148");
+            String url = "http://api.open.baidu.com/pae/common/api/Redirect";
+            // 发送请求
+            String html = HttpClient431Util.doGet(params, url);
+            Document doc = Jsoup.parse(html);
+            Element content = doc.getElementById("companyCode");
+            String value = content.val();
+            if(value == null || "".equals(value)){
+                LOGGER.info("=========快递单号:"+code+";查询不到快递公司");
+                String errorMsg = "快递单号:" + code+";查询不到快递公司+"+"\n";
+                writeTxt(errorPath,errorMsg);
+            }else{
+                value = kuaidiToRstCode(value); //转换物流方式
+                LOGGER.info("=========快递单号:"+code+";查询成功,快递公司:"+code+":"+value);
+                String errorMsg = "快递单号:" + code+"快递公司:"+code+":"+value +"\n";
+                writeTxt(successPath,errorMsg);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            LOGGER.info("=========快递单号:"+code+";处理报错");
+            String errorMsg = "快递单号:" + code+";处理报错+"+"\n";
+            writeTxt(errorPath,errorMsg);
+        }
+        return courierCompang;
+    }
+
+    /**
+     * 写入文件
+     * @param path
+     * @param s
+     */
+    public static void writeTxt(String path,String s){
+        File file = new File(path);
+        try{
+            FileWriter fw = new FileWriter(file, true);
+            if(!file.exists()){
+                file.createNewFile();
+            }
+            BufferedWriter bw = new BufferedWriter(fw);
+            PrintWriter pw = new PrintWriter(bw);
+
+            pw.println(s);
+
+            pw.flush();
+            fw.flush();
+            pw.close();
+            fw.close();
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
+
 }

+ 157 - 0
watero-rst-web/src/main/java/com/iamberry/rst/utils/SeleOrdeCompUtil.java

@@ -0,0 +1,157 @@
+package com.iamberry.rst.utils;
+
+import com.iamberry.rst.core.cm.SalesOrder;
+import com.iamberry.rst.core.page.PagedResult;
+import com.iamberry.rst.faces.cm.SalesOrderService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.LinkedList;
+
+/**
+ * 查询订单物流公司
+ */
+@Component
+public class SeleOrdeCompUtil {
+
+    @Autowired
+    private SalesOrderService salesOrderService;
+    @Autowired
+    private KuaiDi100 kuaiDi100;
+
+
+    // 仓库最大存储量
+    private final int MAX_SIZE = 20;
+
+    private static int NODE_NUM = 1710;
+
+    // 仓库存储的载体
+    private LinkedList<SalesOrder> list = new LinkedList<SalesOrder>();
+
+    // 生产产品
+    public void produce(String producer)
+    {
+        synchronized (list)
+        {
+            // 如果仓库已满
+            while (list.size() == MAX_SIZE)
+            {
+                try
+                {
+                    // 由于条件不满足,生产阻塞
+                    list.wait();
+                }
+                catch (InterruptedException e)
+                {
+                    e.printStackTrace();
+                }
+            }
+
+            // 生产产品
+            SalesOrder salesOrder = new SalesOrder();
+            PagedResult<SalesOrder> salesOrderPagedResult =  salesOrderService.listSalesOrderPage(NODE_NUM, 1, salesOrder, false);
+            ArrayList<SalesOrder> array = (ArrayList<SalesOrder>) salesOrderPagedResult.getDataList();
+            if(array==null || array.size() <1){
+                return;
+            }
+            System.out.println("======shengchan"+producer+";订单号"+array.get(0).getSalesId()+"交易号"+array.get(0).getSalesDealCode());
+
+            System.out.println("=====查询订单数/节点"+NODE_NUM);
+            NODE_NUM++;
+
+            list.add(array.get(0));
+            list.notifyAll();
+        }
+    }
+
+    // 消费产品
+    public void consume(String consumer)
+    {
+        synchronized (list)
+        {
+            //如果仓库存储量不足
+            while (list.size()==0)
+            {
+                try
+                {
+                    // 由于条件不满足,消费阻塞
+                    list.wait();
+                }
+                catch (InterruptedException e)
+                {
+                    e.printStackTrace();
+                }
+            }
+            SalesOrder so = list.get(0);
+            System.out.println("======xiaofei"+consumer+"当前执行到订单编号:"+so.getSalesId()+"交易号:"+so.getSalesDealCode());
+            String  salesPostNum = so.getSalesPostNum();  //salesPostNum
+
+            if(salesPostNum == null || "".equals(salesPostNum)){
+                System.out.println("----------该订单无物流编号,订单编号:" + so.getSalesId()+"----------");
+            }else{
+                String company = "";
+                if("00000000".equals(salesPostNum)){
+                    company = "02";
+                }else if("0".equals(salesPostNum)){
+                    company = "02";
+                }else if(salesPostNum.length() == 1){
+                    company = "02";
+                }else{
+                    String beginTwo = salesPostNum.substring(0,2);
+                    if("71".equals(beginTwo)){
+                        company = "yto";
+                    }else if("33".equals(beginTwo)){
+                        company = "STO";
+                    }else if("95".equals(beginTwo)){
+                        company = "STO";
+                    }else if("97".equals(beginTwo)){
+                        company = "YZBK";
+                    }else if("11".equals(beginTwo)){
+                        company = "EMS";
+                    }else if("22".equals(beginTwo)){
+                        company = "STO";
+                    }else if("21".equals(beginTwo)){
+                        company = "01";
+                    }else if("25".equals(beginTwo)){
+                        company = "SF";
+                    }else if("83".equals(beginTwo)){
+                        company = "DBL";
+                    }else if("26".equals(beginTwo)){
+                        company = "SF";
+                    }else{
+                        company = kuaiDi100.selectCourierCompany(salesPostNum);
+                    }
+                }
+                if(company != null && !"".equals(company)){
+                    so.setSalesPostFirm(company);
+                    Integer flag = salesOrderService.distributionExpress(so);
+                    if(flag < 1){
+                        System.out.println("*********修改订单物流方式出错,物流编号:"+ salesPostNum +";订单编号:" + so.getSalesId()+"***********");
+                    }
+                }else{
+                    System.out.println("*********物流公司为空,物流编号:"+ salesPostNum +";订单编号:" + so.getSalesId()+"***********");
+                }
+            }
+            list.remove(0);
+            list.notifyAll();
+        }
+    }
+
+
+    public LinkedList<SalesOrder> getList()
+    {
+        return list;
+    }
+
+    public void setList(LinkedList<SalesOrder> list)
+    {
+        this.list = list;
+    }
+
+    public int getMAX_SIZE()
+    {
+        return MAX_SIZE;
+    }
+
+}

File diff suppressed because it is too large
+ 76 - 0
watero-rst-web/src/main/resources/RST.bpmn


File diff suppressed because it is too large
+ 61 - 0
watero-rst-web/src/main/resources/pickRst.bpmn


+ 1 - 1
watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/list_wait_send_order.ftl

@@ -269,7 +269,7 @@
     /**
      * 跳转到下载页面
      */
-    function downloadOrderInfo(){
+    function downloadOrderPage(){
         layer_show("导出订单","${path}/admin/salesOrder/to_download_order_excel_by_store","600","250");
     }
 </script>

+ 37 - 0
watero-wechat-interface/src/main/java/com/iamberry/wechat/face/coupon/ExchangeItemService.java

@@ -0,0 +1,37 @@
+package com.iamberry.wechat.face.coupon;
+
+import com.iamberry.wechat.core.entity.coupon.ExchangeItem;
+
+import java.util.List;
+
+/**
+ *  兑换子表接口
+ * @author
+ * @Date 2018-12-11
+ */
+public interface ExchangeItemService {
+    /**
+     * 获取集合
+     * @param  exchangeItem
+     * @return List
+     */
+    List<ExchangeItem> getExchangeItemList(ExchangeItem  exchangeItem);
+    /**
+     * 查询单条数据
+     * @param  id
+     * @return  exchangeItem
+     */
+    ExchangeItem  getExchangeItemById(Integer  id);
+    /**
+     * 增加数据
+     * @param  exchangeItem
+     * @return Integer
+     */
+    Integer  save(ExchangeItem exchangeItem);
+    /**
+     * 修改数据
+     * @param  exchangeItem
+     * @return Integer
+     */
+    Integer  update(ExchangeItem  exchangeItem);
+}

+ 37 - 0
watero-wechat-interface/src/main/java/com/iamberry/wechat/face/coupon/ExchangeService.java

@@ -0,0 +1,37 @@
+package com.iamberry.wechat.face.coupon;
+
+import com.iamberry.wechat.core.entity.coupon.Exchange;
+
+import java.util.List;
+
+/**
+ *  兑换表接口
+ * @author
+ * @Date 2018-12-11
+ */
+public interface ExchangeService {
+    /**
+     * 获取集合
+     * @param  exchange
+     * @return List
+     */
+    List<Exchange> getExchangeList(Exchange  exchange);
+    /**
+     * 查询单条数据
+     * @param  id
+     * @return  exchange
+     */
+    Exchange getExchangeById(Integer  id);
+    /**
+     * 增加数据
+     * @param  exchange
+     * @return Integer
+     */
+    Integer  save(Exchange  exchange);
+    /**
+     * 修改数据
+     * @param  exchange
+     * @return Integer
+     */
+    Integer  update(Exchange  exchange);
+}

+ 43 - 0
watero-wechat-interface/src/main/java/com/iamberry/wechat/face/thanksgiving/ThanksGivingService.java

@@ -0,0 +1,43 @@
+package com.iamberry.wechat.face.thanksgiving;
+
+import com.iamberry.wechat.core.entity.thanksgiving.ThanksGiving;
+
+import java.util.List;
+
+/**
+ *  活动-领取优惠券接口
+ * @author
+ * @Date 2018-12-11
+ */
+public interface ThanksGivingService {
+    /**
+     * 获取集合
+     * @param  thanksGiving
+     * @return List
+     */
+    List<ThanksGiving> getThanksGivingList(ThanksGiving thanksGiving);
+    /**
+     * 查询单条数据
+     * @param  id
+     * @return  thanksGiving
+     */
+    ThanksGiving  getThanksGivingById(Integer  id);
+    /**
+     * 增加数据
+     * @param  thanksGiving
+     * @return Integer
+     */
+    Integer  save(ThanksGiving  thanksGiving);
+    /**
+     * 修改数据
+     * @param  thanksGiving
+     * @return Integer
+     */
+    Integer  update(ThanksGiving  thanksGiving);
+    /**
+     * 删除数据
+     * @param  id
+     * @return Integer
+     */
+    Integer  delete(Integer  id);
+}

+ 56 - 0
watero-wechat-service/src/main/java/com/iamberry/wechat/service/coupon/ExchangeItemServiceImpl.java

@@ -0,0 +1,56 @@
+package com.iamberry.wechat.service.coupon;
+
+import com.iamberry.wechat.core.entity.coupon.ExchangeItem;
+import com.iamberry.wechat.face.coupon.ExchangeItemService;
+import com.iamberry.wechat.service.mapper.ExchangeItemMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ *  兑换子表接口
+ * @author
+ * @Date 2018-12-11
+ */
+@Service
+public class ExchangeItemServiceImpl  implements ExchangeItemService {
+    @Autowired
+    private ExchangeItemMapper exchangeItemMapper;
+    /**
+     * 获取集合
+     * @param  exchangeItem
+     * @return List
+     */
+    @Override
+    public List<ExchangeItem> getExchangeItemList(ExchangeItem  exchangeItem){
+        return  exchangeItemMapper.getExchangeItemList(exchangeItem);
+    }
+    /**
+     * 查询单条数据
+     * @param  id
+     * @return  exchangeItem
+     */
+    @Override
+    public  ExchangeItem  getExchangeItemById(Integer  id){
+        return  exchangeItemMapper.getExchangeItemById(id);
+    }
+    /**
+     * 增加数据
+     * @param  exchangeItem
+     * @return Integer
+     */
+    @Override
+    public  Integer  save(ExchangeItem  exchangeItem){
+        return  exchangeItemMapper.save(exchangeItem);
+    }
+    /**
+     * 修改数据
+     * @param  exchangeItem
+     * @return Integer
+     */
+    @Override
+    public  Integer  update(ExchangeItem  exchangeItem){
+        return  exchangeItemMapper.update(exchangeItem);
+    }
+}

+ 56 - 0
watero-wechat-service/src/main/java/com/iamberry/wechat/service/coupon/ExchangeServiceImpl.java

@@ -0,0 +1,56 @@
+package com.iamberry.wechat.service.coupon;
+
+import com.iamberry.wechat.core.entity.coupon.Exchange;
+import com.iamberry.wechat.face.coupon.ExchangeService;
+import com.iamberry.wechat.service.mapper.ExchangeMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ *  兑换表接口
+ * @author
+ * @Date 2018-12-11
+ */
+@Service
+public class ExchangeServiceImpl  implements ExchangeService {
+    @Autowired
+    private ExchangeMapper exchangeMapper;
+    /**
+     * 获取集合
+     * @param  exchange
+     * @return List
+     */
+    @Override
+    public List<Exchange> getExchangeList(Exchange  exchange){
+        return  exchangeMapper.getExchangeList(exchange);
+    }
+    /**
+     * 查询单条数据
+     * @param  id
+     * @return  exchange
+     */
+    @Override
+    public  Exchange  getExchangeById(Integer  id){
+        return  exchangeMapper.getExchangeById(id);
+    }
+    /**
+     * 增加数据
+     * @param  exchange
+     * @return Integer
+     */
+    @Override
+    public  Integer  save(Exchange exchange){
+        return  exchangeMapper.save(exchange);
+    }
+    /**
+     * 修改数据
+     * @param  exchange
+     * @return Integer
+     */
+    @Override
+    public  Integer  update(Exchange  exchange){
+        return  exchangeMapper.update(exchange);
+    }
+}

+ 37 - 0
watero-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/ExchangeItemMapper.java

@@ -0,0 +1,37 @@
+package com.iamberry.wechat.service.mapper;
+
+import com.iamberry.wechat.core.entity.coupon.ExchangeItem;
+
+import java.util.List;
+
+/**
+ *  兑换子表接口
+ * @author
+ * @Date 2018-12-11
+ */
+public interface ExchangeItemMapper {
+    /**
+     * 获取集合
+     * @param  exchangeItem
+     * @return List
+     */
+    List<ExchangeItem> getExchangeItemList(ExchangeItem  exchangeItem);
+    /**
+     * 查询单条数据
+     * @param  id
+     * @return  exchangeItem
+     */
+    ExchangeItem getExchangeItemById(Integer  id);
+    /**
+     * 增加数据
+     * @param  exchangeItem
+     * @return Integer
+     */
+    Integer  save(ExchangeItem  exchangeItem);
+    /**
+     * 修改数据
+     * @param  exchangeItem
+     * @return Integer
+     */
+    Integer  update(ExchangeItem  exchangeItem);
+}

+ 37 - 0
watero-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/ExchangeMapper.java

@@ -0,0 +1,37 @@
+package com.iamberry.wechat.service.mapper;
+
+import com.iamberry.wechat.core.entity.coupon.Exchange;
+
+import java.util.List;
+
+/**
+ *  兑换表接口
+ * @author
+ * @Date 2018-12-11
+ */
+public interface ExchangeMapper {
+    /**
+     * 获取集合
+     * @param  exchange
+     * @return List
+     */
+    List<Exchange> getExchangeList(Exchange  exchange);
+    /**
+     * 查询单条数据
+     * @param  id
+     * @return  exchange
+     */
+    Exchange getExchangeById(Integer  id);
+    /**
+     * 增加数据
+     * @param  exchange
+     * @return Integer
+     */
+    Integer  save(Exchange  exchange);
+    /**
+     * 修改数据
+     * @param  exchange
+     * @return Integer
+     */
+    Integer  update(Exchange  exchange);
+}

+ 43 - 0
watero-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/ThanksGivingMapper.java

@@ -0,0 +1,43 @@
+package com.iamberry.wechat.service.mapper;
+
+import com.iamberry.wechat.core.entity.thanksgiving.ThanksGiving;
+
+import java.util.List;
+
+/**
+ *  活动-领取优惠券接口
+ * @author
+ * @Date 2018-12-11
+ */
+public interface ThanksGivingMapper {
+    /**
+     * 获取集合
+     * @param  thanksGiving
+     * @return List
+     */
+    List<ThanksGiving> getThanksGivingList(ThanksGiving  thanksGiving);
+    /**
+     * 查询单条数据
+     * @param  id
+     * @return  thanksGiving
+     */
+    ThanksGiving  getThanksGivingById(Integer  id);
+    /**
+     * 增加数据
+     * @param  thanksGiving
+     * @return Integer
+     */
+    Integer  save(ThanksGiving  thanksGiving);
+    /**
+     * 修改数据
+     * @param  thanksGiving
+     * @return Integer
+     */
+    Integer  update(ThanksGiving  thanksGiving);
+    /**
+     * 删除数据
+     * @param  id
+     * @return Integer
+     */
+    Integer  delete(Integer  id);
+}

+ 69 - 0
watero-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/exchangeItemMapper.xml

@@ -0,0 +1,69 @@
+<?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.iamberry.wechat.service.mapper.ExchangeItemMapper">
+    <resultMap  id="BaseResultMap" type="ExchangeItem" >
+        <result    column="exchange_item_id"    property="exchangeItemId" />
+        <result    column="exchange_id"    property="exchangeId" />
+        <result    column="color_id"    property="colorId" />
+        <result    column="exchange_item_num"    property="exchangeItemNum" />
+    </resultMap>
+    <sql    id="Base_List" >
+        t.exchange_item_id,
+        t.exchange_id,
+        t.color_id,
+        t.exchange_item_num
+    </sql>
+    <select id="getExchangeItemList" resultMap="BaseResultMap" parameterType="ExchangeItem" >
+        select
+        <include refid="Base_List" />
+        from tb_iamberry_coupon_exchange_item t
+        <where>
+            <if test="exchangeItemId != null ">
+                AND t.exchange_item_id = #{exchangeItemId}
+            </if >
+            <if test="exchangeId != null ">
+                AND t.exchange_id = #{exchangeId}
+            </if >
+            <if test="colorId != null ">
+                AND t.color_id = #{colorId}
+            </if >
+        </where>
+    </select>
+    <select id="getExchangeItemById" resultMap="BaseResultMap" parameterType="Integer" >
+        select
+        <include refid="Base_List" />
+        from tb_iamberry_coupon_exchange_item t
+        where t.exchange_item_id= #{exchangeItemId}
+    </select>
+    <insert id="save" parameterType="ExchangeItem" >
+        insert into
+        tb_iamberry_coupon_exchange_item
+        (
+        exchange_id,
+        color_id,
+        exchange_item_num
+        )
+        values
+        (
+        #{exchangeId},
+        #{colorId},
+        #{exchangeItemNum}
+        )
+    </insert>
+    <update id="update" parameterType="ExchangeItem" >
+        update
+        tb_iamberry_coupon_exchange_item
+        <set >
+            <if test="exchangeId != null ">
+                exchange_id = #{exchangeId},
+            </if >
+            <if test="colorId != null ">
+                color_id = #{colorId},
+            </if >
+            <if test="exchangeItemNum != null ">
+                exchange_item_num = #{exchangeItemNum}
+            </if >
+        </set >
+        where exchange_item_id= #{exchangeItemId}
+    </update>
+</mapper>

+ 56 - 0
watero-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/exchangeMapper.xml

@@ -0,0 +1,56 @@
+<?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.iamberry.wechat.service.mapper.ExchangeMapper">
+    <resultMap  id="BaseResultMap" type="Exchange" >
+        <result    column="exchange_id"    property="exchangeId" />
+        <result    column="coupon_id"    property="couponId" />
+        <result    column="exchange_create_time"    property="exchangeCreateTime" />
+        <result    column="exchange_update_time"    property="exchangeUpdateTime" />
+    </resultMap>
+    <sql    id="Base_List" >
+        t.exchange_id,
+        t.coupon_id,
+        t.exchange_create_time,
+        t.exchange_update_time
+    </sql>
+    <select id="getExchangeList" resultMap="BaseResultMap" parameterType="Exchange" >
+        select
+        <include refid="Base_List" />
+        from tb_iamberry_coupon_exchange t
+        <where>
+            <if test="exchangeId != null ">
+                AND t.exchange_id = #{exchangeId}
+            </if >
+            <if test="couponId != null ">
+                AND t.coupon_id = #{couponId}
+            </if >
+        </where>
+    </select>
+    <select id="getExchangeById" resultMap="BaseResultMap" parameterType="Integer" >
+        select
+        <include refid="Base_List" />
+        from tb_iamberry_coupon_exchange t
+        where t.exchange_id= #{exchangeId}
+    </select>
+    <insert id="save" parameterType="Exchange" >
+        insert into
+        tb_iamberry_coupon_exchange
+        (
+        coupon_id
+        )
+        values
+        (
+        #{couponId}
+        )
+    </insert>
+    <update id="update" parameterType="Exchange" >
+        update
+        tb_iamberry_coupon_exchange
+        <set >
+            <if test="couponId != null ">
+                coupon_id = #{couponId},
+            </if >
+        </set >
+        where exchange_id= #{exchangeId}
+    </update>
+</mapper>

+ 89 - 0
watero-wechat-service/src/main/java/com/iamberry/wechat/service/mapper/thanksGivingMapper.xml

@@ -0,0 +1,89 @@
+<?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.iamberry.wechat.service.mapper.ThanksGivingMapper">
+    <resultMap  id="BaseResultMap" type="ThanksGiving" >
+        <result    column="thanks_giving_id"    property="thanksGivingId" />
+        <result    column="thanks_giving_phone"    property="thanksGivingPhone" />
+        <result    column="thanks_giving_status"    property="thanksGivingStatus" />
+        <result    column="thanks_giving_time"    property="thanksGivingTime" />
+        <result    column="thanks_giving_open_id"    property="thanksGivingOpenId" />
+        <result    column="coupon_item_id"    property="couponItemId" />
+    </resultMap>
+    <sql    id="Base_List" >
+        t.thanks_giving_id,
+        t.thanks_giving_phone,
+        t.thanks_giving_status,
+        t.thanks_giving_time,
+        t.thanks_giving_open_id,
+        t.coupon_item_id
+    </sql>
+    <select id="getThanksGivingList" resultMap="BaseResultMap" parameterType="ThanksGiving" >
+        select
+        <include refid="Base_List" />
+        from tb_iamberry_thanks_giving t
+        <where>
+            <if test="thanksGivingId != null ">
+                AND t.thanks_giving_id = #{thanksGivingId}
+            </if >
+            <if test="thanksGivingPhone != null and thanksGivingPhone != ''">
+                AND t.thanks_giving_phone = #{thanksGivingPhone}
+            </if >
+            <if test="thanksGivingStatus != null ">
+                AND t.thanks_giving_status = #{thanksGivingStatus}
+            </if >
+            <if test="thanksGivingOpenId != null and thanksGivingOpenId != ''">
+                AND t.thanks_giving_open_id = #{thanksGivingOpenId}
+            </if >
+            <if test="couponItemId != null and couponItemId != ''">
+                AND t.coupon_item_id = #{couponItemId}
+            </if >
+        </where>
+    </select>
+    <select id="getThanksGivingById" resultMap="BaseResultMap" parameterType="Integer" >
+        select
+        <include refid="Base_List" />
+        from tb_iamberry_thanks_giving t
+        where t.thanks_giving_id= #{thanksGivingId}
+    </select>
+    <insert id="save" parameterType="ThanksGiving" >
+        insert into
+        tb_iamberry_thanks_giving
+        (
+        thanks_giving_phone,
+        thanks_giving_status,
+        thanks_giving_time,
+        thanks_giving_open_id,
+        coupon_item_id
+        )
+        values
+        (
+        #{thanksGivingPhone},
+        #{thanksGivingStatus},
+        #{thanksGivingTime},
+        #{thanksGivingOpenId},
+        #{couponItemId}
+        )
+    </insert>
+    <update id="update" parameterType="ThanksGiving" >
+        update
+        tb_iamberry_thanks_giving
+        <set >
+            <if test="thanksGivingPhone != null and thanksGivingPhone != ''">
+                thanks_giving_phone = #{thanksGivingPhone},
+            </if >
+            <if test="thanksGivingStatus != null ">
+                thanks_giving_status = #{thanksGivingStatus},
+            </if >
+            <if test="thanksGivingTime != null and thanksGivingTime != ''">
+                thanks_giving_time = #{thanksGivingTime},
+            </if >
+            <if test="thanksGivingOpenId != null and thanksGivingOpenId != ''">
+                thanks_giving_open_id = #{thanksGivingOpenId},
+            </if >
+            <if test="couponItemId != null and couponItemId != ''">
+                coupon_item_id = #{couponItemId}
+            </if >
+        </set >
+        where thanks_giving_id= #{thanksGivingId}
+    </update>
+</mapper>

+ 99 - 0
watero-wechat-service/src/main/java/com/iamberry/wechat/service/thanksgiving/ThanksGivingServiceImpl.java

@@ -0,0 +1,99 @@
+package com.iamberry.wechat.service.thanksgiving;
+
+import com.iamberry.wechat.core.entity.coupon.CouponItem;
+import com.iamberry.wechat.core.entity.coupon.CouponType;
+import com.iamberry.wechat.core.entity.thanksgiving.ThanksGiving;
+import com.iamberry.wechat.face.thanksgiving.ThanksGivingService;
+import com.iamberry.wechat.service.mapper.CouponItemMapper;
+import com.iamberry.wechat.service.mapper.CouponTypeMapper;
+import com.iamberry.wechat.service.mapper.ThanksGivingMapper;
+import com.iamberry.wechat.tools.StrUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+/**
+ *  活动-领取优惠券接口
+ * @author
+ * @Date 2018-12-11
+ */
+@Service
+public class ThanksGivingServiceImpl  implements ThanksGivingService {
+    @Autowired
+    private ThanksGivingMapper thanksGivingMapper;
+    @Autowired
+    private CouponItemMapper couponItemMapper;
+    @Autowired
+    private CouponTypeMapper couponTypeMapper;
+    /**
+     * 获取集合
+     * @param  thanksGiving
+     * @return List
+     */
+    @Override
+    public List<ThanksGiving> getThanksGivingList(ThanksGiving  thanksGiving){
+        return  thanksGivingMapper.getThanksGivingList(thanksGiving);
+    }
+    /**
+     * 查询单条数据
+     * @param  id
+     * @return  thanksGiving
+     */
+    @Override
+    public  ThanksGiving  getThanksGivingById(Integer  id){
+        return  thanksGivingMapper.getThanksGivingById(id);
+    }
+    /**
+     * 增加数据
+     * @param  thanksGiving
+     * @return Integer
+     */
+    @Override
+    public  Integer  save(ThanksGiving  thanksGiving){
+        return  thanksGivingMapper.save(thanksGiving);
+    }
+    /**
+     * 修改数据
+     * @param  thanksGiving
+     * @return Integer
+     */
+    @Override
+    public  Integer  update(ThanksGiving  thanksGiving){
+
+        CouponType couponType = couponTypeMapper.getCouponTypeById(1000);
+        Calendar calendar = Calendar.getInstance();
+        calendar.add(Calendar.DATE, 90);    //增加一天
+
+        //创建优惠券
+        CouponItem couponItem = new CouponItem();
+        String uuidStr = StrUtils.getUUID();
+        couponItem.setCouponItemId(uuidStr);
+        couponItem.setCouponId(couponType.getCouponId());
+        couponItem.setCouponReceiveDate(new Date());
+        couponItem.setCouponUseEndDate(calendar.getTime());
+        couponItem.setCouponUseStatus(1);
+        couponItem.setCouponItemRemark(couponType.getCouponRemark());
+        Integer flag = couponItemMapper.insertCouponItem(couponItem);
+
+
+        thanksGiving.setThanksGivingStatus(2);
+        thanksGiving.setThanksGivingTime(new Date());
+        flag = thanksGivingMapper.update(thanksGiving);
+
+        return  flag;
+    }
+
+    /**
+     * 删除数据
+     * @param  id
+     * @return Integer
+     */
+    @Override
+    public  Integer  delete(Integer  id){
+        return  thanksGivingMapper.delete(id);
+    }
+}

+ 148 - 0
watero-wechat-web/src/main/java/com/iamberry/wechat/handles/thanksgiving/ThanksGivingHandler.java

@@ -0,0 +1,148 @@
+package com.iamberry.wechat.handles.thanksgiving;
+
+import com.iamberry.wechat.core.entity.ResultMsg;
+import com.iamberry.wechat.core.entity.WechatUtils;
+import com.iamberry.wechat.core.entity.member.Member;
+import com.iamberry.wechat.core.entity.thanksgiving.ThanksGiving;
+import com.iamberry.wechat.face.member.MemberService;
+import com.iamberry.wechat.face.order.CodeService;
+import com.iamberry.wechat.face.thanksgiving.ThanksGivingService;
+import com.iamberry.wechat.service.ImberryConfig;
+import com.iamberry.wechat.tools.NameUtils;
+import com.iamberry.wechat.tools.payUtil.RandomUtil;
+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.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+import java.text.MessageFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 感恩活动
+ */
+@Controller
+@RequestMapping("/wechat/tanksgiv")
+public class ThanksGivingHandler {
+
+    @Autowired
+    private CodeService codeService;
+    @Autowired
+    private ThanksGivingService thanksGivingService;
+    @Autowired
+    private MemberService memberService;
+
+
+    private final static String SEND_VERIFICATION_PHONE ="";
+
+    /**
+     * 发送验证码
+     * 2016年4月21日
+     * @author 穆再兴
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping("/send_veri")
+    public ResultMsg sendPhone(HttpServletRequest request,String phone){
+        ResultMsg rm = new ResultMsg();
+        Member member =  WechatUtils.getUserBySession(request);
+
+        if(phone.length() != 11){
+            rm.setMessage(ResultMsg.ERROR);
+            rm.setMessage("电话号码错误!");
+            return rm;
+        }
+//
+        member = memberService.getMemberByUserOpenId(member.getUserOpenid());
+//        if(member.get){
+//
+//        }
+
+        ThanksGiving thanksGiving = new ThanksGiving();
+        thanksGiving.setThanksGivingPhone(phone);
+        List<ThanksGiving> thanksGivingList = thanksGivingService.getThanksGivingList(thanksGiving);
+        if(thanksGivingList == null || thanksGivingList.size() < 1){
+            return new ResultMsg(false, ResultMsg.ERROR, "改电话号码不能领取!",null);
+        }
+
+        //获取验证码
+        String num = RandomUtil.getRandom();
+        //使用request对象的getSession()获取session,如果session不存在则创建一个
+        HttpSession session = request.getSession();
+        String text = MessageFormat.format(SEND_VERIFICATION_PHONE, num);
+        String result = codeService.sendOtherCMS(phone, text);
+
+        //将数据存储到session中
+        session.setAttribute("verification_code",num );
+        session.setAttribute("verification_tel",phone );
+        session.setAttribute("verification_date",new Date());
+
+        rm.setMessage(ResultMsg.SUCCESS);
+        rm.setStatus(true);
+        return rm;
+    }
+
+    /**
+     * 领取优惠券
+     * 2016年4月21日
+     * @author 穆再兴
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping("/receive_coupon")
+    public ResultMsg receiveCoupon(HttpServletRequest request,String phone,String code){
+        ResultMsg rm = new ResultMsg();
+        Member member =  WechatUtils.getUserBySession(request);
+
+        if(phone.length() != 11){
+            rm.setMessage(ResultMsg.ERROR);
+            rm.setMessage("电话号码错误!");
+            return rm;
+        }
+
+        //判断验证码
+        //使用request对象的getSession()获取session,如果session不存在则创建一个
+        HttpSession session = request.getSession();
+        String verificationTel = (String) session.getAttribute("verification_tel");
+        String verificationCode = (String) session.getAttribute("verification_code");
+        Date verificationDate = (Date) session.getAttribute("verification_date");
+        if(code == null || "".equals(code)){
+            return new ResultMsg(false, ResultMsg.ERROR, "验证码为空!",null);
+        }
+        Calendar nowTime = Calendar.getInstance();
+        nowTime.setTime(verificationDate);
+        nowTime.add(Calendar.MINUTE, 5);
+        Date verData = nowTime.getTime();
+        if(!verificationCode.equals(code)){
+            return new ResultMsg(false,  ResultMsg.ERROR, "验证码不正确,请重新输入!",null);
+        }
+        if((verData.getTime() < System.currentTimeMillis())){
+            return new ResultMsg(false,  ResultMsg.ERROR, "验证码已失效,请重新获取!",null);
+        }
+
+        ThanksGiving thanksGiving = new ThanksGiving();
+        thanksGiving.setThanksGivingPhone(phone);
+        List<ThanksGiving> thanksGivingList = thanksGivingService.getThanksGivingList(thanksGiving);
+        if(thanksGivingList == null || thanksGivingList.size() < 1){
+            return new ResultMsg(false, ResultMsg.ERROR, "该电话号码不能领取!",null);
+        }
+
+        ThanksGiving tg = new ThanksGiving();
+        tg.setThanksGivingPhone(phone);
+        tg.setThanksGivingId(thanksGivingList.get(0).getThanksGivingId());
+        tg.setThanksGivingOpenId(member.getUserOpenid());
+
+        Integer flag = thanksGivingService.update(tg);
+        if(flag < 1){
+            return new ResultMsg(false, ResultMsg.ERROR, "领取失败,请重新领取!",null);
+        }
+        rm.setMessage(ResultMsg.SUCCESS);
+        rm.setStatus(true);
+        return rm;
+    }
+
+}

+ 12 - 0
watero-wechat-web/src/main/resources/iamberry-wechat-service-mybatis.xml

@@ -45,6 +45,8 @@
 		<typeAlias type="com.iamberry.wechat.core.entity.coupon.CouponItemDto" alias="CouponItemDto"/>
 		<typeAlias type="com.iamberry.wechat.core.entity.coupon.AdminCouponItemDto" alias="AdminCouponItemDto"/>
 		<typeAlias type="com.iamberry.wechat.core.entity.coupon.CouponType" alias="CouponType"/>
+		<typeAlias type="com.iamberry.wechat.core.entity.coupon.Exchange" alias="Exchange"/>
+		<typeAlias type="com.iamberry.wechat.core.entity.coupon.ExchangeItem" alias="ExchangeItem"/>
 		<typeAlias type="com.iamberry.wechat.core.entity.drp.EarningLogs" alias="EarningLogs"/>
 		<typeAlias type="com.iamberry.wechat.core.entity.drp.EasyPage" alias="EasyPage"/>
 		<typeAlias type="com.iamberry.wechat.core.entity.drp.IncomeRecord" alias="IncomeRecord"/>
@@ -217,6 +219,10 @@
 		
 		<!-- 水机租赁 -->
 		<typeAlias type="com.iamberry.wechat.core.entity.rent.RentTypeInfo" alias="RentTypeInfo"/>
+
+		<!--感恩回馈-活动-->
+		<typeAlias type="com.iamberry.wechat.core.entity.thanksgiving.ThanksGiving" alias="ThanksGiving"/>
+
 		<package name="com.iamberry.wechat.core.entity.rent"/>
 	</typeAliases>
 	<mappers>
@@ -235,6 +241,8 @@
 		<mapper resource="com/iamberry/wechat/service/mapper/configMapper.xml"/>
 		<mapper resource="com/iamberry/wechat/service/mapper/couponItemMapper.xml"/>
 		<mapper resource="com/iamberry/wechat/service/mapper/couponTypeMapper.xml"/>
+		<mapper resource="com/iamberry/wechat/service/mapper/exchangeItemMapper.xml"/>
+		<mapper resource="com/iamberry/wechat/service/mapper/exchangeMapper.xml"/>
 		<mapper resource="com/iamberry/wechat/service/mapper/dealerRelationMapper.xml"/>
 		<mapper resource="com/iamberry/wechat/service/mapper/drpRoleInfoMapper.xml"/>
 		<mapper resource="com/iamberry/wechat/service/mapper/firstAccessMapper.xml"/>
@@ -298,5 +306,9 @@
 		<mapper resource="com/iamberry/rent/service/rebate/mapper/orderRebateMapper.xml"/>	
 		<mapper resource="com/iamberry/rent/service/order/mapper/rentExchangeMapper.xml"/>
 		<mapper resource="com/iamberry/wechat/service/mapper/reserveMapper.xml"/>
+
+		<!--感恩回馈-活动-->
+		<mapper resource="com/iamberry/wechat/service/mapper/thanksGivingMapper.xml"/>
+
 	</mappers>
 </configuration>

+ 4 - 4
watero-wechat-web/src/main/resources/jdbc.properties

@@ -1,9 +1,9 @@
 jdbc.driver=com.mysql.jdbc.Driver
-jdbc.url=jdbc:mysql://192.168.1.254/watero?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&autoReconnect=true&failOverReadOnly=false&zeroDateTimeBehavior=convertToNull
-jdbc.username=root
-jdbc.password=root
+jdbc.url=jdbc:mysql://watero2db.mysql.rds.aliyuncs.com/test_watero?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&autoReconnect=true&failOverReadOnly=false&zeroDateTimeBehavior=convertToNull
+jdbc.username=watero
+jdbc.password=wateroTech123
 #pool settings
 jdbc.pool.init=1
 jdbc.pool.minIdle=3
 jdbc.pool.maxActive=20
-jdbc.testSql=SELECT 1
+jdbc.testSql=SELECT * from tb_wx_config