Преглед на файлове

Merge remote-tracking branch 'origin/master'

xian преди 6 години
родител
ревизия
b65cb0dbf0
променени са 43 файла, в които са добавени 1625 реда и са изтрити 511 реда
  1. 182 0
      watero-common-core/src/main/java/com/iamberry/wechat/tools/SendMessageUtil.java
  2. 44 2
      watero-common-tool/src/main/java/com/iamberry/wechat/tools/ResultInfo.java
  3. 41 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/approval/ApprovalApplyPick.java
  4. 11 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/approval/ApprovalApplyPickItem.java
  5. 9 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/approval/ApprovalInfo.java
  6. 9 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/cm/SalesOrder.java
  7. 11 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/approval/ApprovalOrderService.java
  8. 55 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/approval/ApprovalProductionContractService.java
  9. 29 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/approval/ApprovalProductionService.java
  10. 8 1
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/sys/SysService.java
  11. 46 14
      watero-rst-service/src/main/java/com/iamberry/rst/service/approval/ApplyPickServiceImpl.java
  12. 26 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/approval/ApprovalOrderServiceImpl.java
  13. 83 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/approval/ApprovalProductionContractServiceImpl.java
  14. 48 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/approval/ApprovalProductionServiceImpl.java
  15. 10 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/approval/mapper/ApprovalOrderMapper.java
  16. 55 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/approval/mapper/ApprovalProductionContractMapper.java
  17. 34 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/approval/mapper/ApprovalProductionMapper.java
  18. 63 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/approval/mapper/applyPickMapper.xml
  19. 53 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/approval/mapper/approvalOrderMapper.xml
  20. 101 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/approval/mapper/approvalProductionContractMapper.xml
  21. 120 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/approval/mapper/approvalProductionMapper.xml
  22. 2 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java
  23. 3 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/salesOrderMapper.xml
  24. 5 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/sys/SysServiceImpl.java
  25. 7 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/sys/mapper/SysMapper.java
  26. 16 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/sys/mapper/sysMapper.xml
  27. 9 3
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/address/AddressController.java
  28. 82 18
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/approval/ApplyPickController.java
  29. 283 14
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/approval/ApprovalController.java
  30. 1 1
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/wechat/TestController.java
  31. 0 1
      watero-rst-web/src/main/java/com/iamberry/rst/filters/WechatFilter.java
  32. 0 215
      watero-rst-web/src/main/java/com/iamberry/rst/utils/SendMessageUtil.java
  33. 10 9
      watero-rst-web/src/main/resources/platform.properties
  34. 2 0
      watero-rst-web/src/main/resources/watero-rst-orm.xml
  35. 3 1
      watero-rst-web/src/main/webapp/WEB-INF/views/base/add_base.ftl
  36. 2 0
      watero-rst-web/src/main/webapp/WEB-INF/views/base/list_base.ftl
  37. 7 14
      watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/add_order.ftl
  38. 8 0
      watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/sales_order_detail.ftl
  39. 8 8
      watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/sales_order_list.ftl
  40. 11 8
      watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/update_order.ftl
  41. 1 0
      watero-rst-web/src/main/webapp/common/js/common/UnlimitedLevelContact.js
  42. 1 192
      watero-rst-web/src/main/webapp/common/js/common/address.js
  43. 126 5
      watero-wechat-service/src/main/java/com/iamberry/wechat/service/giftCard/GiftCardServiceImpl.java

+ 182 - 0
watero-common-core/src/main/java/com/iamberry/wechat/tools/SendMessageUtil.java

@@ -0,0 +1,182 @@
+package com.iamberry.wechat.tools;
+
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+
+@Component
+public class SendMessageUtil {
+		
+		//快递公司列表
+		public static HashMap<String, String> hashmap = new HashMap<String, String>();
+		//正式环境
+		{
+			hashmap.put("sto", "申通快递");
+			hashmap.put("yto", "圆通快递");
+			hashmap.put("sf", "顺丰快递");
+			hashmap.put("longbanwuliu", "龙邦快递");
+			hashmap.put("ems", "邮政EMS");
+			hashmap.put("zto", "中通快递");
+			hashmap.put("zjs", "宅急送");
+			hashmap.put("yunda", "韵达快递");
+			hashmap.put("cces", "cces快递");
+			hashmap.put("pick", "上门提货");
+			hashmap.put("htky", "汇通快递");
+			hashmap.put("ttkdex", "天天快递");
+			hashmap.put("stars", "邮政EMS");
+			hashmap.put("jd", "星晨急便");
+			hashmap.put("01", "其他");
+			hashmap.put("02", "上门送货");
+		}
+		
+		/**
+		 * 发送模板通知给用户
+		 * @param date data 日期
+		 * @param openId 接受的用户id
+		 * @param url  点击打开的url
+		 * @param type 发送类型 1,订单审核结果通知 2,审核结果通知 3、商品入库通知,4、提货申请通知 5、申请单出库通知
+		 * @return
+		 */
+		public boolean sendTemplateMessageToOpenid(String date,String openId, String url,Integer type) {
+			boolean result = false;
+			switch (type) {
+			case 1:  //1,订单审核结果通知
+				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId,ResultInfo.ORDER_REVIEW_RESULTS, date, url);
+				break;
+			case 2:  // 2,审核结果通知
+				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.REVIEW_RESULTS, date, url);
+				break;
+			case 3:  //3、商品入库通知
+				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.GOODS_WAREHOUSING_NOTICE, date, url);
+				break;
+			case 4:  //4、提货申请通知
+				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.APPLICATION_DELIVERY_NOTIFICATION, date, url);
+				break;
+			case 5:  //5、申请单出库通知 (通过/驳回)
+				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.DELIVERY_APPLICATION_FORM, date, url);
+				break;
+			default: 
+				break;
+			}
+			result = true;
+			return  result;
+		}
+		
+		public static void main(String[] args) {
+			String date = "{'first':{'color':'#173177', 'value':'尊敬的客户您好~您的订单已发货~'}, 'order_id':{'color':'#173177','value':'1009145345B11792L'}, 'package_id':{'color':'#173177','value':'yuantong:34234234'}, 'remark':{'color':'#173177', 'value':'点击进入商城查看-->>'}}";
+			String openId = "o-icas0dRzE7WYAEAmcX4BQCUyFo";
+			String appId = "wxd995fb95b97ece1b";// 应用ID
+			String appSecret = "34922854462fba23cf54ce859349fcf4";// 应用密钥
+			
+			WeixinUtil.sendTemplateMessage(appId, appSecret, openId, "744KA1PdB1I5PzRcjtxqbEz5t2bp8vdsi4I2ytW1rbE", date, "xx");
+			System.out.println("发送成功");
+		}
+		
+		/**
+		 * 订单审核结果推送
+		 * @param first  标题
+		 * @param keyword1	订单号
+		 * @param keyword2	申请人姓名
+		 * @param keyword3	申请时间
+		 * @param keyword4	详细资料
+		 * @param remark	全部内容
+		 * @param openId	用户openid
+		 * @param url	地址
+		 */
+		public void orderReviewResultsPush(String first,String keyword1,String keyword2,String keyword3,String keyword4,String remark,String openId,String url){
+			String temp = ResultInfo.ORDERREVIEWRESULTS;
+			temp = temp.replaceFirst("firstValueIamberry", first)
+					.replaceFirst("keyword1Value",keyword1)
+					.replaceFirst("keyword2Value",keyword2)
+					.replaceFirst("keyword3Value",keyword3)
+					.replaceFirst("keyword4Value",keyword4)
+					.replaceFirst("remarkValue",remark);
+				sendTemplateMessageToOpenid(temp, openId, url,1);
+		}
+
+
+	/**
+	 * 审核结果通知推送
+	 * @param first  标题
+	 * @param keyword1	姓名
+	 * @param keyword2	审核结果
+	 * @param keyword3	审核时间
+	 * @param remark	全部内容
+	 * @param openId	用户openid
+	 * @param url	地址
+	 */
+	public void reviewResultsPush(String first,String keyword1,String keyword2,String keyword3,String remark,String openId,String url){
+		String temp = ResultInfo.REVIEWRESULTS;
+		temp = temp.replaceFirst("firstValueIamberry", first)
+				.replaceFirst("keyword1Value",keyword1)
+				.replaceFirst("keyword2Value",keyword2)
+				.replaceFirst("keyword3Value",keyword3)
+				.replaceFirst("remarkValue",remark);
+		sendTemplateMessageToOpenid(temp, openId, url,2);
+	}
+
+	/**
+	 * 商品入库通知推送
+	 * @param first
+	 * @param keyword1	商品信息
+	 * @param keyword2	入库数量
+	 * @param keyword3	操作人员
+	 * @param keyword4	入库仓库
+	 * @param remark	全部内容
+	 * @param openId	用户openid
+	 * @param url	地址
+	 */
+	public void putStoragePush(String first,String keyword1,String keyword2,String keyword3,String keyword4,String remark,String openId,String url){
+		String temp = ResultInfo.GOODSWAREHOUSINGNOTICE;
+		temp = temp.replaceFirst("firstValueIamberry", first)
+				.replaceFirst("keyword1Value",keyword1)
+				.replaceFirst("keyword2Value",keyword2)
+				.replaceFirst("keyword3Value",keyword3)
+				.replaceFirst("keyword4Value",keyword4)
+				.replaceFirst("remarkValue",remark);
+		sendTemplateMessageToOpenid(temp, openId, url,3);
+	}
+
+	/**
+	 * 提货申请通知推送
+	 * @param first
+	 * @param keyword1	报检单号
+	 * @param keyword2	提货方
+	 * @param keyword3	提货仓库
+	 * @param keyword4	申请时间
+	 * @param remark	全部内容
+	 * @param openId	用户openid
+	 * @param url	地址
+	 */
+	public void applicationDeliveryPush(String first,String keyword1,String keyword2,String keyword3,String keyword4,String remark,String openId,String url){
+		String temp = ResultInfo.APPLICATIONDELIVERYNOTIFICATION;
+		temp = temp.replaceFirst("firstValueIamberry", first)
+				.replaceFirst("keyword1Value",keyword1)
+				.replaceFirst("keyword2Value",keyword2)
+				.replaceFirst("keyword3Value",keyword3)
+				.replaceFirst("keyword4Value",keyword4)
+				.replaceFirst("remarkValue",remark);
+		sendTemplateMessageToOpenid(temp, openId, url,4);
+	}
+
+
+	/**
+	 * 申请单出库通知推送
+	 * @param first  标题
+	 * @param keyword1	申请时间
+	 * @param keyword2	申请单号
+	 * @param keyword3	物料名称
+	 * @param remark	全部内容
+	 * @param openId	用户openid
+	 * @param url	地址
+	 */
+	public void applicationFormPush(String first,String keyword1,String keyword2,String keyword3,String remark,String openId,String url){
+		String temp = ResultInfo.DELIVERYAPPLICATIONFORM;
+		temp = temp.replaceFirst("firstValueIamberry", first)
+				.replaceFirst("keyword1Value",keyword1)
+				.replaceFirst("keyword2Value",keyword2)
+				.replaceFirst("keyword3Value",keyword3)
+				.replaceFirst("remarkValue",remark);
+		sendTemplateMessageToOpenid(temp, openId, url,5);
+	}
+}

+ 44 - 2
watero-common-tool/src/main/java/com/iamberry/wechat/tools/ResultInfo.java

