Browse Source

邮费转账

wangxiaoming 7 years ago
parent
commit
c72d8dd8e5

+ 8 - 1
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/PostageService.java

@@ -33,7 +33,6 @@ public interface PostageService {
      */
     PagedResult<Postage> listPostage(int pageNO, int pageSize, Postage postage, boolean isTotalNum);
 
-
     /**
      *  获取邮费详情
      * @param postageId
@@ -57,4 +56,12 @@ public interface PostageService {
     List<Postage> listPostage(Postage postage);
 
 
+    /**
+     * 邮费集合 - 定时任务查询
+     * @param postage
+     * @return
+     */
+    Integer getPostageNumber(Postage postage);
+
+
 }

+ 5 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/PostageServiceImpl.java

@@ -40,6 +40,11 @@ public class PostageServiceImpl implements PostageService {
     }
 
     @Override
+    public Integer getPostageNumber(Postage postage) {
+        return postageMapper.getPostageNumber(postage);
+    }
+
+    @Override
     public Postage getPostage(Integer postageId) {
         return postageMapper.getPostage(postageId);
     }

+ 7 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/PostageMapper.java

@@ -42,4 +42,11 @@ public interface PostageMapper {
      * @return
      */
     Integer delPostage(Integer postageId);
+
+    /**
+     *  邮费转账列表  - 定时任务查询
+     * @param postage
+     * @return
+     */
+    Integer getPostageNumber(Postage postage);
 }

+ 31 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/postageMapper.xml

@@ -195,4 +195,35 @@
     </where>
   </delete>
 
+  <select id="getPostageNumber" resultType="Integer" parameterType="Postage" >
+    select
+      COUNT (p.postage_id)
+    from tb_rst_postage p
+    <where>
+        p.customer_id = #{customerId}
+      <if test="adminId != null and adminId != ''">
+        AND p.admin_id = #{adminId}
+      </if>
+      <if test="postageCustomerStatus != null and postageCustomerStatus != ''">
+        AND p.postage_customer_status = #{postageCustomerStatus}
+      </if>
+      <if test="postageManagerStatus != null and postageManagerStatus != ''">
+        AND p.postage_manager_status = #{postageManagerStatus}
+      </if>
+      <if test="postageFinanceStatus != null and postageFinanceStatus != ''">
+        AND p.postage_finance_status = #{postageFinanceStatus}
+      </if>
+      <if test="postageOrderSource != null and postageOrderSource != ''">
+        AND p.postage_order_source = #{postageOrderSource}
+      </if>
+      <if test="postageTreatmentMethod != null and postageTreatmentMethod != ''">
+        AND p.postage_treatment method = #{postageTreatmentMethod}
+      </if>
+      <if test="salesOrderId != null and salesOrderId != ''">
+        AND p.sales_orderId = #{salesOrderId}
+      </if>
+    </where>
+    ORDER BY postage_id DESC
+  </select>
+
 </mapper>

+ 6 - 0
watero-rst-service/src/main/java/com/iamberry/rst/util/SmsConfig.java