@@ -91,7 +91,7 @@ public class ResultInfo {
 	/**
 	 * 上传审批合同图片保存路径
 	 */
-	public static String CONTRACT_IMAGE = "/common/images/contractimages";
+	public static String CONTRACT_IMAGE = "/common/images/contractimages/";
 	/**
 	 * 上传EXCEl保存路径
 	 */
@@ -164,6 +164,9 @@ public class ResultInfo {
 	 * 	付费代理商支付后推送推荐人通知  	模版id	
 	 */
 	public static String prize_receive_push="";
+
+
+
 	/**
 	 * 返现到账通知消息模版
 	 */
@@ -195,7 +198,46 @@ public class ResultInfo {
 	
 	/** 	奖品领取通知 	*/
 	public static String PRIZERECEIVEPUSH = "{'first':{'color':'#173177','value':'firstValueIamberry'}, 'keyword1':{'color':'#173177','value':'keyword1Value'}, 'keyword2':{'color':'#173177', 'value':'keyword2Value'},'keyword3':{'color':'#173177','value':'keyword3Value'},'keyword4':{'color':'#173177','value':'keyword4Value'},'keyword5':{'color':'#173177','value':'keyword5Value'},'remark':{'color':'#FF0000','value':'remarkValue'}}";
-	
+
+
+
+
+
+	/** 	RST模板消息 statr 	*/
+	/**
+	 * 	订单审核结果通知  	模版id
+	 */
+	public static String ORDER_REVIEW_RESULTS="sXugZsD-FxwovAlpAMGCVrBT9-EK6drrp3KMhsj6FFQ";
+	/**
+	 * 	审核结果通知  	模版id
+	 */
+	public static String REVIEW_RESULTS="SNTCjd3pIZSZiR7PANfqqHq6-uZx4WsiM6y1jEs54l4";
+	/**
+	 * 	商品入库通知  	模版id
+	 */
+	public static String GOODS_WAREHOUSING_NOTICE="cR30pT2F2Zy6Z8xu7e8rPWixldDetLq26vJzhwKslNc";
+	/**
+	 * 	提货申请通知  	模版id
+	 */
+	public static String APPLICATION_DELIVERY_NOTIFICATION="t2oBudXx7wDm8r2h1N97Y6JNZCr1mkzs_EybGR6JXVQ";
+	/**
+	 * 	申请单出库通知  	模版id(驳回和通过都使用这个)
+	 */
+	public static String DELIVERY_APPLICATION_FORM="nxUfbukZ-h1kglyqpqo7CbSsA_DMeXSV9r-8d7jV4Mk";
+
+	/** 	订单审核结果通知 	*/
+	public static String ORDERREVIEWRESULTS = "{'first':{'color':'#173177','value':'firstValueIamberry'}, 'keyword1':{'color':'#173177','value':'keyword1Value'}, 'keyword2':{'color':'#173177', 'value':'keyword2Value'},'keyword3':{'color':'#173177','value':'keyword3Value'},'keyword4':{'color':'#173177','value':'keyword4Value'},'remark':{'color':'#FF0000','value':'remarkValue'}}";
+	/** 	审核结果通知 	*/
+	public static String REVIEWRESULTS = "{'first':{'color':'#173177','value':'firstValueIamberry'}, 'keyword1':{'color':'#173177','value':'keyword1Value'}, 'keyword2':{'color':'#173177', 'value':'keyword2Value'},'keyword3':{'color':'#173177','value':'keyword3Value'},'remark':{'color':'#FF0000','value':'remarkValue'}}";
+	/** 	商品入库通知 	*/
+	public static String GOODSWAREHOUSINGNOTICE = "{'first':{'color':'#173177','value':'firstValueIamberry'}, 'keyword1':{'color':'#173177','value':'keyword1Value'}, 'keyword2':{'color':'#173177', 'value':'keyword2Value'},'keyword3':{'color':'#173177','value':'keyword3Value'},'keyword4':{'color':'#173177','value':'keyword4Value'},'remark':{'color':'#FF0000','value':'remarkValue'}}";
+	/** 	提货申请通知	*/
+	public static String APPLICATIONDELIVERYNOTIFICATION = "{'first':{'color':'#173177','value':'firstValueIamberry'}, 'keyword1':{'color':'#173177','value':'keyword1Value'}, 'keyword2':{'color':'#173177', 'value':'keyword2Value'},'keyword3':{'color':'#173177','value':'keyword3Value'},'keyword4':{'color':'#173177','value':'keyword4Value'},'remark':{'color':'#FF0000','value':'remarkValue'}}";
+	/** 	申请单出库通知 	*/
+	public static String DELIVERYAPPLICATIONFORM = "{'first':{'color':'#173177','value':'firstValueIamberry'}, 'keyword1':{'color':'#173177','value':'keyword1Value'}, 'keyword2':{'color':'#173177', 'value':'keyword2Value'},'keyword3':{'color':'#173177','value':'keyword3Value'},'remark':{'color':'#FF0000','value':'remarkValue'}}";
+
+	/** 	RST模板消息 end 	*/
+
 	/**
 	 * 微信模板消息提示语
 	 */

+ 41 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/approval/ApprovalApplyPick.java

@@ -17,6 +17,8 @@ public class ApprovalApplyPick implements Serializable {
     private Integer applyPickId;
     //审批订单信息id
     private Integer approvalId;
+    //绑定生产审批id
+    private Integer productionApprovalId;
     //申请人id
     private Integer adminId;
     //姓名
@@ -27,6 +29,10 @@ public class ApprovalApplyPick implements Serializable {
     private String applyPickReason;
     //提货状态1:未发货 2:已发货
     private Integer applyPickStruts;
+    //提货方式
+    private String applyPickShipWay;
+    //提货凭证
+    private String applyPickShipCertificate;
     //备注信息
     private String applyPickRemk;
     //创建时间
@@ -40,6 +46,9 @@ public class ApprovalApplyPick implements Serializable {
 
     private List<ApprovalApplyPickItem> listApplyPickItem = new ArrayList<>();
 
+    /*审批详情*/
+    private ApprovalInfo approvalInfo = new ApprovalInfo();
+
     public Integer getApplyPickId() {
         return applyPickId;
     }
@@ -127,4 +136,36 @@ public class ApprovalApplyPick implements Serializable {
     public void setListApplyPickItem(List<ApprovalApplyPickItem> listApplyPickItem) {
         this.listApplyPickItem = listApplyPickItem;
     }
+
+    public Integer getProductionApprovalId() {
+        return productionApprovalId;
+    }
+
+    public void setProductionApprovalId(Integer productionApprovalId) {
+        this.productionApprovalId = productionApprovalId;
+    }
+
+    public String getApplyPickShipWay() {
+        return applyPickShipWay;
+    }
+
+    public void setApplyPickShipWay(String applyPickShipWay) {
+        this.applyPickShipWay = applyPickShipWay;
+    }
+
+    public String getApplyPickShipCertificate() {
+        return applyPickShipCertificate;
+    }
+
+    public void setApplyPickShipCertificate(String applyPickShipCertificate) {
+        this.applyPickShipCertificate = applyPickShipCertificate;
+    }
+
+    public ApprovalInfo getApprovalInfo() {
+        return approvalInfo;
+    }
+
+    public void setApprovalInfo(ApprovalInfo approvalInfo) {
+        this.approvalInfo = approvalInfo;
+    }
 }

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

@@ -40,6 +40,9 @@ public class ApprovalApplyPickItem implements Serializable{
     @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     private Date itemUpdateTime;
 
+    /* 生产项id */
+    private Integer itemId;
+
     public Integer getApplyItemId(){
         return applyItemId;
     }
@@ -135,4 +138,12 @@ public class ApprovalApplyPickItem implements Serializable{
     public void setItemUpdateTime(Date  itemUpdateTime){
         this.itemUpdateTime=itemUpdateTime;
     }
+
+    public Integer getItemId() {
+        return itemId;
+    }
+
+    public void setItemId(Integer itemId) {
+        this.itemId = itemId;
+    }
 }

+ 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 List<HistoricalRecord> listHistoricalRecord;//审批历史信息集合
     private Integer approvalAdminId;//审核人adminid
     private Integer selectType;//查询类型 1.我发起的 2.我审核的 3.仓库确认
 
@@ -154,4 +155,12 @@ public class ApprovalInfo implements Serializable{
     public void setSelectType(Integer selectType) {
         this.selectType = selectType;
     }
+
+    public List<HistoricalRecord> getListHistoricalRecord() {
+        return listHistoricalRecord;
+    }
+
+    public void setListHistoricalRecord(List<HistoricalRecord> listHistoricalRecord) {
+        this.listHistoricalRecord = listHistoricalRecord;
+    }
 }

+ 9 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/cm/SalesOrder.java

@@ -102,6 +102,7 @@ public class SalesOrder implements Serializable {
 
     private Integer salesAddType;           //增加订单方式 1:手动增加 2:Excel导入 3:客诉增加订单
     private Integer salesAdminId;           //录入人id
+    private String salesAdminName;           //录入人名称
 
     private Integer salesCustomerId;           //客诉id
     //  处理结果: 1:已解决  2:未解决 3:换新  4:维修 5:补发 6:退货 7:无理由退货
@@ -647,4 +648,12 @@ public class SalesOrder implements Serializable {
     public void setSalesDeliver(Integer salesDeliver) {
         this.salesDeliver = salesDeliver;
     }
+
+    public String getSalesAdminName() {
+        return salesAdminName;
+    }
+
+    public void setSalesAdminName(String salesAdminName) {
+        this.salesAdminName = salesAdminName;
+    }
 }

+ 11 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/approval/ApprovalOrderService.java

@@ -103,4 +103,15 @@ public interface ApprovalOrderService {
      * @return
      */
     ApprovalProductionItem getProductionItem(Integer itemId);
+
+    /**
+     * 根据审批id查询生产审批信息
+     * @return
+     */
+    ApprovalProduction getApprovalProductionById(Integer approvalId);
+    /**
+     * 查询审批信息产品总数
+     * @return
+     */
+    List<ApprovalProductionItem> getIteminfo(Integer approvalId);
 }

+ 55 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/approval/ApprovalProductionContractService.java

@@ -0,0 +1,55 @@
+package com.iamberry.rst.faces.approval;
+
+import com.iamberry.rst.core.approval.ApprovalProductionContract;
+
+import java.util.List;
+
+/**
+ *  接口
+ * @author
+ * @Date 2018-10-22
+ */
+public interface ApprovalProductionContractService {
+    /**
+     * 获取集合
+     * @param  approvalProductionContract
+     * @return List
+     */
+    List<ApprovalProductionContract> getApprovalProductionContractList(ApprovalProductionContract  approvalProductionContract);
+    /**
+     * 查询单条数据
+     * @param  id
+     * @return  approvalProductionContract
+     */
+    ApprovalProductionContract  getApprovalProductionContractById(Integer  id);
+    /**
+     * 增加数据
+     * @param  approvalProductionContract
+     * @return Integer
+     */
+    Integer  save(ApprovalProductionContract  approvalProductionContract);
+    /**
+     * 修改数据
+     * @param  approvalProductionContract
+     * @return Integer
+     */
+    Integer  update(ApprovalProductionContract  approvalProductionContract);
+    /**
+     * 删除数据
+     * @param  id
+     * @return Integer
+     */
+    Integer  delete(Integer  id);
+    /**
+     * 增加数据 <集合>
+     * @param  approvalProductionContractList
+     * @return Integer
+     */
+    Integer  saveList(List<ApprovalProductionContract>  approvalProductionContractList);
+    /**
+     * 删除数据 <集合>
+     * @param  ids
+     * @return Integer
+     */
+    Integer  deleteList(Integer[]  ids);
+}

+ 29 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/approval/ApprovalProductionService.java

@@ -0,0 +1,29 @@
+package com.iamberry.rst.faces.approval;
+
+import com.iamberry.rst.core.approval.ApprovalProduction;
+import com.iamberry.rst.core.approval.ApprovalProductionItem;
+
+import java.util.List;
+
+public interface ApprovalProductionService {
+    /**
+     * 获取集合
+     * @param  approvalProduction
+     * @return List
+     */
+    List<ApprovalProduction> getApprovalProductionList(ApprovalProduction  approvalProduction);
+
+    /**
+     * 查询单条数据
+     * @param  id
+     * @return  approvalProduction
+     */
+    ApprovalProduction  getApprovalProductionById(Integer  id);
+
+    /**
+     * 获取生产项集合
+     * @param  approvalProductionItem
+     * @return List
+     */
+    List<ApprovalProductionItem>  getApprovalProductionItemList(ApprovalProductionItem  approvalProductionItem);
+}

+ 8 - 1
watero-rst-interface/src/main/java/com/iamberry/rst/faces/sys/SysService.java

@@ -106,7 +106,7 @@ public interface SysService {
 
     /**
      * 根据用户openid获取登录信息
-     * @param admin
+     * @param openid
      * @return
      */
     Admin getByOpenid(String openid);
@@ -116,4 +116,11 @@ public interface SysService {
      * @return
      */
     Admin getByName(String adminName);
+
+    /**
+     * 获取管理员信息
+     * @param admin
+     * @return
+     */
+    Admin getAdminInfo(Admin admin);
 }

+ 46 - 14
watero-rst-service/src/main/java/com/iamberry/rst/service/approval/ApplyPickServiceImpl.java

@@ -8,12 +8,15 @@ import com.iamberry.rst.faces.approval.ApplyPickService;
 import com.iamberry.rst.service.approval.mapper.ApplyPickItemMapper;
 import com.iamberry.rst.service.approval.mapper.ApplyPickMapper;
 import com.iamberry.rst.service.approval.mapper.ApprovalOrderMapper;
+import com.iamberry.rst.service.approval.mapper.ApprovalProductionMapper;
 import com.iamberry.rst.service.sys.mapper.SysMapper;
 import com.iamberry.rst.util.PageUtil;
+import com.iamberry.wechat.tools.SendMessageUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -33,6 +36,8 @@ public class ApplyPickServiceImpl  implements ApplyPickService {
     private SysMapper sysMapper;
     @Autowired
     private ApprovalOrderMapper approvalOrderMapper;
+    @Autowired
+    private ApprovalProductionMapper approvalProductionMapper;
 
 
     /**
@@ -70,20 +75,6 @@ public class ApplyPickServiceImpl  implements ApplyPickService {
     @Transactional
     public  Integer  save(ApprovalApplyPick  approvalApplyPick, String openid, Map<String, Object> tasknfo,List<ApprovalProductionContract> approvalProductionContractList){
         Admin admin = sysMapper.getByOpenid(openid);
-        approvalApplyPick.setAdminId(admin.getAdminId());
-
-        Integer flag = applyPickMapper.save(approvalApplyPick);
-        if(flag < 1){
-            throw new RuntimeException("添加提货失败");
-        }
-        for (ApprovalApplyPickItem approvalApplyPickItem:approvalApplyPick.getListApplyPickItem()) {
-            approvalApplyPickItem.setApplyPickId(approvalApplyPick.getApplyPickId());
-        }
-        flag = applyPickItemMapper.saveList(approvalApplyPick.getListApplyPickItem());
-        if(flag < 1){
-            throw new RuntimeException("添加提货项失败");
-        }
-
         //添加审批信息
         ApprovalInfo approvalInfo = new ApprovalInfo();
         approvalInfo.setApprovalName(admin.getAdminName()+"的提货订单");
@@ -99,6 +90,36 @@ public class ApplyPickServiceImpl  implements ApplyPickService {
             throw new RuntimeException("添加审批信息失败");
         }
 
+        approvalApplyPick.setApprovalId(approvalInfo.getApprovalId());
+        approvalApplyPick.setAdminId(admin.getAdminId());
+        Integer flag = applyPickMapper.save(approvalApplyPick);
+        if(flag < 1){
+            throw new RuntimeException("添加提货失败");
+        }
+        for (ApprovalApplyPickItem approvalApplyPickItem:approvalApplyPick.getListApplyPickItem()) {
+            approvalApplyPickItem.setApplyPickId(approvalApplyPick.getApplyPickId());
+
+            ApprovalProductionItem  approvalProductionItem = new ApprovalProductionItem();
+            approvalProductionItem.setItemId(approvalApplyPickItem.getItemId());
+            List<ApprovalProductionItem> approvalProductionItemList = approvalProductionMapper.getApprovalProductionItemList(approvalProductionItem);
+            approvalProductionItem = approvalProductionItemList.get(0);
+
+            if(approvalApplyPickItem.getItemProductNum() > approvalProductionItem.getItemProductNum() ){
+                throw new RuntimeException(approvalProductionItem.getItemProductName()+"("+ approvalProductionItem.getItemColorName() +")"+"的提货数量不能大于"+approvalProductionItem.getItemProductNum());
+            }
+            approvalApplyPickItem.setProductId(approvalProductionItem.getProductId());
+            approvalApplyPickItem.setItemProductName(approvalProductionItem.getItemProductName());
+            approvalApplyPickItem.setItemColorName(approvalProductionItem.getItemColorName());
+            approvalApplyPickItem.setItemBrandName(approvalProductionItem.getItemBrandName());
+            approvalApplyPickItem.setItemProductModel(approvalProductionItem.getItemProductModel());
+            approvalApplyPickItem.setItemProductUnit(approvalProductionItem.getItemProductUnit());
+            approvalApplyPickItem.setItemProductBoxNumber(approvalProductionItem.getItemProductBoxNumber());
+        }
+        flag = applyPickItemMapper.saveList(approvalApplyPick.getListApplyPickItem());
+        if(flag < 1){
+            throw new RuntimeException("添加提货项失败");
+        }
+
         for (ApprovalProductionContract apc:approvalProductionContractList) {
             apc.setApprovalId(approvalInfo.getApprovalId());
             apc.setContractName(admin.getAdminName()+"的提货订单");
@@ -139,6 +160,17 @@ public class ApplyPickServiceImpl  implements ApplyPickService {
             if(approvalOrderMapper.updateApprovalInfo(info) < 1){
                 throw new RuntimeException("修改审批信息失败"+tasknfo);
             }
+            //推送微信模板消息通知
+            SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");
+            SendMessageUtil sendMessageUtil = new SendMessageUtil();
+            sendMessageUtil.orderReviewResultsPush("您好,当前有一单提货申请需要处理",
+                    "0000000"+approvalInfo.getApprovalId(),
+                    approvalApplyPick.getApplyPickName(),
+                    "优尼雅仓库",
+                    format.format(new Date()),
+                    "请尽快进行处理",
+                    approvalAdmin.getAdminOpenId(),
+                    "url");
         }
         return  flag;
     }

+ 26 - 1
watero-rst-service/src/main/java/com/iamberry/rst/service/approval/ApprovalOrderServiceImpl.java

@@ -12,12 +12,14 @@ 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 com.iamberry.wechat.tools.SendMessageUtil;
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.text.SimpleDateFormat;
 import java.util.*;
 
 /**
@@ -33,6 +35,7 @@ public class ApprovalOrderServiceImpl implements ApprovalOrderService {
     private SysMapper sysMapper;
 
 
+
     @Override
     public Integer insertApprovalInfo(ApprovalInfo approvalInfo) {
         return approvalOrderMapper.insertApprovalInfo(approvalInfo);
@@ -67,7 +70,7 @@ public class ApprovalOrderServiceImpl implements ApprovalOrderService {
         //添加生产审批信息
         approvalProduction.setApprovalId(approvalInfo.getApprovalId());
         approvalProduction.setApplicantId(admin.getAdminId());
-        approvalProduction.setApplicantOrderNo("订单编号");
+        approvalProduction.setApplicantOrderNo("123456789");//订单编号未定
         approvalProduction.setApplicantName(admin.getAdminName());
         //申请人ID
         approvalProduction.setApplicantId(1);
@@ -128,6 +131,18 @@ public class ApprovalOrderServiceImpl implements ApprovalOrderService {
             if(approvalOrderMapper.updateApprovalInfo(info) < 1){
                 throw new RuntimeException("修改审批信息失败"+tasknfo);
             }
+            //推送微信模板消息通知
+            SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");
+            SendMessageUtil sendMessageUtil = new SendMessageUtil();
+            sendMessageUtil.orderReviewResultsPush("你好,你有个订单需要你的审核",
+                    approvalProduction.getApplicantOrderNo(),
+                    approvalInfo.getApprovalApplicant(),
+                    format.format(new Date()),
+                    approvalInfo.getApprovalName(),
+                    "点击查看详细信息",
+                    approvalAdmin.getAdminOpenId(),
+                    "url");
+
         }
         return true;
     }
@@ -209,4 +224,14 @@ public class ApprovalOrderServiceImpl implements ApprovalOrderService {
     public ApprovalProductionItem getProductionItem(Integer itemId) {
         return approvalOrderMapper.getProductionItem(itemId);
     }
+
+    @Override
+    public ApprovalProduction getApprovalProductionById(Integer approvalId) {
+        return approvalOrderMapper.getApprovalProductionById(approvalId);
+    }
+
+    @Override
+    public List<ApprovalProductionItem> getIteminfo(Integer approvalId) {
+        return approvalOrderMapper.getIteminfo(approvalId);
+    }
 }

+ 83 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/approval/ApprovalProductionContractServiceImpl.java

@@ -0,0 +1,83 @@
+package com.iamberry.rst.service.approval;
+
+import com.iamberry.rst.core.approval.ApprovalProductionContract;
+import com.iamberry.rst.faces.approval.ApprovalProductionContractService;
+import com.iamberry.rst.service.approval.mapper.ApprovalProductionContractMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ *  接口
+ * @author
+ * @Date 2018-10-22
+ */
+@Service
+public class ApprovalProductionContractServiceImpl  implements ApprovalProductionContractService {
+    @Autowired
+    private ApprovalProductionContractMapper approvalProductionContractMapper;
+    /**
+     * 获取集合
+     * @param  approvalProductionContract
+     * @return List
+     */
+    @Override
+    public List<ApprovalProductionContract> getApprovalProductionContractList(ApprovalProductionContract  approvalProductionContract){
+        return  approvalProductionContractMapper.getApprovalProductionContractList(approvalProductionContract);
+    }
+    /**
+     * 查询单条数据
+     * @param  id
+     * @return  approvalProductionContract
+     */
+    @Override
+    public  ApprovalProductionContract  getApprovalProductionContractById(Integer  id){
+        return  approvalProductionContractMapper.getApprovalProductionContractById(id);
+    }
+    /**
+     * 增加数据
+     * @param  approvalProductionContract
+     * @return Integer
+     */
+    @Override
+    public  Integer  save(ApprovalProductionContract  approvalProductionContract){
+        return  approvalProductionContractMapper.save(approvalProductionContract);
+    }
+    /**
+     * 修改数据
+     * @param  approvalProductionContract
+     * @return Integer
+     */
+    @Override
+    public  Integer  update(ApprovalProductionContract  approvalProductionContract){
+        return  approvalProductionContractMapper.update(approvalProductionContract);
+    }
+    /**
+     * 删除数据
+     * @param  id
+     * @return Integer
+     */
+    @Override
+    public  Integer  delete(Integer  id){
+        return  approvalProductionContractMapper.delete(id);
+    }
+    /**
+     * 增加数据 <集合>
+     * @param  approvalProductionContractList
+     * @return Integer
+     */
+    @Override
+    public  Integer  saveList(List<ApprovalProductionContract>  approvalProductionContractList){
+        return  approvalProductionContractMapper.saveList(approvalProductionContractList);
+    }
+    /**
+     * 删除数据 <集合>
+     * @param  ids
+     * @return Integer
+     */
+    @Override
+    public  Integer  deleteList(Integer[]  ids){
+        return  approvalProductionContractMapper.deleteList(ids);
+    }
+}

+ 48 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/approval/ApprovalProductionServiceImpl.java

@@ -0,0 +1,48 @@
+package com.iamberry.rst.service.approval;
+import com.iamberry.rst.core.approval.ApprovalProduction;
+import com.iamberry.rst.core.approval.ApprovalProductionItem;
+import com.iamberry.rst.faces.approval.ApprovalProductionService;
+import com.iamberry.rst.service.approval.mapper.ApprovalProductionMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ *  接口
+ * @author
+ * @Date 2018-10-23
+ */
+@Service
+public class ApprovalProductionServiceImpl  implements ApprovalProductionService {
+    @Autowired
+    private ApprovalProductionMapper approvalProductionMapper;
+    /**
+     * 获取集合
+     * @param  approvalProduction
+     * @return List
+     */
+    @Override
+    public List<ApprovalProduction> getApprovalProductionList(ApprovalProduction  approvalProduction){
+        return  approvalProductionMapper.getApprovalProductionList(approvalProduction);
+    }
+    /**
+     * 查询单条数据
+     * @param  id
+     * @return  approvalProduction
+     */
+    @Override
+    public  ApprovalProduction  getApprovalProductionById(Integer  id){
+        return  approvalProductionMapper.getApprovalProductionById(id);
+    }
+
+    /**
+     * 获取集合
+     * @param  approvalProductionItem
+     * @return List
+     */
+    @Override
+    public  List<ApprovalProductionItem>  getApprovalProductionItemList(ApprovalProductionItem  approvalProductionItem){
+        return  approvalProductionMapper.getApprovalProductionItemList(approvalProductionItem);
+    }
+}

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

@@ -91,6 +91,16 @@ public interface ApprovalOrderMapper {
       * @return
       */
      ApprovalProductionItem getProductionItem(Integer itemId);
+     /**
+      * 根据审批id查询生产审批信息
+      * @return
+      */
+     ApprovalProduction getApprovalProductionById(Integer approvalId);
+     /**
+      * 查询审批信息产品总数
+      * @return
+      */
+     List<ApprovalProductionItem> getIteminfo(Integer approvalId);
 
 
 

+ 55 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/approval/mapper/ApprovalProductionContractMapper.java

@@ -0,0 +1,55 @@
+package com.iamberry.rst.service.approval.mapper;
+
+import com.iamberry.rst.core.approval.ApprovalProductionContract;
+
+import java.util.List;
+
+/**
+ *  接口
+ * @author
+ * @Date 2018-10-22
+ */
+public interface ApprovalProductionContractMapper {
+    /**
+     * 获取集合
+     * @param  approvalProductionContract
+     * @return List
+     */
+    List<ApprovalProductionContract> getApprovalProductionContractList(ApprovalProductionContract  approvalProductionContract);
+    /**
+     * 查询单条数据
+     * @param  id
+     * @return  approvalProductionContract
+     */
+    ApprovalProductionContract  getApprovalProductionContractById(Integer  id);
+    /**
+     * 增加数据
+     * @param  approvalProductionContract
+     * @return Integer
+     */
+    Integer  save(ApprovalProductionContract  approvalProductionContract);
+    /**
+     * 修改数据
+     * @param  approvalProductionContract
+     * @return Integer
+     */
+    Integer  update(ApprovalProductionContract  approvalProductionContract);
+    /**
+     * 删除数据
+     * @param  id
+     * @return Integer
+     */
+    Integer  delete(Integer  id);
+    /**
+     * 增加数据 <集合>
+     * @param  approvalProductionContractList
+     * @return Integer
+     */
+    Integer  saveList(List<ApprovalProductionContract>  approvalProductionContractList);
+    /**
+     * 删除数据 <集合>
+     * @param  ids
+     * @return Integer
+     */
+    Integer  deleteList(Integer[]  ids);
+}

+ 34 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/approval/mapper/ApprovalProductionMapper.java

@@ -0,0 +1,34 @@
+package com.iamberry.rst.service.approval.mapper;
+
+import com.iamberry.rst.core.approval.ApprovalProduction;
+import com.iamberry.rst.core.approval.ApprovalProductionItem;
+
+import java.util.List;
+
+/**
+ *  接口
+ * @author
+ * @Date 2018-10-23
+ */
+public interface ApprovalProductionMapper {
+    /**
+     * 获取集合
+     * @param  approvalProduction
+     * @return List
+     */
+    List<ApprovalProduction> getApprovalProductionList(ApprovalProduction  approvalProduction);
+    /**
+     * 查询单条数据
+     * @param  id
+     * @return  approvalProduction
+     */
+    ApprovalProduction  getApprovalProductionById(Integer  id);
+
+    /**
+     * 获取集合
+     * @param  approvalProductionItem
+     * @return List
+     */
+    List<ApprovalProductionItem>  getApprovalProductionItemList(ApprovalProductionItem  approvalProductionItem);
+
+}

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

@@ -5,11 +5,14 @@
     <sql    id="Base_List" >
         t.apply_pick_id,
         t.approval_id,
+        t.production_approval_id,
         t.admin_id,
         t.apply_pick_name,
         t.apply_pick_tel,
         t.apply_pick_reason,
         t.apply_pick_struts,
+        t.apply_pick_ship_way,
+        t.apply_pick_ship_certificate,
         t.apply_pick_remk,
         t.apply_pick_create_time,
         t.apply_pick_update_time
@@ -25,6 +28,9 @@
             <if test="approvalId != null ">
                 AND t.approval_id = #{approvalId}
             </if >
+            <if test="productionApprovalId != null ">
+                AND t.production_approval_id = #{productionApprovalId}
+            </if >
             <if test="adminId != null ">
                 AND t.admin_id = #{adminId}
             </if >
@@ -43,14 +49,20 @@
     <resultMap  id="BaseResultMap" type="ApprovalApplyPick" >
         <result    column="apply_pick_id"    property="applyPickId" />
         <result    column="approval_id"    property="approvalId" />
+        <result    column="production_approval_id"    property="productionApprovalId" />
         <result    column="admin_id"    property="adminId" />
         <result    column="apply_pick_name"    property="applyPickName" />
         <result    column="apply_pick_tel"    property="applyPickTel" />
         <result    column="apply_pick_reason"    property="applyPickReason" />
         <result    column="apply_pick_struts"    property="applyPickStruts" />
+        <result    column="apply_pick_ship_way"    property="applyPickShipWay" />
+        <result    column="apply_pick_ship_certificate"    property="applyPickShipCertificate" />
         <result    column="apply_pick_remk"    property="applyPickRemk" />
         <result    column="apply_pick_create_time"    property="applyPickCreateTime" />
         <result    column="apply_pick_update_time"    property="applyPickUpdateTime" />
+
+        <association  property="approvalInfo" column="approval_id" javaType="ApprovalInfo" select="getApprovalInfo"  />
+
         <collection property="listApplyPickItem" column="apply_pick_id" javaType="ArrayList"
                     ofType="ApprovalApplyPickItem" select="getApprovalApplyPickItemList"/>
     </resultMap>
@@ -68,9 +80,34 @@
         <result    column="item_create_time"    property="itemCreateTime" />
         <result    column="item_update_time"    property="itemUpdateTime" />
     </resultMap>
+    <resultMap  id="approvalInfoMap" type="ApprovalInfo" >
+        <result    column="approval_id"    property="approvalId" />
+        <result    column="approval_name"    property="approvalName" />
+        <result    column="approval_type"    property="approvalType" />
+        <result    column="approval_status"    property="approvalStatus" />
+        <result    column="approval_status_details"    property="approvalStatusDetails" />
+        <result    column="admin_id"    property="adminId" />
+        <result    column="approval_applicant"    property="approvalApplicant" />
+        <result    column="activiti_id"    property="activitiId" />
+        <result    column="approval_details"    property="approvalDetails" />
+        <result    column="approval_remark"    property="approvalRemark" />
+        <result    column="approval_create_time"    property="approvalCreateTime" />
+    </resultMap>
     <select id="listOrderBatchPage" resultMap="BaseResultMap" parameterType="ApprovalApplyPick" >
         select
-        <include refid="Base_List" />
+            t.apply_pick_id,
+            t.approval_id,
+            t.production_approval_id,
+            t.admin_id,
+            t.apply_pick_name,
+            t.apply_pick_tel,
+            t.apply_pick_reason,
+            t.apply_pick_struts,
+            t.apply_pick_ship_way,
+            t.apply_pick_ship_certificate,
+            t.apply_pick_remk,
+            t.apply_pick_create_time,
+            t.apply_pick_update_time
         from tb_rst_approval_apply_pick t
         <where>
             <if test="applyPickId != null ">
@@ -79,6 +116,9 @@
             <if test="approvalId != null ">
                 AND t.approval_id = #{approvalId}
             </if >
+            <if test="productionApprovalId != null ">
+                AND t.production_approval_id = #{productionApprovalId}
+            </if >
             <if test="adminId != null ">
                 AND t.admin_id = #{adminId}
             </if >
@@ -101,6 +141,13 @@
           t.apply_pick_id = #{applyPickId}
     </select>
 
+    <select id="getApprovalInfo" resultMap="approvalInfoMap" parameterType="Integer" >
+        select
+        *
+        from tb_rst_approval_info t
+        where t.approval_id= #{approvalId}
+    </select>
+
     <select id="getApprovalApplyPickById" resultType="ApprovalApplyPick" parameterType="Integer" >
         select
         <include refid="Base_List" />
@@ -113,22 +160,28 @@
         (
         apply_pick_id,
         approval_id,
+        production_approval_id,
         admin_id,
         apply_pick_name,
         apply_pick_tel,
         apply_pick_reason,
         apply_pick_struts,
+        apply_pick_ship_way,
+        apply_pick_ship_certificate,
         apply_pick_remk
         )
         values
         (
         #{applyPickId},
         #{approvalId},
+        #{productionApprovalId},
         #{adminId},
         #{applyPickName},
         #{applyPickTel},
         #{applyPickReason},
         #{applyPickStruts},
+        #{applyPickShipWay},
+        #{applyPickShipCertificate},
         #{applyPickRemk}
         )
     </insert>
@@ -139,6 +192,9 @@
             <if test="approvalId != null ">
                 approval_id = #{approvalId},
             </if >
+            <if test="productionApprovalId != null ">
+                production_approval_id = #{productionApprovalId}
+            </if >
             <if test="adminId != null ">
                 admin_id = #{adminId},
             </if >
@@ -154,6 +210,12 @@
             <if test="applyPickStruts != null ">
                 apply_pick_struts = #{applyPickStruts},
             </if >
+            <if test="applyPickShipWay != null ">
+                apply_pick_ship_way = #{applyPickShipWay},
+            </if >
+            <if test="applyPickShipCertificate != null ">
+                apply_pick_ship_certificate = #{applyPickShipCertificate},
+            </if >
             <if test="applyPickRemk != null and applyPickRemk != ''">
                 apply_pick_remk = #{applyPickRemk},
             </if >

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

@@ -17,6 +17,7 @@
     <collection property="approvalProduction" column="approval_id" ofType="ApprovalProduction" select="getApprovalProduction"/>
     <collection property="approvalApplyPick" column="approval_id" ofType="ApprovalApplyPick" select="getApplyPick"/>
     <collection property="listProductionContract" column="approval_id" ofType="ApprovalProductionContract" select="listProductionContract"/>
+    <collection property="listHistoricalRecord" column="approval_id" ofType="HistoricalRecord" select="listHistoricalRecord"/>
   </resultMap>
 
   <resultMap id="ApprovalProductionResultMap" type="ApprovalProduction" >
@@ -273,6 +274,18 @@
     WHERE ai.approval_id = #{approvalId}
   </select>
 
+  <!--查询审批信息产品总数-->
+  <select id="getIteminfo" parameterType="Integer" resultType="ApprovalProductionItem">
+    SELECT
+    api.item_product_name,
+    api.item_color_name,
+    api.item_product_num
+    from tb_rst_approval_info ai
+    LEFT JOIN tb_rst_approval_production ap on ai.approval_id = ap.approval_id
+		LEFT JOIN tb_rst_approval_production_item api on ap.production_id = api.production_id
+		where ai.approval_id = #{approvalId}
+  </select>
+
 <!--查询审批信息列表-->
   <select id="listApprovalInfo" parameterType="ApprovalInfo" resultMap="ApprovalInfoResultMap">
     SELECT
@@ -550,4 +563,44 @@
     where
     api.item_id = #{itemId}
   </select>
+
+  <!--根据审批id查询生产审批信息-->
+  <select id="getApprovalProductionById" parameterType="Integer" resultType="ApprovalProduction">
+    SELECT
+    ap.production_id,
+    ap.approval_id,
+    ap.applicant_order_no,
+    ap.applicant_name,
+    ap.applicant_id,
+    ap.order_name,
+    ap.company_name,
+    ap.contact_name,
+    ap.contact_tel,
+    ap.production_delivery_date,
+    ap.production_delivery_way,
+    ap.production_delivery_desc,
+    ap.production_state,
+    ap.production_packing_way,
+    ap.production_remark,
+    ap.production_create_time,
+    ap.production_update_time,
+    ap.contract_name
+    from tb_rst_approval_production ap
+    where
+    ap.approval_id = #{approvalId}
+  </select>
+
+  <select id="listHistoricalRecord" parameterType="Integer" resultType="HistoricalRecord">
+    SELECT
+    hr.record_id recordId,
+    hr.approval_id approvalId,
+    hr.admin_id adminId,
+    hr.record_state recordState,
+    hr.task_id taskId,
+    hr.approval_time approvalTime,
+    hr.record_create_time recordCreateTime
+    from tb_rst_historical_record hr
+    where
+       hr.approval_id = #{approvalId}
+  </select>
 </mapper>

+ 101 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/approval/mapper/approvalProductionContractMapper.xml

@@ -0,0 +1,101 @@
+<?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.rst.service.approval.mapper.ApprovalProductionContractMapper">
+    <resultMap  id="BaseResultMap" type="ApprovalProductionContract" >
+        <result    column="contract_id"    property="contractId" />
+        <result    column="approval_id"    property="approvalId" />
+        <result    column="contract_url"    property="contractUrl" />
+        <result    column="contract_create_time"    property="contractCreateTime" />
+        <result    column="contract_name"    property="contractName" />
+    </resultMap>
+    <sql    id="Base_List" >
+        t.contract_id,
+        t.approval_id,
+        t.contract_url,
+        t.contract_create_time,
+        t.contract_name
+    </sql>
+    <select id="getApprovalProductionContractList" resultMap="BaseResultMap" parameterType="ApprovalProductionContract" >
+        select
+        <include refid="Base_List" />
+        from tb_rst_approval_production_contract t
+        <where>
+            <if test="contractId != null ">
+                AND t.contract_id = #{contractId}
+            </if >
+            <if test="approvalId != null ">
+                AND t.approval_id = #{approvalId}
+            </if >
+            <if test="contractName != null and contractName != ''">
+                AND t.contract_name  like  CONCAT ('%',#{contractName},'%')
+            </if >
+        </where>
+    </select>
+    <select id="getApprovalProductionContractById" resultMap="BaseResultMap" parameterType="Integer" >
+        select
+        <include refid="Base_List" />
+        from tb_rst_approval_production_contract t
+        where t.contract_id= #{contractId}
+    </select>
+    <insert id="save" parameterType="ApprovalProductionContract" >
+        insert into
+        tb_rst_approval_production_contract
+        (
+        approval_id,
+        contract_url,
+        contract_name
+        )
+        values
+        (
+        #{approvalId},
+        #{contractUrl},
+        #{contractName}
+        )
+    </insert>
+    <update id="update" parameterType="ApprovalProductionContract" >
+        update
+        tb_rst_approval_production_contract
+        <set >
+            <if test="approvalId != null ">
+                approval_id = #{approvalId},
+            </if >
+            <if test="contractUrl != null and contractUrl != ''">
+                contract_url = #{contractUrl},
+            </if >
+            <if test="contractName != null and contractName != ''">
+                contract_name = #{contractName},
+            </if >
+        </set >
+        where contract_id= #{contractId}
+    </update>
+    <delete id="delete" parameterType="Integer" >
+        delete FROM
+        tb_rst_approval_production_contract
+        where contract_id=#{contractId}
+    </delete>
+    <insert id="saveList" parameterType="java.util.List" >
+        insert into
+        tb_rst_approval_production_contract
+        (
+        approval_id,
+        contract_url,
+        contract_name
+        )
+        values
+        <foreach collection="list" item="node" index="index" separator="," open="" close="">
+            (
+            #{node.approvalId},
+            #{node.contractUrl},
+            #{node.contractName}
+            )
+        </foreach >
+    </insert>
+    <delete id="deleteList" parameterType="String" >
+        delete FROM
+        tb_rst_approval_production_contract
+        where contract_id  in
+        <foreach collection="ids" item="item" index="index" separator="," open="(" close=")">
+            #{item}
+        </foreach >
+    </delete>
+</mapper>

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

@@ -0,0 +1,120 @@
+<?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.rst.service.approval.mapper.ApprovalProductionMapper">
+    <resultMap  id="BaseResultMap" type="ApprovalProduction" >
+        <result    column="production_id"    property="productionId" />
+        <result    column="approval_id"    property="approvalId" />
+        <result    column="applicant_order_no"    property="applicantOrderNo" />
+        <result    column="applicant_name"    property="applicantName" />
+        <result    column="applicant_id"    property="applicantId" />
+        <result    column="order_name"    property="orderName" />
+        <result    column="company_name"    property="companyName" />
+        <result    column="contact_name"    property="contactName" />
+        <result    column="contact_tel"    property="contactTel" />
+        <result    column="production_delivery_date"    property="productionDeliveryDate" />
+        <result    column="production_delivery_way"    property="productionDeliveryWay" />
+        <result    column="production_delivery_desc"    property="productionDeliveryDesc" />
+        <result    column="production_state"    property="productionState" />
+        <result    column="production_packing_way"    property="productionPackingWay" />
+        <result    column="production_remark"    property="productionRemark" />
+        <result    column="production_create_time"    property="productionCreateTime" />
+        <result    column="production_update_time"    property="productionUpdateTime" />
+        <result    column="contract_name"    property="contractName" />
+    </resultMap>
+    <sql    id="Base_List" >
+        t.production_id,
+        t.approval_id,
+        t.applicant_order_no,
+        t.applicant_name,
+        t.applicant_id,
+        t.order_name,
+        t.company_name,
+        t.contact_name,
+        t.contact_tel,
+        t.production_delivery_date,
+        t.production_delivery_way,
+        t.production_delivery_desc,
+        t.production_state,
+        t.production_packing_way,
+        t.production_remark,
+        t.production_create_time,
+        t.production_update_time,
+        t.contract_name
+    </sql>
+    <select id="getApprovalProductionList" resultMap="BaseResultMap" parameterType="ApprovalProduction" >
+        select
+        <include refid="Base_List" />
+        from tb_rst_approval_production t
+        <where>
+            <if test="productionId != null ">
+                AND t.production_id = #{productionId}
+            </if >
+            <if test="approvalId != null ">
+                AND t.approval_id = #{approvalId}
+            </if >
+            <if test="applicantOrderNo != null and applicantOrderNo != ''">
+                AND t.applicant_order_no = #{applicantOrderNo}
+            </if >
+            <if test="applicantName != null and applicantName != ''">
+                AND t.applicant_name  like  CONCAT ('%',#{applicantName},'%')
+            </if >
+            <if test="applicantId != null ">
+                AND t.applicant_id = #{applicantId}
+            </if >
+            <if test="orderName != null and orderName != ''">
+                AND t.order_name  like  CONCAT ('%',#{orderName},'%')
+            </if >
+            <if test="companyName != null and companyName != ''">
+                AND t.company_name  like  CONCAT ('%',#{companyName},'%')
+            </if >
+            <if test="contactName != null and contactName != ''">
+                AND t.contact_name  like  CONCAT ('%',#{contactName},'%')
+            </if >
+            <if test="contactTel != null and contactTel != ''">
+                AND t.contact_tel  like  CONCAT ('%',#{contactTel},'%')
+            </if >
+            <if test="productionDeliveryWay != null and productionDeliveryWay != ''">
+                AND t.production_delivery_way = #{productionDeliveryWay}
+            </if >
+            <if test="productionState != null and productionState != ''">
+                AND t.production_state = #{productionState}
+            </if >
+            <if test="contractName != null and contractName != ''">
+                AND t.contract_name  like  CONCAT ('%',#{contractName},'%')
+            </if >
+        </where>
+    </select>
+    <select id="getApprovalProductionById" resultMap="BaseResultMap" parameterType="Integer" >
+        select
+        <include refid="Base_List" />
+        from tb_rst_approval_production t
+        where t.production_id= #{productionId}
+    </select>
+
+
+    <select id="getApprovalProductionItemList" resultType="ApprovalProductionItem" parameterType="ApprovalProductionItem" >
+        select
+          *
+        from tb_rst_approval_production_item t
+        <where>
+            <if test="itemId != null ">
+                AND t.item_id = #{itemId}
+            </if >
+            <if test="productionId != null ">
+                AND t.production_id = #{productionId}
+            </if >
+            <if test="productId != null ">
+                AND t.product_id = #{productId}
+            </if >
+            <if test="itemProductName != null and itemProductName != ''">
+                AND t.item_product_name  like  CONCAT ('%',#{itemProductName},'%')
+            </if >
+            <if test="itemColorName != null and itemColorName != ''">
+                AND t.item_color_name  like  CONCAT ('%',#{itemColorName},'%')
+            </if >
+            <if test="itemProductNum != null ">
+                AND t.item_product_num = #{itemProductNum}
+            </if >
+        </where>
+    </select>
+</mapper>

+ 2 - 1
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java

@@ -121,7 +121,7 @@ public class SalesOrderServiceImpl implements SalesOrderService {
     @Override
     public PagedResult<SalesOrder> listSalesOrderPage(int pageNO, int pageSize, SalesOrder salesOrder, boolean isTotalNum) {
         salesOrder.setStartOrderNO((pageNO-1) * pageSize);
-        salesOrder.setEndOrderNO(pageNO * pageSize);
+        salesOrder.setEndOrderNO(pageSize);
         //查询订单列表信息
         List<SalesOrder> orderList = salesOrderMapper.listSalesOrderNew(salesOrder);
         for(SalesOrder so : orderList){
@@ -141,6 +141,7 @@ public class SalesOrderServiceImpl implements SalesOrderService {
         }
         result.setPages(count);
         result.setPageNo(pageNO);
+        result.setPageSize(pageSize);
         return result;
     }
 

+ 3 - 1
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/salesOrderMapper.xml

@@ -163,13 +163,15 @@
     trsc.company_name companyName,
     trsi.store_name  storeName,
     ci.customer_is_solve customerIsSolve,
-    od.batch_create_time  batchCreateTime
+    od.batch_create_time  batchCreateTime,
+    ao.admin_name AS salesAdminName
     from tb_rst_sales_order_info
     LEFT JOIN tb_rst_sales_company trsc ON tb_rst_sales_order_info.sales_company_id = trsc.company_id
     LEFT JOIN tb_rst_store_info trsi ON tb_rst_sales_order_info.sales_store_id = trsi.store_id
     LEFT JOIN tb_rst_order_batch od ON tb_rst_sales_order_info.sales_batch_id = od.batch_id
     LEFT JOIN tb_rst_customer_info ci ON tb_rst_sales_order_info.sales_customer_id = ci.customer_id
     LEFT JOIN tb_rst_sales_order_item oi ON tb_rst_sales_order_info.sales_id = oi.item_order_id
+    LEFT JOIN tb_rst_sys_admin ao ON tb_rst_sales_order_info.sales_admin_id = ao.admin_id
     <where>
       <if test="salesIsDownload !=null and salesIsDownload !=''">
         AND sales_is_download = #{salesIsDownload}

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

@@ -129,6 +129,11 @@ public class SysServiceImpl implements SysService {
     }
 
     @Override
+    public Admin getAdminInfo(Admin admin) {
+        return sysMapper.getAdminInfo(admin);
+    }
+
+    @Override
     public List<Admin> listGetAdmin(Admin admin) {
         return sysMapper.listAdmin(admin);
     }

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

@@ -106,4 +106,11 @@ public interface SysMapper {
      * @return
      */
     Admin getByName(String adminName);
+
+    /**
+     * 获取管理员信息
+     * @param admin
+     * @return
+     */
+    Admin getAdminInfo(Admin admin);
 }

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

@@ -221,6 +221,21 @@
 	<select id="getByName" parameterType="String" resultType="Admin">
 		SELECT * FROM tb_rst_sys_admin
 		WHERE
-			admin_name = #{adminName}
+			admin_account = #{admin_account}
+	</select>
+	<!-- 获取管理员信息 -->
+	<select id="getAdminInfo" parameterType="Admin" resultType="Admin">
+		SELECT * FROM tb_rst_sys_admin
+		<where>
+			<if test="adminOpenId != null">
+				admin_open_id = #{adminOpenId}
+			</if>
+			<if test="adminAccount != null">
+				and admin_account = #{adminAccount}
+			</if>
+			<if test="adminId != null">
+				and admin_id = #{adminId}
+			</if>
+		</where>
 	</select>
 </mapper>

+ 9 - 3
watero-rst-web/src/main/java/com/iamberry/rst/controllers/address/AddressController.java

@@ -33,7 +33,9 @@ public class AddressController {
         List<Province> provinceList = addressService.listProvince(province);
         rj.addResponseKeyValue("provinceList", provinceList);
         if (provinceList == null || provinceList.size() < 1) {
-            return new ResponseJson(500, "查询失败", 500);
+            rj.setResultCode(500);
+            rj.setReturnCode(500);
+            return rj;
         } else {
             return rj;
         }
@@ -51,7 +53,9 @@ public class AddressController {
         List<City> cityList = addressService.listCity(city);
         rj.addResponseKeyValue("cityList", cityList);
         if (cityList == null || cityList.size() < 1) {
-            return new ResponseJson(500, "查询失败", 500);
+            rj.setResultCode(500);
+            rj.setReturnCode(500);
+            return rj;
         } else {
             return rj;
         }
@@ -69,7 +73,9 @@ public class AddressController {
         List<District> districtList = addressService.listDistrict(district);
         rj.addResponseKeyValue("districtList", districtList);
         if (districtList == null || districtList.size() < 1) {
-            return new ResponseJson(500, "查询失败", 500);
+            rj.setResultCode(500);
+            rj.setReturnCode(500);
+            return rj;
         } else {
             return rj;
         }

+ 82 - 18
watero-rst-web/src/main/java/com/iamberry/rst/controllers/approval/ApplyPickController.java

@@ -1,19 +1,14 @@
 package com.iamberry.rst.controllers.approval;
 
-import com.iamberry.rst.core.approval.ApprovalApplyPick;
-import com.iamberry.rst.core.approval.ApprovalApplyPickItem;
-import com.iamberry.rst.core.approval.ApprovalInfo;
-import com.iamberry.rst.core.approval.ApprovalProductionContract;
+import com.iamberry.rst.core.approval.*;
 import com.iamberry.rst.core.cm.SendProdcue;
 import com.iamberry.rst.core.order.OrderBatch;
 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.ApplyPickItemService;
-import com.iamberry.rst.faces.approval.ApplyPickService;
-import com.iamberry.rst.faces.approval.ApprovalOrderService;
-import com.iamberry.rst.faces.approval.ApprovalTaskService;
+import com.iamberry.rst.faces.approval.*;
 import com.iamberry.rst.faces.sys.SysService;
+import com.iamberry.rst.service.approval.ApprovalProductionContractServiceImpl;
 import com.iamberry.rst.utils.StitchAttrUtil;
 import com.iamberry.wechat.core.entity.WechatUtils;
 import com.iamberry.wechat.tools.ResponseJson;
@@ -44,6 +39,10 @@ public class ApplyPickController {
     private SysService sysService;
     @Autowired
     private ApprovalOrderService approvalOrderService;
+    @Autowired
+    private ApprovalProductionContractServiceImpl approvalProductionContractService;
+    @Autowired
+    private ApprovalProductionService approvalProductionService;
 
     /**
      * 获取已审批通过的订单
@@ -91,6 +90,10 @@ public class ApplyPickController {
 
     /**
      * 添加提货
+     * @param request
+     * @param approvalApplyPick 提货信息
+     * @param listApplyPickItemJson 提货选定的生产产品信息
+     * @param imageJson 合同信息
      * @return
      */
     @ResponseBody
@@ -119,7 +122,7 @@ public class ApplyPickController {
           applyPickService.save(approvalApplyPick,openId,taskinfo,approvalProductionContractList);
         }catch (Exception e){
             e.printStackTrace();
-            rj.setResultMsg("添加提货失败,"+ e.getMessage());
+            rj.setResultMsg("提货失败,详情:"+ e.getMessage());
             return rj;
         }
         rj = ResponseJson.getSUCCESS();
@@ -131,24 +134,24 @@ public class ApplyPickController {
      * @param approvalApplyPick
      * @return
      */
-    public Map<String,Object> verification(ApprovalApplyPick approvalApplyPick){
+    private Map<String,Object> verification(ApprovalApplyPick approvalApplyPick){
         Map<String,Object> map = new HashMap<>();
         map.put("status",false);
         if(approvalApplyPick.getApplyPickName() == null || "".equals(approvalApplyPick.getApplyPickName())){
             map.put("msg","姓名为空");
             return map;
         }
-        if(approvalApplyPick.getApplyPickTel() == null || "".equals(approvalApplyPick.getApplyPickTel())){
-            map.put("msg","电话号码为空");
-            return map;
-        }
-        if(approvalApplyPick.getApprovalId() == null || "".equals(approvalApplyPick.getApprovalId())){
+//        if(approvalApplyPick.getApplyPickTel() == null || "".equals(approvalApplyPick.getApplyPickTel())){
+//            map.put("msg","电话号码为空");
+//            return map;
+//        }
+        if(approvalApplyPick.getProductionApprovalId() == null || "".equals(approvalApplyPick.getProductionApprovalId())){
             map.put("msg","未选择审批订单");
             return map;
         }else{
-            ApprovalInfo approvalInfo = approvalOrderService.getApprovalInfoById(approvalApplyPick.getApprovalId());
+            ApprovalInfo approvalInfo = approvalOrderService.getApprovalInfoById(approvalApplyPick.getProductionApprovalId());
             if(approvalInfo == null){
-                map.put("msg","审批订单信息id错误");
+                map.put("msg","选择生产审批订单id错误");
                 return map;
             }
         }
@@ -167,6 +170,7 @@ public class ApplyPickController {
         if(applyPickId == null){
            return new ResponseJson(500, "FAILURE", 500);
         }
+        ResponseJson rj = ResponseJson.getSUCCESS();
         ApprovalApplyPick approvalApplyPick = applyPickService.getApprovalApplyPickById(applyPickId);
 
         ApprovalApplyPickItem approvalApplyPickItem = new ApprovalApplyPickItem();
@@ -174,8 +178,68 @@ public class ApplyPickController {
         List<ApprovalApplyPickItem> approvalApplyPickItemList = applyPickItemService.getApprovalApplyPickItemList(approvalApplyPickItem);
         approvalApplyPick.setListApplyPickItem(approvalApplyPickItemList);
 
-        ResponseJson rj = ResponseJson.getSUCCESS();
+        ApprovalProductionContract approvalProductionContract = new ApprovalProductionContract();
+        approvalProductionContract.setApprovalId(approvalApplyPick.getApprovalId());
+        List<ApprovalProductionContract>  approvalProductionContractList = approvalProductionContractService.getApprovalProductionContractList(approvalProductionContract);
+
+        /*该提货所属的审批信息*/
+        ApprovalInfo approvalInfo = approvalOrderService.getApprovalInfoById(approvalApplyPick.getApprovalId());
+
+        /*绑定的生产审批信息*/
+        ApprovalInfo productionApprovalInfo = approvalOrderService.getApprovalInfoById(approvalApplyPick.getProductionApprovalId());
+
+        ApprovalProduction  ap = new ApprovalProduction();
+        ap.setApprovalId(productionApprovalInfo.getApprovalId());
+        List<ApprovalProduction> approvalProductionList = approvalProductionService.getApprovalProductionList(ap);
+        if(approvalProductionList != null && approvalProductionList.size() > 0 ){
+            ap = approvalProductionList.get(0);
+            ApprovalProductionItem approvalProductionItem = new ApprovalProductionItem();
+            approvalProductionItem.setProductionId(ap.getProductionId());
+            List<ApprovalProductionItem> approvalProductionItemList = approvalProductionService.getApprovalProductionItemList(approvalProductionItem);
+            ap.setListProductionItem(approvalProductionItemList);
+            rj.addResponseKeyValue("ApprovalProduction",ap);
+        }
         rj.addResponseKeyValue("approvalApplyPick",approvalApplyPick);
+        rj.addResponseKeyValue("productionContractList",approvalProductionContractList);
+        rj.addResponseKeyValue("approvalInfo",approvalInfo);
+        rj.addResponseKeyValue("productionApprovalInfo",productionApprovalInfo);
+        return rj;
+    }
+
+    /**
+     * 发货
+     * @param request
+     * @param applyPickId 提货id
+     * @param applyPickShipWay 发货方式
+     * @param applyPickShipCertificate 发货凭证
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping("/ship")
+    public ResponseJson ship(HttpServletRequest request,Integer applyPickId, String applyPickShipWay,String applyPickShipCertificate) {
+        if(applyPickShipWay == null || "".equals(applyPickShipWay)){
+            return new ResponseJson(500, "发货方式为空!", 500);
+        }
+        if(applyPickShipCertificate == null || "".equals(applyPickShipCertificate) ){
+            return new ResponseJson(500, "发货凭证为空!", 500);
+        }
+        ApprovalApplyPick aap =  applyPickService.getApprovalApplyPickById(applyPickId);
+        if(aap == null){
+            return new ResponseJson(500, "提货信息有误!", 500);
+        }
+        if(aap.getApplyPickStruts() != 1){
+            return new ResponseJson(500, "该提货信息操作已发货!", 500);
+        }
+        ResponseJson rj = ResponseJson.getSUCCESS();
+        ApprovalApplyPick approvalApplyPick = new ApprovalApplyPick();
+        approvalApplyPick.setApplyPickStruts(2);
+        approvalApplyPick.setApplyPickId(applyPickId);
+        approvalApplyPick.setApplyPickShipCertificate(applyPickShipCertificate);
+        approvalApplyPick.setApplyPickShipWay(applyPickShipWay);
+        Integer flag = applyPickService.update(approvalApplyPick);
+        if(flag < 1){
+            return new ResponseJson(500, "发货失败", 500);
+        }
         return rj;
     }
 

+ 283 - 14
watero-rst-web/src/main/java/com/iamberry/rst/controllers/approval/ApprovalController.java

@@ -1,17 +1,22 @@
 package com.iamberry.rst.controllers.approval;
 
+import com.auth0.jwt.internal.org.apache.commons.io.FileUtils;
 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.ApplyPickService;
 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.file.FileType;
 import com.iamberry.wechat.tools.ResponseJson;
 import com.iamberry.wechat.tools.ResultInfo;
+import com.iamberry.wechat.tools.SendMessageUtil;
+import com.iamberry.wechat.tools.StrUtils;
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -22,6 +27,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.context.ContextLoader;
 import org.springframework.web.context.WebApplicationContext;
 import org.springframework.web.multipart.commons.CommonsMultipartFile;
+import sun.misc.BASE64Decoder;
 
 import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
@@ -35,7 +41,7 @@ import java.util.*;
  */
 
 @Controller
-@RequestMapping("/approval")
+@RequestMapping("/wechat/approval")
 public class ApprovalController {
     @Autowired
     private ApprovalOrderService approvalOrderService;
@@ -43,6 +49,10 @@ public class ApprovalController {
     private ApprovalTaskService approvalTaskService;
     @Autowired
     private SysService sysService;
+    @Autowired
+    private ApplyPickService applyPickService;
+    @SuppressWarnings("restriction")
+    private BASE64Decoder decoder = new BASE64Decoder();
     /**
      * 新增审批信息
      * @param request
@@ -59,7 +69,7 @@ public class ApprovalController {
         }
         //获取openid,根据openid查询当前登录人信息
         String openId = WechatUtils.getUserBySession(request).getUserOpenid();
-        /*String openId = "oaH_GwObiozJFBypUg0wKJjQpBiU";*/
+        /*String openId = "oEy-_s5C7LwmLGTpEGfJoecfsYZc";*/
 
         //获取审批任务id
         Map<String, Object> taskinfo = approvalTaskService.salesmanSubmitApply(1);
@@ -97,7 +107,7 @@ public class ApprovalController {
             JSONObject contract = jsonproductionContracts.getJSONObject(i);
             ApprovalProductionContract contractInfo = new ApprovalProductionContract();
             contractInfo.setContractUrl(contract.getString("contractUrl"));
-            contractInfo.setContractName(contract.getString("contractName"));
+            contractInfo.setContractType(contract.getString("contractType"));
             listProductionContract.add(contractInfo);
         }
         boolean returnValue = approvalOrderService.insertApprovalProduction(approvalProduction,listApprovalProductionItem,listProductionContract,taskinfo,openId);
@@ -148,7 +158,162 @@ public class ApprovalController {
         return responseJson;
     }
 
-/**
+    /**
+     * base图片上传
+     * @throws IOException
+     */
+    @SuppressWarnings({ "deprecation", "restriction" })
+    @ResponseBody
+    @RequestMapping("/baseFileUpload")
+    public ResponseJson baseFileUpload(HttpServletRequest req) throws IOException{
+        ResponseJson responseJson = new ResponseJson();
+
+        //取到前台传过来的 base64图片 并创建要存放在项目中的路径
+        WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext();
+        ServletContext servletContext = webApplicationContext.getServletContext();
+        String imgFilePath = servletContext.getRealPath(ResultInfo.CONTRACT_IMAGE);
+        try {
+            isExitsPath(imgFilePath);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+        //创建分享对象 并存入数据库
+        //String postParams = StrUtils.getPostParamsStr(req);		//data:image/png;base64,iVBORw0
+        String postParams = req.getParameter("file");
+        String[] shareImgUrlArr = org.apache.commons.lang3.StringUtils.split(postParams, ",");
+        String imgUrl = "";
+        HashMap<String, String> map = new HashMap<String, String>();
+        if(shareImgUrlArr != null && shareImgUrlArr.length > 0){
+            // 防止内存溢出
+            String suffixName = new String (shareImgUrlArr[0].split(";")[0].split("/")[1]);
+            String shareImgUrl = new String (shareImgUrlArr[1]);
+
+            // 通过文件头判断后缀
+            byte [] b = new byte[28];
+            shareImgUrl.getBytes(0, 27, b, 0);
+            String temp = new String(b);
+            b = decoder.decodeBuffer(temp);
+
+            // 二进制转换文件头
+            String type = null;
+            String fileHead = byte2hex(b);
+            fileHead = fileHead.toUpperCase();
+
+            // 获取系统支持的文件类型,如果不支持,返回默认的图片
+            FileType[] fileTypes = FileType.values();
+            for (FileType fileType : fileTypes) {
+                if (fileHead.startsWith(fileType.getValue())) {
+                    type = fileType.getSuffix();
+                    break;
+                }
+            }
+            if (type == null) {
+                System.err.println("上传图片异常..." + fileHead);
+            } else {
+                String fileName = getFileName(suffixName, type);
+                boolean flag = generateImage(shareImgUrl, imgFilePath + "/" + fileName);
+                if(flag){
+                    responseJson.setReturnCode(200);
+                    responseJson.addResponseKeyValue("imgUrl",ResultInfo.CONTRACT_IMAGE+fileName);
+                }else{
+                    responseJson.setReturnCode(500);
+                }
+            }
+        }else{
+            responseJson.setReturnCode(500);
+        }
+
+        //返回值拼凑
+        /*String requurl = req.getContextPath();//获取web项目的路径*/
+
+        return responseJson;
+    }
+
+    /**
+     * 判断路径是否存在 不存在则创建
+     * create date 2016年6月1日
+     * @author 穆再兴
+     * @param path
+     * @return
+     * @throws InterruptedException
+     */
+    public boolean isExitsPath(String path)throws InterruptedException{
+        String [] paths=path.split("/");
+        StringBuilder fullPath=new StringBuilder();
+        for (int i = 0; i < paths.length; i++) {
+            fullPath.append(paths[i]).append("/");
+            File file=new File(fullPath.toString());
+            if(!file.exists()){
+                file.mkdir();
+            }
+        }
+        File file=new File(fullPath.toString());//目录全路径
+        if (!file.exists()) {
+            return true;
+        }else{
+            return false;
+        }
+    }
+    public static String byte2hex(byte[] b) { //一个字节的数,
+        // 转成16进制字符串
+        String hs = "";
+        String tmp = "";
+        for (int n = 0; n < b.length; n++) {
+            //整数转成十六进制表示
+            tmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
+            if (tmp.length() == 1) {
+                hs = hs + "0" + tmp;
+            } else {
+                hs = hs + tmp;
+            }
+        }
+        tmp = null;
+        return hs;
+    }
+
+    /**
+     * 获取 file 的文件名
+     * create date 2016年6月1日
+     * @author 穆再兴
+     * @param
+     * @param
+     * @return
+     */
+    private String getFileName(String suffixName, String type){
+        long time = new Date().getTime();
+        Long timeStr = new Long(time);
+        return  timeStr + "." + type;
+    }
+
+    /**
+     * 对字节数组字符串进行Base64解码生成图片 并存入对应的路径
+     * create date 2016年6月1日
+     * @author 穆再兴
+     * @param imgStr Base64字符串
+     * @param imgFilePath 存入的路径
+     * @return
+     */
+    private boolean generateImage(String imgStr, String imgFilePath) {
+        if (imgStr == null) {return false;}// 图像数据为空
+        try {
+            // Base64解码
+            @SuppressWarnings("restriction")
+            byte[] bytes = decoder.decodeBuffer(imgStr);
+            for (int i = 0; i < bytes.length; ++i) {
+                if (bytes[i] < 0) {// 调整异常数据
+                    bytes[i] += 256;
+                }
+            }
+            // 生成图片
+            File file = new File(imgFilePath);
+            FileUtils.writeByteArrayToFile(file, bytes);
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+    /**
  *  查询我发起的/我审核的列表
  * @param approvalInfo
  * @param pageSize
@@ -167,20 +332,20 @@ public class ApprovalController {
             @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();*/
-        String openId = "oaH_GwObiozJFBypUg0wKJjQpBiU";
+        String openId = WechatUtils.getUserBySession(request).getUserOpenid();
+        /*String openId = "oaH_GwObiozJFBypUg0wKJjQpBiU";*/
         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());
+        if(selectType != null){
+            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) {
@@ -249,6 +414,71 @@ public class ApprovalController {
                     if(approvalOrderService.updateApprovalInfo(info) < 1){
                         return  ResponseJson.getFAILURE();
                     }
+                    //判断是生产审批或提货审批
+                    if(info.getApprovalType() == 1){
+                        //推送微信模板消息通知
+                        SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");
+                        ApprovalProduction production = approvalOrderService.getApprovalProductionById(approvalInfo.getApprovalId());
+                        Admin admininfo = new Admin();
+                        admininfo.setAdminId(production.getApplicantId());
+                        admininfo = sysService.getAdminInfo(admininfo);
+                        if(admininfo.getAdminOpenId() == null ){
+                            return  ResponseJson.getFAILURE();
+                        }
+                        //通知申请人该审批已通过
+                        SendMessageUtil sendMessageUtil = new SendMessageUtil();
+                        sendMessageUtil.reviewResultsPush("亲,您提交的申请 "+admin.getAdminName()+" 已处理。",
+                                production.getApplicantName(),
+                                "通过",
+                                format.format(new Date()),
+                                "审核通过后可通过公众号进入系统",
+                                admininfo.getAdminOpenId(),
+                                "url");
+                        //通知仓库订单已确认
+                        //获取仓库人员openid
+                        Admin adminTwo = new Admin();
+                        adminTwo.setAdminId(68);//仓库管理员id
+                        adminTwo = sysService.get(adminTwo);
+                        List<ApprovalProductionItem> items = approvalOrderService.getIteminfo(approvalInfo.getApprovalId());
+                        String products = "";
+                        Integer num = 0;
+                        for(ApprovalProductionItem item : items){
+                            products = products + item.getItemProductName()+",";
+                            num = item.getItemProductNum()+num;
+                        }
+                        products = products.substring(0,products.length() - 1);
+                        sendMessageUtil.putStoragePush(admininfo.getAdminName()+"的生产订单已确认,请在生产入库后确认",
+                                products,
+                                ""+num,
+                                admin.getAdminName(),
+                                "优尼雅仓库",
+                                "如有疑问请联系上级领导人",
+                                adminTwo.getAdminOpenId(),
+                                "url");
+                    }else{
+                        //通知申请人该提货审批已通过
+                        SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");
+                        ApprovalApplyPick  approvalApplyPick = new ApprovalApplyPick();
+                        approvalApplyPick.setApprovalId(approvalInfo.getApprovalId());
+                        List<ApprovalApplyPick> pickList = applyPickService.getApprovalApplyPickList(approvalApplyPick);
+                        String products = "";
+                        for(ApprovalApplyPickItem PickItem : pickList.get(0).getListApplyPickItem()){
+                            products = products+PickItem.getItemProductName()+",";
+                        }
+                        products = products.substring(0,products.length()-1);
+                        Admin admininfo = new Admin();
+                        admininfo.setAdminId(pickList.get(0).getAdminId());
+                        admininfo = sysService.getAdminInfo(admininfo);
+                        SendMessageUtil sendMessageUtil = new SendMessageUtil();
+                        sendMessageUtil.applicationFormPush("您的申领单被 "+admin.getAdminName()+" 通过。",
+                                format.format(new Date()),
+                                "0000000"+approvalInfo.getApprovalId(),
+                                products,
+                                "点击查看详情",
+                                admininfo.getAdminOpenId(),
+                                "url");
+                    }
+
                 }else if((Integer) taskMap.get("status") == 0){//还有下一个审批人,需要增加审批历史任务
                     if(taskMap.get("users") == null){
                         return  ResponseJson.getFAILURE();
@@ -274,6 +504,19 @@ public class ApprovalController {
                         if(approvalOrderService.updateApprovalInfo(info) < 1){
                             return  ResponseJson.getFAILURE();
                         }
+                        //推送微信模板消息通知
+                          //查询审批订单信息
+                        ApprovalProduction production = approvalOrderService.getApprovalProductionById(approvalInfo.getApprovalId());
+                        SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");
+                        SendMessageUtil sendMessageUtil = new SendMessageUtil();
+                        sendMessageUtil.orderReviewResultsPush("你好,你有个订单需要你的审核",
+                                production.getApplicantOrderNo(),
+                                approvalInfo.getApprovalApplicant(),
+                                format.format(new Date()),
+                                approvalInfo.getApprovalName(),
+                                "点击查看详细信息",
+                                approvalAdmin.getAdminOpenId(),
+                                "url");
                     }
                 }
                 //添加流程信息记录
@@ -345,7 +588,10 @@ public class ApprovalController {
             return  ResponseJson.getFAILURE();
         }
         List<ApprovalInfo> info = approvalOrderService.getApprovalInfo(approvalInfo);
-        rj.addResponseKeyValue("approvalInfo",info);
+        if(info.size() < 1){
+            return  ResponseJson.getFAILURE();
+        }
+        rj.addResponseKeyValue("approvalInfo",info.get(0));
         return rj;
     }
 
@@ -368,6 +614,9 @@ public class ApprovalController {
         if(admin == null){
             return new ResponseJson(200, "未查询到登录人信息", 500);
         }
+        Integer appvalId = 0;
+        Integer productNum = 0;
+        String productName = "";
         JSONArray jsonRecordss = JSONArray.fromObject(inventoryRecordss);
         for (int i = 0; i < jsonRecordss.size(); i++) {
             JSONObject jsonRecords = jsonRecordss.getJSONObject(i);
@@ -403,7 +652,27 @@ public class ApprovalController {
             if(approvalOrderService.updateProductionItem(productionItem) < 1){
                 return new ResponseJson(200, "修改审批产品项失败", 500);
             }
+            appvalId = jsonRecords.getInt("approvalId");
+            productNum = productNum + jsonRecords.getInt("actualStorage");
+            productName = productName + jsonRecords.getInt("productName")+",";
+
         }
+        //推送入库微信模板消息通知
+        //查询审批订单信息
+        ApprovalInfo approvalInfo = approvalOrderService.getApprovalInfoById(appvalId);
+        SendMessageUtil sendMessageUtil = new SendMessageUtil();
+        productName = productName.substring(0,productName.length() - 1);
+        Admin adminTwo = new Admin();
+        adminTwo.setAdminId(68);//仓库管理员id
+        adminTwo = sysService.get(adminTwo);
+        sendMessageUtil.putStoragePush(approvalInfo.getApprovalName()+"已入库,本次入口总数量"+productNum+"台",
+                productName,
+                ""+productNum,
+                admin.getAdminName(),
+                "优尼雅仓库",
+                "如有疑问请联系上级领导人",
+                adminTwo.getAdminOpenId(),
+                "url");
         return rj;
     }
 }

+ 1 - 1
watero-rst-web/src/main/java/com/iamberry/rst/controllers/wechat/TestController.java

@@ -14,7 +14,7 @@ public class TestController {
 
     @ResponseBody
     @RequestMapping(value = "/test")
-    public ResponseJson updateApplyPick(HttpServletRequest request
+    public ResponseJson test(HttpServletRequest request
             ) throws Exception {
 
         String openId = WechatUtils.getUserBySession(request).getUserOpenid();

+ 0 - 1
watero-rst-web/src/main/java/com/iamberry/rst/filters/WechatFilter.java

@@ -30,7 +30,6 @@ public class WechatFilter implements Filter {
 	public void doFilter(ServletRequest request, ServletResponse response,
 						 FilterChain chain) throws IOException, ServletException {
 
-//		chain.doFilter(request, response);
 		// 权限拦截类
 		HttpServletRequest req = (HttpServletRequest) request;
 		HttpServletResponse resp = (HttpServletResponse) response;

+ 0 - 215
watero-rst-web/src/main/java/com/iamberry/rst/utils/SendMessageUtil.java

@@ -1,215 +0,0 @@
-package com.iamberry.rst.utils;
-
-import com.iamberry.wechat.tools.NameUtils;
-import com.iamberry.wechat.tools.ResultInfo;
-import com.iamberry.wechat.tools.WeixinUtil;
-import org.springframework.stereotype.Component;
-
-import java.util.HashMap;
-
-@Component
-public class SendMessageUtil {
-		
-		//快递公司列表
-		public static HashMap<String, String> hashmap = new HashMap<String, String>();
-		//正式环境
-		{
-			hashmap.put("sto", "申通快递");
-			hashmap.put("yto", "圆通快递");
-			hashmap.put("sf", "顺丰快递");
-			hashmap.put("longbanwuliu", "龙邦快递");
-			hashmap.put("ems", "邮政EMS");
-			hashmap.put("zto", "中通快递");
-			hashmap.put("zjs", "宅急送");
-			hashmap.put("yunda", "韵达快递");
-			hashmap.put("cces", "cces快递");
-			hashmap.put("pick", "上门提货");
-			hashmap.put("htky", "汇通快递");
-			hashmap.put("ttkdex", "天天快递");
-			hashmap.put("stars", "邮政EMS");
-			hashmap.put("jd", "星晨急便");
-			hashmap.put("01", "其他");
-			hashmap.put("02", "上门送货");
-		}
-		
-		/**
-		 * 发送模板通知给用户
-		 * @param date data 日期
-		 * @param openId 接受的用户id
-		 * @param url  点击打开的url
-		 * @param type 发送类型 1,收益成功通知 2,发货提醒通知 3、收入提醒通知,4、订单未支付通知 5、试用进度提醒
-		 * @return
-		 */
-		public boolean sendTemplateMessageToOpenid(String date,String openId, String url,Integer type) {
-			boolean result = false;
-			switch (type) {
-			case 1:  //1,收益成功通知
-				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId,ResultInfo.rewards_template_id, date, url);
-				break;
-			case 2:  // 2,发货提醒通知 
-				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.Shipment_template_id, date, url);
-				break;
-			case 3:  //3、收入提醒通知
-				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.Income_template_id, date, url);
-				break;
-			case 4:  //4、订单未支付通知
-				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.Order_template_id, date, url);
-				break;
-			case 5:  //5、试用进度提醒
-				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.trial_progress_remind, date, url);
-				break;
-			case 6:  //6、试用申请通知
-				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.probation_apply_notice, date, url);
-				break;
-			case 7:  //7、试用申请成功通知
-				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.probation_apply_success, date, url);
-				break;
-			case 8:  //8、订单支付成功
-				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.probation_pay_success, date, url);
-				break;
-			case 9:  //9、订单关闭成功
-				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.probation_shut_down, date, url);
-				break;
-			case 10:  //10、奖品领取通知 
-				WeixinUtil.sendTemplateMessage(NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"), openId, ResultInfo.prize_receive_push, date, url);
-				break;
-			default: 
-				break;
-			}
-			result = true;
-			return  result;
-		}
-		
-		public static void main(String[] args) {
-			String date = "{'first':{'color':'#173177', 'value':'尊敬的客户您好~您的订单已发货~'}, 'order_id':{'color':'#173177','value':'1009145345B11792L'}, 'package_id':{'color':'#173177','value':'yuantong:34234234'}, 'remark':{'color':'#173177', 'value':'点击进入商城查看-->>'}}";
-			String openId = "o-icas0dRzE7WYAEAmcX4BQCUyFo";
-			String appId = "wxd995fb95b97ece1b";// 应用ID
-			String appSecret = "34922854462fba23cf54ce859349fcf4";// 应用密钥
-			
-			WeixinUtil.sendTemplateMessage(appId, appSecret, openId, "744KA1PdB1I5PzRcjtxqbEz5t2bp8vdsi4I2ytW1rbE", date, "xx");
-			System.out.println("发送成功");
-		}
-		
-		/**
-		 * 试用进度提醒推送
-		 * @param first  标题
-		 * @param keyword1	商品名称
-		 * @param keyword2	订单编号
-		 * @param keyword3	申请时间
-		 * @param keyword4	截止时间
-		 * @param remark	全部内容
-		 * @param openId	用户openid
-		 * @param url	地址
-		 */
-		public void probationPush(String first,String keyword1,String keyword2,String keyword3,String keyword4,String remark,String openId,String url){
-			String temp = ResultInfo.PROBATIONPUSH;
-			temp = temp.replaceFirst("firstValueIamberry", first)
-					.replaceFirst("keyword1Value",keyword1)
-					.replaceFirst("keyword2Value",keyword2)
-					.replaceFirst("keyword3Value",keyword3)
-					.replaceFirst("keyword4Value",keyword4)
-					.replaceFirst("remarkValue",remark);
-				sendTemplateMessageToOpenid(temp, openId, url,5);
-				temp = ResultInfo.PROBATIONPUSH;
-		}
-		
-		/**
-		 * 试用开始通知
-		 * @param first 标题
-		 * @param keyword1	商品信息
-		 * @param keyword2	申请时间
-		 * @param remark	全部内容
-		 * @param openId	用户openid
-		 * @param url	地址
-		 */
-		public void probationApplyNotice(String first,String keyword1,String keyword2,String remark,String openId,String url){
-			String temp = ResultInfo.PROBATIONAPPLYNOTICE;
-			temp = temp.replaceFirst("firstValueIamberry", first)
-					.replaceFirst("keyword1Value",keyword1)
-					.replaceFirst("keyword2Value",keyword2)
-					.replaceFirst("remarkValue",remark);
-				sendTemplateMessageToOpenid(temp, openId, url,6);
-		}
-		/**
-		 * 派送成功通知
-		 * @param first  标题
-		 * @param keyword1	申请单号
-		 * @param keyword2	申请时间
-		 * @param keyword3	应付金额
-		 * @param keyword4	应付积分
-		 * @param keyword5	支付方式
-		 * @param remark	全部内容
-		 * @param openId	用户openid
-		 * @param url	地址
-		 */
-		public void probationApplySuccess(String first,String keyword1,String keyword2,String keyword3,String keyword4,String keyword5,String remark,String openId,String url){
-			String temp = ResultInfo.PROBATIONAPPLYSUCCESS;
-			temp = temp.replaceFirst("firstValueIamberry", first)
-					.replaceFirst("keyword1Value",keyword1)
-					.replaceFirst("keyword2Value",keyword2)
-					.replaceFirst("keyword3Value",keyword3)
-					.replaceFirst("keyword4Value",keyword4)
-					.replaceFirst("keyword5Value",keyword5)
-					.replaceFirst("remarkValue",remark);
-				sendTemplateMessageToOpenid(temp, openId, url,7);
-		}
-		/**
-		 * 试用订单支付成功
-		 * @param first  标题
-		 * @param keyword1	支付金额
-		 * @param keyword2	商品信息
-		 * @param remark	全部内容
-		 * @param openId	用户openid
-		 * @param url	地址
-		 */
-		public void probationPaySuccess(String first,String keyword1,String keyword2,String remark,String openId,String url){
-			String temp = ResultInfo.PROBATIONPAYSUCCESS;
-			temp = temp.replaceFirst("firstValueIamberry", first)
-					.replaceFirst("orderMoneySumValue",keyword1)
-					.replaceFirst("orderProductNameValue",keyword2)
-					.replaceFirst("remarkValue",remark);
-			sendTemplateMessageToOpenid(temp, openId, url,8);
-		}
-		/**
-		 * 试用订单关闭成功
-		 * @param first  标题
-		 * @param keyword1	支付金额
-		 * @param keyword2	商品信息
-		 * @param remark	全部内容
-		 * @param openId	用户openid
-		 * @param url	地址
-		 */
-		public void probationShutDown(String first,String transid,String fee,String pay_time,String remark,String openId,String url){
-			String temp = ResultInfo.PROBATIONSHUTDOWN;
-			temp = temp.replaceFirst("firstValueIamberry", first)
-					.replaceFirst("transidValue",transid)
-					.replaceFirst("feeValue",fee)
-					.replaceFirst("pay_timeValue",pay_time)
-					.replaceFirst("remarkValue",remark);
-			sendTemplateMessageToOpenid(temp, openId, url,9);
-		}
-		
-		/**
-		 * 推荐人领取通知
-		 * @param first  标题
-		 * @param keyword1	被推荐人
-		 * @param keyword2	消费商家
-		 * @param keyword3	消费金额
-		 * @param keyword4	消费时间
-		 * @param keyword4	推荐奖励
-		 * @param remark	全部内容
-		 * @param openId	用户openid
-		 * @param url	跳转地址
-		 */
-		public void prizeReceivePush(String first,String keyword1,String keyword2,String keyword3,String keyword4,String keyword5,String remark,String openId,String url){
-			String temp = ResultInfo.PRIZERECEIVEPUSH;
-			temp = temp.replaceFirst("firstValueIamberry", first)
-					.replaceFirst("keyword1Value",keyword1)
-					.replaceFirst("keyword2Value",keyword2)
-					.replaceFirst("keyword3Value",keyword3)
-					.replaceFirst("keyword4Value",keyword4)
-					.replaceFirst("keyword5Value",keyword5)
-					.replaceFirst("remarkValue",remark);
-				sendTemplateMessageToOpenid(temp, openId, url,10);
-		}
-}

+ 10 - 9
watero-rst-web/src/main/resources/platform.properties

@@ -75,6 +75,9 @@ token=weixin
 # partnerkey
 partnerkey=cdb9075e7ecad945ba788bc5aedM212B
 
+# pubNo -- soodo-test
+pubNo=gh_8ddb1d63343c
+
 # appId-test
 #appId=wxc71b789fad06a2d7
 # appId-wateroPF
@@ -89,6 +92,13 @@ appSecret=39c8f8742c3f084e1da5b75520436a70
 # appSecret-watero\u6C34\u65F6\u4EE3
 #appSecret=97b2f2991e4ff0f2567fbc625f858377
 
+# wechat auth back url
+WECHAT_BACK_URL=http://test.iamberry.com/wechatBack
+
+# index redirect url
+redirectUrl_index=redirect:/wechat/index
+
+
 SUCCESSINFO=SUCCESS
 
 #cm-website-send-msg
@@ -99,13 +109,4 @@ scanningQrCode=https://w.iamberry.com/tooth/wechat/qr/
 #ReqURL=http://api.kdniao.cc/api/Eorderservice
 ReqURL=http://testapi.kdniao.cc:8081/api/EOrderService
 
-# wechat auth back url
-WECHAT_BACK_URL=http://test.iamberry.com/wechatBack
-
-# index redirect url
-redirectUrl_index=redirect:/wechat/index
 
-#ROOT_PATH=rst
-
-# pubNo -- soodo-test
-pubNo=gh_8ddb1d63343c

+ 2 - 0
watero-rst-web/src/main/resources/watero-rst-orm.xml

@@ -243,6 +243,8 @@
 		<mapper resource="com/iamberry/rst/service/approval/mapper/applyPickItemMapper.xml"/>
 		<mapper resource="com/iamberry/rst/service/approval/mapper/applyPickMapper.xml"/>
 		<mapper resource="com/iamberry/rst/service/approval/mapper/approvalOrderMapper.xml"/>
+		<mapper resource="com/iamberry/rst/service/approval/mapper/approvalProductionContractMapper.xml"/>
+		<mapper resource="com/iamberry/rst/service/approval/mapper/approvalProductionMapper.xml"/>
 
 		<!--member-->
 		<mapper resource="com/iamberry/rst/service/member/mapper/memberMapper.xml"/>

+ 3 - 1
watero-rst-web/src/main/webapp/WEB-INF/views/base/add_base.ftl

@@ -32,5 +32,7 @@
 <script type="text/javascript" src="${path}/common/js/common/common.js"></script>
 <script type="text/javascript" src="${path}/common/js/common/commonInit.js"></script>
 
+<script type="text/javascript" src="${path}/common/js/common/UnlimitedLevelContact.js"></script>
+
 <script type="text/javascript" src="${path}/common/js/common/address.js"></script>
-<script type="text/javascript" src="${path}/common/js/common/salesChannel.js"></script>
+<script type="text/javascript" src="${path}/common/js/common/salesChannel.js"></script>

+ 2 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/base/list_base.ftl

@@ -32,5 +32,7 @@
 <script type="text/javascript" src="${path}/common/js/common/common.js"></script>
 <script type="text/javascript" src="${path}/common/js/common/commonInit.js"></script>
 
+<script type="text/javascript" src="${path}/common/js/common/UnlimitedLevelContact.js"></script>
+
 <script type="text/javascript" src="${path}/common/js/common/address.js"></script>
 <script type="text/javascript" src="${path}/common/js/common/salesChannel.js"></script>

+ 7 - 14
watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/add_order.ftl

@@ -125,9 +125,9 @@
                 </div>
             </div>
 
-            <div class="row cl address_info" id="" style="">
+          <div class="row cl address_info" id="" style="">
                 <label class="form-label col-1 col-sm-1">地址信息:</label>
-                <div class="formControls col-2 col-sm-2" style="">
+                <div class="formControls col-2 col-sm-2" >
                     <span class="select-box">
                         <select class="select init_province" id="addressProvince"  >
                         </select>
@@ -135,13 +135,13 @@
                 </div>
                 <div class="formControls col-2 col-sm-2">
                     <span class="select-box">
-                        <select  class="select init_city" id="addressCity">
+                        <select  class="select init_city" id="addressCity"   >
                         </select>
                     </span>
                 </div>
-                <div class="formControls col-2 col-sm-2" style="position: relative;">
+                <div class="formControls col-2 col-sm-2">
                     <span class="select-box">
-                        <select  class="select init_country" id="addressCountry">
+                        <select  class="select init_country" id="addressCountry" >
                         </select>
 				    </span>
                 </div>
@@ -278,16 +278,9 @@
         increaseArea: '20%'
     });
 
-    /*初始化省市区*/
-    var address = $(".address_info").initAddress();
-
-   /* $(function (){
+   $(function (){
         var ulc = initAddress($(".address_info"));
-        ulc.setUlcById($("#addressProvince"),13000000);
-//
-//        var s = $("#addressProvince").attr("ulclevel");
-//        alert(s);
-    })*/
+    })
 
     /*初始化销售公司店铺*/
     var sc = $(".sales_channel").initSalesChannel();

+ 8 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/sales_order_detail.ftl

@@ -115,6 +115,14 @@
                 <th width="10">支付时间:</th>
                 <td width="10" style="font-weight: normal;"><span>${(order.salesPayTime?string("yyyy-MM-dd HH:mm:ss"))!''}</span></td>
             </tr>
+            <tr>
+                <th width="10">录入人:</th>
+                <td width="10" style="font-weight: normal;"></td>
+                    ${order.salesAdminName!''}
+                <td width="10"></td>
+                <th width="10"></th>
+                <td width="10" style="font-weight: normal;"><span></span></td>
+            </tr>
             </thead>
         </table>
         <div class="row cl">

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

@@ -32,9 +32,9 @@
         <form action="${path}/admin/salesOrder/list_order_page" method="post">
 
             <div style="position: relative;float: left;display: block;width: 110px;height: 30px;" id="addOrderDiv" >
-                <button type="button" style="margin-bottom: 80px;height: 30px;top: 0px;" class="my-btn-search my-order" id="addOrderType" >录入订单</button>
-                <button type="button" style="height: 30px;top: 32px;display: none;" class="my-btn-search my-order" id="addOrderManual" onclick="toAddOrderManual();">手动录入</button>
-                <button type="button" style="height: 30px;top: 64px;display: none;" class="my-btn-search my-order" id="addOrderExcel" onclick="upFiles();">Excel导入</button>
+                <button type="button" style="height: 30px;top: 0px;" class="my-btn-search my-order" id="addOrderType" >录入订单</button>
+                <button type="button" style="height: 30px;top: 30px;display: none;" class="my-btn-search my-order" id="addOrderManual" onclick="toAddOrderManual();">手动录入</button>
+                <button type="button" style="height: 30px;top: 60px;display: none;" class="my-btn-search my-order" id="addOrderExcel" onclick="upFiles();">Excel导入</button>
             </div>
 
             <div style="width: 90%;text-align: left;margin-left: 10%;">
@@ -135,11 +135,11 @@
                     <td>${order.salesBatchId!''}</td>
                     <td>${order.salesAddressName!''}
                         <p>
-                            <#if (order.salesAddressTel)?? && order.salesAddressTel?length gt 7>
-                                ${order.salesAddressTel?substring(0,3)}***${order.salesAddressTel?substring(order.salesAddressTel?length-4,order.salesAddressTel?length)}
-                            <#else>
-                                ${order.salesAddressTel!''}
-                            </#if>
+                            <#--<#if (order.salesAddressTel)?? && order.salesAddressTel?length gt 7>-->
+                            <#--<#else>-->
+                                <#--${order.salesAddressTel!''}-->
+                            <#--</#if>-->
+                            ${order.salesAddressTel!''}
                         </p>
                     </td>
                     <td alt="${order.salesAddressInfo!''}" title="${order.salesAddressInfo!''}">

+ 11 - 8
watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/update_order.ftl

@@ -118,9 +118,11 @@
                     <span class="select-box">
                         <select class="select" id="salesBatchId" name="salesBatchId" >
                             <option value="1" >新增批次</option>
-                            <#list orderBatchs as orderBatch>
-                                <option value="${orderBatch.batchId}" <#if orderBatch.batchId = order.salesBatchId>selected</#if>>${orderBatch.batchId}</option>
-                            </#list>
+                                <#if order.salesBatchId??>
+                                    <#list orderBatchs as orderBatch>
+                                        <option value="${orderBatch.batchId!""}" <#if orderBatch.batchId = order.salesBatchId>selected</#if>>${orderBatch.batchId!""}</option>
+                                    </#list>
+                                </#if>
                         </select>
 				    </span>
                 </div>
@@ -157,19 +159,19 @@
                 <label class="form-label col-1 col-sm-1">地址信息:</label>
                 <div class="formControls col-2 col-sm-2" style="">
                     <span class="select-box">
-                        <select class="select init_province" id="addressProvince"  provinceName="${order.salesAddressProvinceName!''}" >
+                        <select class="select init_province" id="addressProvince"  ulcName="${order.salesAddressProvinceName!''}" >
                         </select>
 				    </span>
                 </div>
                 <div class="formControls col-2 col-sm-2">
                     <span class="select-box">
-                        <select  class="select init_city" id="addressCity"  cityName="${order.salesAddressCityName!''}">
+                        <select  class="select init_city" id="addressCity"  ulcName="${order.salesAddressCityName!''}">
                         </select>
                     </span>
                 </div>
                 <div class="formControls col-2 col-sm-2" style="position: relative;">
                     <span class="select-box">
-                        <select  class="select init_country" id="addressCountry" countryName="${order.salesAddressCountryName!''}">
+                        <select  class="select init_country" id="addressCountry" ulcName="${order.salesAddressCountryName!''}">
                         </select>
 				    </span>
                 </div>
@@ -332,8 +334,9 @@
     });
 
     /*初始化省市区*/
-    var address = $(".address_info").initAddress(
-    );
+    $(function (){
+        var ulc = initAddress($(".address_info"));
+    })
 
     /*初始化销售公司店铺*/
     $(".sales_channel").initSalesChannel();

Файловите разлики са ограничени, защото са твърде много
+ 1 - 0
watero-rst-web/src/main/webapp/common/js/common/UnlimitedLevelContact.js


+ 1 - 192
watero-rst-web/src/main/webapp/common/js/common/address.js

@@ -279,204 +279,13 @@ function listDistrict(cityId,districtName){
     return district;
 }
 
-
-
-
-
-/**
- * 控制是都有请选择项
- *
- */
-//初期是没有的	  //初始化之后使用   用于二次封装
-//二次数据
-/*
- this.ulcInfo = {
-                urlPrefix : "",
-                ulcLevel :  [
-                    {
-                        ulcNode: ele.find(".ulcNode"),	//节点
-                        ulcURL: "",	//url
-                        ulcId : ele.find(".ulcId"),	//节点option的value
-                        ulcName: ele.find(".ulcNode").attr("ulcName"),
-                        isFristSelect : false,	//是否有“请选择项”,
-                        repData: function(res){ //res 即为原始返回的数据
-                            return {
-                                "code": res.returnCode, //解析接口状态
-                                "msg": res.resultMsg, //解析提示文本
-                                "count": res.total, //解析数据长度
-                                "data": res.returnMsg //解析数据列表
-                            };
-                        },
-                        parseData:function(data){ //res 即为原始返回的数据
-                            return {
-                                "id": data.provinceId, //解析接口状态
-                                "val": data.province, //解析提示文本
-                                "other": data.other, //解析数据长度
-                            };
-                        }
-                    }, {
-                        ulcNode: ele.find(".ulcNode"),	//节点
-                        ulcURL: "",	//url
-                        ulcId : ele.find(".ulcId"),	//节点id
-                        ulcName: ele.find(".ulcNode").attr("ulcName"),
-                        isFristSelect : false,	//是否有“请选择项”,
-                        repData: function(res){ //res 即为原始返回的数据
-                            return {
-                                "code": res.returnCode, //解析接口状态
-                                "msg": res.message, //解析提示文本
-                                "count": res.total, //解析数据长度
-                                "data": res.returnMsg //解析数据列表
-                            };
-                        },
-                        parseData:function(data){ //data为对象
-                            return {
-                                "id": data.id, //select的id
-                                "val": data.val, //select的value
-                                "msg": data.msg, //select的其他数据,绑定在option上的msg属性上
-                            };
-                        }
-                    }
-                ],
-                parseData: function(res){ //res 即为原始返回的数据
-                return {
-                    "code": res.status, //解析接口状态
-                    "msg": res.message, //解析提示文本
-                    "count": res.total, //解析数据长度
-                    "data": res.data.item //解析数据列表
-                },
-                // provinceNode : ele.find(".ulc_1"),
-                // cityNode : ele.find(".init_city"),
-                // countryNode : ele.find(".init_country"),
-                // provinceId :ele.find(".init_province").attr("provinceId"),
-                // cityId : ele.find(".init_city").attr("cityId"),
-                // countryId : ele.find(".init_country").attr("countryId"),
-                // provinceName : ele.find(".init_province").attr("provinceName"),
-                // cityName :   ele.find(".init_city").attr("cityName"),
-                // countryName :  ele.find(".init_country").attr("countryName"),
-                initLock : false
-            },
- */
-
-
-
-;(function($,window,document,undefined){
-    //定义UnlimitedLevelContact的构造函数
-    var UnlimitedLevelContact = function(ele,opt) {
-        this.$element = ele,
-            this.ulcInfo = {
-                urlPrefix : "",
-                ulcLevel :  [],
-                execution:{
-                    // executionType : {
-                    //     A:initUlcLevel
-                    // } ,
-                    executionFun : []
-                }
-            },
-            this.options = $.extend({}, this.ulcInfo, opt)  //opt并入ulcInfo集合组成新的集合,然后赋值给 options ,所以一切调用options
-    }
-    //定义Address的方法
-    UnlimitedLevelContact.prototype = {
-        init: function() {
-            this.initUlcLevel();
-            if(this.options.ulcLevel.length > 0){
-                this.initUlc(0,"",null);
-            }
-            return this;
-        },
-        initUlcLevel : function(){
-            $(this.options.ulcLevel).each(function (index){
-                //是否选中数据  1:选中  2:未选中
-                this.isSelected = 1;
-
-                /*初始化层次结构*/
-                $(this.ulcNode).attr("ulclevel",index);
-            })
-        },
-        initUlc : function(level,id,thisId){
-            //初始化联动
-            var ulc = this;
-            var node = ulc.options.ulcLevel[level];
-            $.get(ulc.options.urlPrefix + node.ulcURL + id, function(result){
-                $(node.ulcNode).empty();    //清空下拉框
-                if(node.isFristSelect){
-                    $(node.ulcNode).append("<option value=''>"+ node.fristSelectMsg +"</option>");
-                    node.isSelected = 2;
-                }
-                var res = node.repData(result);
-                if (res.code == res.isFlag) {
-                    //数据返回
-                    if(res.data.length < 1 && !node.isFristSelect){
-                        $(node.ulcNode).append("<option value=''></option>");
-                        node.isSelected = 2;
-                    }
-                    $(res.data).each(function (){
-                        var data =  node.parseData(this);
-                        $(node.ulcNode).append("<option value='"+ data.id +"'>"+ data.val +"</option>");
-                    })
-                    if(thisId != null){
-                        //赋值本下拉框的id
-                        $(node.ulcNode).val(thisId);
-                    }
-                    if(res.data.length > 0){
-                        node.ulcId = node.parseData(res.data[0]).id;
-                        if(ulc.options.ulcLevel.length-1 > level &&  node.isSelected == 1){
-                            $(node.ulcNode).change(function (){
-                                ulc.initUlc(level+1,$(node.ulcNode).val());
-                            })
-                            ulc.initUlc(level+1,node.ulcId);
-                        }
-                    }
-                }else{
-                    console.log(res.msg);
-                }
-            });
-        },
-        setUlcById: function(){
-            /**
-             *  形参 1:level(级别)或者节点
-             *  形参 2:id 传入id的值
-             */
-            var ulc = this,level=-1;
-            if (arguments.length == 0) return this;
-            if(arguments[0].constructor == Number){
-                level = arguments[0];
-            }else{
-                //节点,传入节点,将进行取值ulclevel
-                level = $("#addressProvince").prop("ulclevel");
-                //https://www.cnblogs.com/zhuchenglin/p/7651990.html   异步取不到值
-                //https://blog.csdn.net/u013063153/article/details/52457307   异步取不到值
-            }
-            if(level = -1){
-                console.log("setUlcId error!!!");
-                return ulc;
-            }
-            var upperLevelId='';
-            if(level != 0){
-                upperLevelId = ulc.options.ulcLevel[level-1].ulcId;
-            }
-            ulc.initUlc(level,upperLevelId,arguments[1]);
-            return this;
-        },
-        execute:function(){
-
-        }
-    }
-    // initAddress 调用
-    $.fn.initUlc = function(options) {
-        var ulc = new UnlimitedLevelContact(this, options);
-        ulc.init();
-        return ulc;
-    }
-})(jQuery,window,document);
-
-
 function initAddress(addressNode){
     var $provice = $(".address_info").find(".init_province");
     var $city = $(".address_info").find(".init_city");
     var $country = $(".address_info").find(".init_country");
     var ulc = $(".address_info").initUlc({
         urlPrefix: root_path,
+        judgeNameShield : ["省","市","县","乡","镇","市","自治区"],
         ulcLevel :  [
             {
                 ulcNode: $provice,	//节点

+ 126 - 5
watero-wechat-service/src/main/java/com/iamberry/wechat/service/giftCard/GiftCardServiceImpl.java

@@ -6,7 +6,21 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Random;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.iamberry.wechat.core.entity.coupon.CouponItem;
+import com.iamberry.wechat.core.entity.coupon.CouponType;
+import com.iamberry.wechat.core.entity.mq.MQMessage;
+import com.iamberry.wechat.core.entity.order.OrderItem;
+import com.iamberry.wechat.face.porduct.ProductColorService;
+import com.iamberry.wechat.tools.DateTimeUtil;
+import com.iamberry.wechat.tools.HttpClient431Util;
+import com.iamberry.wechat.tools.NameUtils;
+import net.sf.json.JSONObject;
+import org.apache.commons.lang3.StringEscapeUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -93,14 +107,121 @@ public class GiftCardServiceImpl implements GiftCardService {
 		if (agentMapper.updateAgentCardSum(agentInfo) <= 0) {
 			throw new RuntimeException();
 		}
-		
-		// 推送百胜
+
+		//推送到rst
+		String url = NameUtils.getConfig("rst_efast_base_url");
+		Map<String, String> requestData = new HashMap<String, String>();
+		/**
+		 * 系统级参数
+		 */
+		requestData.put("app_act", "rst.trade.new.add");
+
+		/**
+		 * 订单基本信息
+		 */
+		String[] addressDesc = machineInfo.getUserMachineAddressInfo().split("-");
+
+		//判断收货地址从而选择仓库
+		String sd_id = NameUtils.getConfig("sd_id");
+
+		String address = addressDesc[3];
+		if (addressDesc[3] != null) {
+			Pattern p = Pattern.compile("\\s*|\t|\r|\n");
+			Matcher m = p.matcher(addressDesc[3]);
+			if (m.find()) {
+				address = m.replaceAll("");
+			}
+		}
+		String provinceName = addressDesc[0];
+		if (addressDesc[0].indexOf("北京") != -1) {
+			provinceName = "北京";
+		} else if (addressDesc[0].indexOf("上海") != -1) {
+			provinceName = "上海";
+		} else if (addressDesc[0].indexOf("天津") != -1) {
+			provinceName = "天津";
+		} else if (addressDesc[0].indexOf("重庆") != -1) {
+			provinceName = "重庆";
+		}
+		//颜色表查询
+		ProductColor productColor =	colorMapper.selectProductColorById(machineInfo.getUserMachineColorId());
+		Map<String, Object> orderData = new HashMap<String, Object>();
+		orderData.put("add_time", DateTimeUtil.format(new Date()));        // 时间
+		orderData.put("address", address);                                                // 收货地址
+		orderData.put("city_name", addressDesc[1]);                                    // 城市
+		orderData.put("consignee", machineInfo.getUserMachineAddressName());                        // 收货人
+		orderData.put("district_name", addressDesc[2]);                                    // 区域
+		orderData.put("email", "");                                                        // email
+		orderData.put("goods_amount", productColor.getColorDiscount() / 100);                    // 商品总价
+		orderData.put("goods_count", 1);                                        // 产品数量
+		orderData.put("mobile", machineInfo.getUserMachineAddressTel());                            // 手机号码
+		orderData.put("money_paid", productColor.getColorDiscount() / 100);                                        // 已付款
+		orderData.put("oid", "DH00000000" + machineInfo.getUserMachineId());                                    // 订单号
+		orderData.put("order_amount", productColor.getColorDiscount() / 100);                                    // 应付款,应付款金额要与已付款金额相同
+		/**
+		 * 产品信息
+		 */
+		List<Map<String, Object>> maps = new ArrayList<Map<String, Object>>();
+			Map<String, Object> orders1 = new HashMap<String, Object>();
+			orders1.put("goods_name", "【美国watero】净饮水一体机");                            // 产品名称
+			orders1.put("goods_number", 1);                                    // 产品数量
+			orders1.put("goods_price", productColor.getColorDiscount() / 100);                    // 产品原价
+			orders1.put("outer_sku", productColor.getColor69Code());                                // 产品SKU
+			orders1.put("payment_ft", productColor.getColorDiscount() / 100);                // 产品分摊价
+			maps.add(orders1);
+		orderData.put("orders", maps);                                                    // 订单产品
+		orderData.put("pay_name", "weixinpay");                                            // 支付方式
+		orderData.put("pay_time", DateTimeUtil.format(new Date()));// 支付时间
+		orderData.put("postscript","");                        // 买家留言
+		orderData.put("province_name", provinceName);                                    // 省份
+		orderData.put("sd_id", sd_id);                                                    // 对应 efast 店铺 id
+		orderData.put("shipping_fee", 0);                                                // 快递费
+		orderData.put("shipping_name", "yto");                                            // 快递公司代码
+		orderData.put("tel", machineInfo.getUserMachineAddressTel());                                            // 我司电话
+		orderData.put("to_buyer", "");                                                    // 商家备注
+		//orderData.put("total_amount", (order.getSalesAmount()/100.0));					// 订单总额
+		orderData.put("total_amount", (productColor.getColorDiscount() / 100));                    // 订单总额
+		orderData.put("user_name", machineInfo.getUserMachineOpenId());                            // 买家账户   百胜根据user_name来判断是否有重复,传openId是为了防止重复
+		orderData.put("zipcode", "000000");                        // 邮编
+
+
+		com.fasterxml.jackson.databind.ObjectMapper mapper = new ObjectMapper();
+		String orderDataStr = null;
+		;
+		try {
+			orderDataStr = mapper.writeValueAsString(orderData);
+		} catch (JsonProcessingException e2) {
+			e2.printStackTrace();
+		}
+
+		requestData.put("info", orderDataStr);
+
+		try {
+
+			String result = HttpClient431Util.doPost(requestData, url);
+			result = StringEscapeUtils.unescapeJava(result); // unicode 编码
+			// parse JSON String to Object
+			JSONObject jsonObject = JSONObject.fromObject(result);
+			//JSONObject respData = JSONObject.fromObject(jsonObject.get("resp_data"));
+			String oderSn = jsonObject.getString("oder_sn");
+			if (oderSn != null) {
+				String msg = jsonObject.getString("msg");
+				if ("success".equals(msg)) {
+					throw new RuntimeException();
+				}
+			}
+			throw new Exception(jsonObject.getString("msg"));
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+
+		/*// 推送百胜
 		try {
 			efastOrderService.giftCard(machineInfo.getUserMachineAddressInfo(), "DH00000000" + machineInfo.getUserMachineId(), machineInfo.getUserMachineColorId()
 					, machineInfo.getUserMachineAddressName(), machineInfo.getUserMachineAddressTel(), machineInfo.getUserMachineOpenId());
 		} catch (Exception e) {
 			e.printStackTrace();
-		}
+		}*/
 		return presentMachineAndClearAgentCardNum(agentInfo);
 	}
 	
@@ -164,8 +285,8 @@ public class GiftCardServiceImpl implements GiftCardService {
 	}
 	/**
 	 * 批量添加礼品卡信息和赠送的机器物流信息
-	 * @param request
-	 * @param agentMachine
+	 * @param
+	 * @param
 	 * @return
 	 * @throws Exception
 	 */