@@ -66,6 +66,9 @@ public class SmsConfig {
     /* 添加客诉成功提醒  -- 爱贝源 */
     public static String ADD_CUSTOMER_SUCCESS_AIBERLE="";
 
+    /*提醒邮费申请待处理*/
+    public static String REMIND_POSTAGE_PENDING="";
+
     /* 扫描牙刷二维码访问地址 */
     public static String scanningQrCode="";
 
@@ -113,6 +116,9 @@ public class SmsConfig {
             ADD_CUSTOMER_SUCCESS_YULIA=pro.getProperty("ADD_CUSTOMER_SUCCESS_YULIA");
             ADD_CUSTOMER_SUCCESS_AIBERLE=pro.getProperty("ADD_CUSTOMER_SUCCESS_AIBERLE");
 
+
+            REMIND_POSTAGE_PENDING=pro.getProperty("REMIND_POSTAGE_PENDING");
+
             scanningQrCode=pro.getProperty("scanningQrCode");
         } catch (Exception e) {
             e.printStackTrace();

+ 95 - 8
watero-rst-web/src/main/java/com/iamberry/rst/controllers/mq/MQTask.java

@@ -10,6 +10,7 @@ import com.iamberry.rst.core.order.ProductColor;
 import com.iamberry.rst.core.order.ProductType;
 import com.iamberry.rst.core.sms.OrderMessage;
 import com.iamberry.rst.core.sms.SmsMessage;
+import com.iamberry.rst.core.sys.Admin;
 import com.iamberry.rst.core.sys.Relu;
 import com.iamberry.rst.core.sys.SysConfig;
 import com.iamberry.rst.faces.address.AddressService;
@@ -78,9 +79,12 @@ public class MQTask implements InitializingBean {
 	private CustomerCommonService customerCommonService;
 	@Autowired
 	private KuaiDi100 kuaidi100;
-
-
-
+	@Autowired
+	private PostageAuthorityService postageAuthorityService;
+	@Autowired
+	private PostageService postageService;
+	@Autowired
+	private  CompanyInfoService companyInfoService;
 
 	private Object lock = new Object();
 	private Object lock1 = new Object();
@@ -454,11 +458,94 @@ public class MQTask implements InitializingBean {
 
 
 	/**客诉系统  自动追踪发货信息**/
-//	@Scheduled(cron = "0 0/30 * * * ?")//每30分钟执行一次
-//	//	@Scheduled(cron = "0 0 9 * * ?")//每天上午午9点触发
-//	public void postageRemind()throws Exception{
-//
-//	}
+	@Scheduled(cron = "0 0/2 * * * ?")//每30分钟执行一次
+	//	@Scheduled(cron = "0 0 9 * * ?")//每天上午午9点触发
+	public void postageRemind()throws Exception{
+
+		Map<Integer,Integer> map = new HashMap<Integer,Integer>();
+
+		List<CompanyInfo> companyInfoList = companyInfoService.listCompanyInfo(new CompanyInfo());
+		for (CompanyInfo ci: companyInfoList ) {
+			/*权限去重*/
+			Set<Integer> authorityCustomerManagerSet =  new HashSet();
+			Set<Integer> authorityFinancialManagerSet =  new HashSet();
+			Set<Integer> authorityFinancialPaymentSet =  new HashSet();
+
+			PostageAuthority postageAuthority = new PostageAuthority();
+			postageAuthority.setAuthorityStatus(1);
+			postageAuthority.setCompanyId(ci.getCompanyId());
+			List<PostageAuthority> postageAuthorityList = postageAuthorityService.getPostageAuthorityList(postageAuthority);
+			for (int j=0;j<postageAuthorityList.size();j++){
+				PostageAuthority pa = postageAuthorityList.get(j);
+
+				if(pa.getAuthorityCustomerManager() != null && pa.getAuthorityCustomerManager() != 0){
+					authorityCustomerManagerSet.add(pa.getAuthorityCustomerManager());
+				}
+
+				if(pa.getAuthorityFinancialManager() != null && pa.getAuthorityFinancialManager() != 0){
+					authorityFinancialManagerSet.add(pa.getAuthorityFinancialManager());
+				}
+
+				if(pa.getAuthorityFinancialPayment() != null && pa.getAuthorityFinancialPayment() != 0){
+					authorityFinancialPaymentSet.add(pa.getAuthorityFinancialPayment());
+				}
+			}
+
+			Postage pt = new Postage();
+			pt.setCompanyId(ci.getCompanyId());
+			pt.setPostageManagerStatus(1);		//客服经理审核  1:审核中
+			for (Integer customerManager: authorityCustomerManagerSet) {	//customerManager 为id
+				Integer postageNumber = postageService.getPostageNumber(pt);
+				if(map.get(customerManager) != null){
+					map.put(customerManager,postageNumber);
+				}else{
+					Integer number  = map.get(customerManager);
+					map.put(customerManager,number + postageNumber);
+				}
+			}
+
+			pt = new Postage();
+			pt.setCompanyId(ci.getCompanyId());
+			pt.setPostageFinanceStatus(1);		//状态(财务审核) 1:审核中
+			for (Integer financialManager: authorityFinancialManagerSet) {    //financialManager 为id
+				Integer postageNumber = postageService.getPostageNumber(pt);
+				if(map.get(financialManager) != null){
+					map.put(financialManager,postageNumber);
+				}else{
+					Integer number  = map.get(financialManager);
+					map.put(financialManager,number + postageNumber);
+				}
+			}
+
+			pt = new Postage();
+			pt.setCompanyId(ci.getCompanyId());
+			pt.setPostageFinanceStatus(2);		//状态(财务审核) 2:通过(已申请待转账)
+			for (Integer financialPayment: authorityFinancialPaymentSet) {    //financialPayment 为id
+				Integer postageNumber = postageService.getPostageNumber(pt);
+				if(map.get(financialPayment) != null){
+					map.put(financialPayment,postageNumber);
+				}else{
+					Integer number  = map.get(financialPayment);
+					map.put(financialPayment,number + postageNumber);
+				}
+			}
+		}
+
+		for (Map.Entry<Integer,Integer> m: map.entrySet()) {
+			Integer number = m.getValue();
+			Admin admin = new Admin();
+			admin.setAdminId(m.getKey());
+			admin = sysService.get(admin);
+
+			String tel = admin.getAdminTel();
+			if(admin == null || tel == null || "".equals(tel)){
+				logger.info("邮费转账发送待处理短信,手机号码为空,"+ tel+"===id为"+m.getKey());
+				continue;
+			}
+			String text = MessageFormat.format(REMIND_POSTAGE_PENDING,number);
+			smsService.sendOtherCMS(tel,text);
+		}
+	}
 
 
 }

+ 2 - 0
watero-rst-web/src/main/resources/platform.properties

@@ -61,6 +61,8 @@ ADD_CUSTOMER_SUCCESS_SHANGDUO=\u3010\u4E0A\u6735\u5FAE\u5546\u57CE\u3011\u5C0A\u
 ADD_CUSTOMER_SUCCESS_YULIA=\u3010YULIA\u51C0\u6C34\u673A\u3011\u5C0A\u656C\u7684\u5BA2\u6237\u60A8\u597D\uFF0C\u5DF2\u6536\u5230\u60A8\u7684\u552E\u540E\u7533\u8BF7\uFF0C\u6211\u4EEC\u6B63\u79EF\u6781\u5904\u7406\uFF0C\u5904\u7406\u65B9\u5F0F\u4E3A\uFF1A{0}\uFF0C\u795D\u60A8\u751F\u6D3B\u6109\u5FEB\uFF08{1}\uFF09
 ADD_CUSTOMER_SUCCESS_AIBERLE=\u3010\u7231\u8D1D\u6E90\u3011\u5C0A\u656C\u7684\u5BA2\u6237\u60A8\u597D\uFF0C\u5DF2\u6536\u5230\u60A8\u7684\u552E\u540E\u7533\u8BF7\uFF0C\u6211\u4EEC\u6B63\u79EF\u6781\u5904\u7406\uFF0C\u5904\u7406\u65B9\u5F0F\u4E3A\uFF1A{0}\uFF0C\u795D\u60A8\u751F\u6D3B\u6109\u5FEB\uFF08{1}\uFF09
 
+REMIND_POSTAGE_PENDING=\u3010\u7231\u8D1D\u6E90RST\u3011\u60A8\u6709{0}\u4E2A\u90AE\u8D39\u7533\u8BF7\u5F85\u5904\u7406\uFF0C\u8BF7\u5C3D\u5FEB\u524D\u5F80RST\u7CFB\u7EDF\u5904\u7406
+
 #---SMS end---#
 #weixin
 # pubNo

+ 1 - 1
watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/update_back_goods.ftl

@@ -123,7 +123,7 @@
                         <strong>仓库签收时间</strong>
                     </div>
                     <div class="formControls col-4 col-sm-4">
-                        <input type="text" placeholder="请选择仓库签收时间" id="backGoodsBackReceiptDate"  name="backGoodsBackReceiptDate" datatype="*" class="input-text Wdate" onclick="WdatePicker({skin:'whyGreen',minDate:'%y-%M-%d'})"  readonly="readonly" seleType="send">
+                        <input type="text" placeholder="请选择仓库签收时间" id="backGoodsBackReceiptDate"  name="backGoodsBackReceiptDate" datatype="*" class="input-text Wdate" onclick="WdatePicker({skin:'whyGreen',maxDate:'%y-%M-%d'})"  readonly="readonly" seleType="send">
                     </div>
                 </div>
                 <div class="row cl">

+ 1 - 1
watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/update_noreason_back.ftl

@@ -117,7 +117,7 @@
                         <strong>仓库签收时间</strong>
                     </div>
                     <div class="formControls col-4 col-sm-4">
-                        <input type="text" placeholder="请选择仓库签收时间" id="noreasonBackReceiptDate"  name="noreasonBackReceiptDate" datatype="*" class="input-text Wdate" onclick="WdatePicker({skin:'whyGreen',minDate:'%y-%M-%d'})"  readonly="readonly" seleType="send">
+                        <input type="text" placeholder="请选择仓库签收时间" id="noreasonBackReceiptDate"  name="noreasonBackReceiptDate" datatype="*" class="input-text Wdate" onclick="WdatePicker({skin:'whyGreen',maxDate:'%y-%M-%d'})"  readonly="readonly" seleType="send">
                     </div>
                 </div>
                 <div class="row cl">

+ 1 - 1
watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/update_renewed.ftl

@@ -134,7 +134,7 @@
                         <strong>仓库签收时间</strong>
                     </div>
                     <div class="formControls col-4 col-sm-4">
-                        <input type="text" placeholder="请选择仓库签收时间" id="renewedBackReceiptDate"  name="renewedBackReceiptDate" datatype="*" class="input-text Wdate" onclick="WdatePicker({skin:'whyGreen',minDate:'%y-%M-%d'})"  readonly="readonly" seleType="send">
+                        <input type="text" placeholder="请选择仓库签收时间" id="renewedBackReceiptDate"  name="renewedBackReceiptDate" datatype="*" class="input-text Wdate" onclick="WdatePicker({skin:'whyGreen',maxDate:'%y-%M-%d'})"  readonly="readonly" seleType="send">
                     </div>
                 </div>
                 <div class="row cl">

+ 1 - 1
watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/update_repair.ftl

@@ -135,7 +135,7 @@
                         <strong>仓库签收时间</strong>
                     </div>
                     <div class="formControls col-4 col-sm-4">
-                        <input type="text" placeholder="请选择仓库签收时间" id="repairBackReceiptDate"  name="repairBackReceiptDate" datatype="*" class="input-text Wdate" onclick="WdatePicker({skin:'whyGreen',minDate:'%y-%M-%d'})"  readonly="readonly" seleType="send">
+                        <input type="text" placeholder="请选择仓库签收时间" id="repairBackReceiptDate"  name="repairBackReceiptDate" datatype="*" class="input-text Wdate" onclick="WdatePicker({skin:'whyGreen',maxDate:'%y-%M-%d'})"  readonly="readonly" seleType="send">
                     </div>
                 </div>
                 <div class="row cl">