|
@@ -1,24 +1,26 @@
|
|
|
package com.iamberry.rst.controllers.mq;
|
|
|
|
|
|
import com.iamberry.rst.controllers.sys.SysController;
|
|
|
-import com.iamberry.rst.core.cm.Repair;
|
|
|
-import com.iamberry.rst.core.cm.SalesOrder;
|
|
|
-import com.iamberry.rst.core.cm.SalesOrderItem;
|
|
|
-import com.iamberry.rst.core.cm.StoreInfo;
|
|
|
+import com.iamberry.rst.core.address.City;
|
|
|
+import com.iamberry.rst.core.address.District;
|
|
|
+import com.iamberry.rst.core.address.Province;
|
|
|
+import com.iamberry.rst.core.cm.*;
|
|
|
import com.iamberry.rst.core.order.EfastOrder;
|
|
|
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.Relu;
|
|
|
-import com.iamberry.rst.faces.cm.RepairService;
|
|
|
-import com.iamberry.rst.faces.cm.SalesOrderService;
|
|
|
-import com.iamberry.rst.faces.cm.StoreInfoService;
|
|
|
+import com.iamberry.rst.faces.address.AddressService;
|
|
|
+import com.iamberry.rst.faces.cm.*;
|
|
|
import com.iamberry.rst.faces.order.EfastOrderService;
|
|
|
import com.iamberry.rst.faces.product.ProductService;
|
|
|
import com.iamberry.rst.faces.sms.MessageService;
|
|
|
import com.iamberry.rst.faces.sms.SmsService;
|
|
|
import com.iamberry.rst.faces.sys.SysService;
|
|
|
+import com.iamberry.rst.service.cm.mapper.CustomerInfoMapper;
|
|
|
import com.iamberry.rst.service.sms.mapper.MessageMapper;
|
|
|
+import com.iamberry.rst.utils.KuaiDi100;
|
|
|
import com.iamberry.wechat.tools.DateTimeUtil;
|
|
|
import com.iamberry.wechat.tools.ResponseJson;
|
|
|
import net.sf.json.JSONArray;
|
|
@@ -32,14 +34,15 @@ import org.springframework.context.annotation.Lazy;
|
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
+import java.text.MessageFormat;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Calendar;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
+import java.util.*;
|
|
|
import java.util.concurrent.locks.Lock;
|
|
|
import java.util.concurrent.locks.ReentrantLock;
|
|
|
|
|
|
+import static com.iamberry.rst.util.SmsConfig.*;
|
|
|
+import static com.iamberry.rst.utils.KuaiDi100.replace;
|
|
|
+
|
|
|
|
|
|
@Component(value="mqTask")
|
|
|
@Lazy(false)
|
|
@@ -59,6 +62,16 @@ public class MQTask implements InitializingBean {
|
|
|
private SysService sysService;
|
|
|
@Autowired
|
|
|
private RepairService repairService;
|
|
|
+ @Autowired
|
|
|
+ private AddressService addressService;
|
|
|
+ @Autowired
|
|
|
+ private RenewedService renewedService;
|
|
|
+ @Autowired
|
|
|
+ private ReissueService reissueService;
|
|
|
+ @Autowired
|
|
|
+ private CustomerInfoMapper customerInfoMapper;
|
|
|
+
|
|
|
+
|
|
|
|
|
|
private Object lock = new Object();
|
|
|
private Object lock1 = new Object();
|
|
@@ -222,7 +235,7 @@ public class MQTask implements InitializingBean {
|
|
|
}
|
|
|
|
|
|
/**客诉系统 自动追踪发货信息**/
|
|
|
- @Scheduled(cron = "0 0/1 * * * ?")//每三分钟执行一次
|
|
|
+ @Scheduled(cron = "0 0/30 * * * ?")//每30分钟执行一次
|
|
|
public void synchronousDelivery()throws Exception{
|
|
|
/*同步维修订单*/
|
|
|
Repair repair = new Repair();
|
|
@@ -231,17 +244,181 @@ public class MQTask implements InitializingBean {
|
|
|
if(listRepair.size() > 0){
|
|
|
for(Repair re:listRepair){
|
|
|
if(re.getSalesDealCode() != null){
|
|
|
- EfastOrder efastOrder = efastOrderService.getOrderInfoFromEfast(re.getSalesDealCode());
|
|
|
- /*if (efastOrder.getOrderStatus() == 1){//1代表已发货 发货状态: 0(未发货)1(已发货,即已扫描出库)3(备货中)
|
|
|
-
|
|
|
- }*/
|
|
|
+ EfastOrder efastOrder = efastOrderService.getFromEfastOrderInfo(re.getSalesDealCode());
|
|
|
+ if (efastOrder.getOrderStatus() == 1){//1代表已发货 发货状态: 0(未发货)1(已发货,即已扫描出库)3(备货中)
|
|
|
+ re.setRepairSendName(efastOrder.getOrderAddressName());
|
|
|
+ re.setRepairSendTel(efastOrder.getOrderAddressTel());
|
|
|
+ //查询省市县id
|
|
|
+ Map<String,String> pccMap = provincesCitiesCounties(efastOrder);
|
|
|
+ re.setProvinceNumber(Integer.valueOf(pccMap.get("provinceId")));
|
|
|
+ re.setCityNumber(Integer.valueOf(pccMap.get("cityId")));
|
|
|
+ re.setAreaNumber(Integer.valueOf(pccMap.get("districtId")));
|
|
|
+ re.setRepairSendMergeAddress(pccMap.get("province")+"-"+pccMap.get("city")+"-"+pccMap.get("district"));
|
|
|
+ re.setRepairSendAddress(efastOrder.getOrderAddress());
|
|
|
+ re.setRepairSendLogisticsCompany(efastOrder.getOrderPostFirm());
|
|
|
+ re.setRepairSendLogisticsNo(efastOrder.getOrderPostNum());
|
|
|
+ re.setRepairSendStatus(2);
|
|
|
+ Integer msg = repairService.updateRepairInfo(re,null,null);
|
|
|
+ if(msg > 0){
|
|
|
+ //发送维修发货通知短信
|
|
|
+ sendSMS("<维修业务>",efastOrder.getOrderPostFirm(),efastOrder.getOrderPostNum(),re.getCustomerId(),"15207170059");
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/*同步换货订单*/
|
|
|
-
|
|
|
+ Renewed renewed = new Renewed();
|
|
|
+ renewed.setRenewedSendStatus(1);
|
|
|
+ List<Renewed> listRenewed = renewedService.listSynchronizingRenewed(renewed);
|
|
|
+ if(listRenewed.size() > 0){
|
|
|
+ for(Renewed re:listRenewed){
|
|
|
+ if(re.getSalesDealCode() != null){
|
|
|
+ EfastOrder efastOrder = efastOrderService.getFromEfastOrderInfo(re.getSalesDealCode());
|
|
|
+ if (efastOrder.getOrderStatus() == 1){//1代表已发货 发货状态: 0(未发货)1(已发货,即已扫描出库)3(备货中)
|
|
|
+ re.setRenewedSendName(efastOrder.getOrderAddressName());
|
|
|
+ re.setRenewedSendTel(efastOrder.getOrderAddressTel());
|
|
|
+ //查询省市县id
|
|
|
+ Map<String,String> pccMap = provincesCitiesCounties(efastOrder);
|
|
|
+ re.setProvinceNumber(Integer.valueOf(pccMap.get("provinceId")));
|
|
|
+ re.setCityNumber(Integer.valueOf(pccMap.get("cityId")));
|
|
|
+ re.setAreaNumber(Integer.valueOf(pccMap.get("districtId")));
|
|
|
+ re.setRenewedSendMergeAddress(pccMap.get("province")+"-"+pccMap.get("city")+"-"+pccMap.get("district"));
|
|
|
+ re.setRenewedSendAddress(efastOrder.getOrderAddress());
|
|
|
+ re.setRenewedSendLogisticsCompany(efastOrder.getOrderPostFirm());
|
|
|
+ re.setRenewedSendLogisticsNo(efastOrder.getOrderPostNum());
|
|
|
+ re.setRenewedSendStatus(2);
|
|
|
+ Integer msg = renewedService.updateRenewedInfo(re,null,null);
|
|
|
+ if(msg > 0){
|
|
|
+ //发送换货发货通知短信
|
|
|
+ sendSMS("<换货业务>",efastOrder.getOrderPostFirm(),efastOrder.getOrderPostNum(),re.getCustomerId(),"15207170059");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
/*同步补发订单*/
|
|
|
+ Reissue reissue = new Reissue();
|
|
|
+ reissue.setReissueSendStatus(1);
|
|
|
+ List<Reissue> listReissue = reissueService.listSynchronizingReissue(reissue);
|
|
|
+ if(listReissue.size() > 0){
|
|
|
+ for(Reissue re:listReissue){
|
|
|
+ if(re.getSalesDealCode() != null){
|
|
|
+ EfastOrder efastOrder = efastOrderService.getFromEfastOrderInfo(re.getSalesDealCode());
|
|
|
+ if (efastOrder.getOrderStatus() == 1){//1代表已发货 发货状态: 0(未发货)1(已发货,即已扫描出库)3(备货中)
|
|
|
+ re.setReissueSendName(efastOrder.getOrderAddressName());
|
|
|
+ re.setReissueSendTel(efastOrder.getOrderAddressTel());
|
|
|
+ //查询省市县id
|
|
|
+ Map<String,String> pccMap = provincesCitiesCounties(efastOrder);
|
|
|
+ re.setProvinceNumber(Integer.valueOf(pccMap.get("provinceId")));
|
|
|
+ re.setCityNumber(Integer.valueOf(pccMap.get("cityId")));
|
|
|
+ re.setAreaNumber(Integer.valueOf(pccMap.get("districtId")));
|
|
|
+ re.setReissueSendMergeAddress(pccMap.get("province")+"-"+pccMap.get("city")+"-"+pccMap.get("district"));
|
|
|
+ re.setReissueSendAddress(efastOrder.getOrderAddress());
|
|
|
+ re.setReissueSendLogisticsCompany(efastOrder.getOrderPostFirm());
|
|
|
+ re.setReissueSendLogisticsNo(efastOrder.getOrderPostNum());
|
|
|
+ re.setReissueSendStatus(2);
|
|
|
+ Integer msg = reissueService.updateReissueInfo(re);
|
|
|
+ if(msg > 0){
|
|
|
+ //发送补发发货通知短信
|
|
|
+ sendSMS("<补发业务>",efastOrder.getOrderPostFirm(),efastOrder.getOrderPostNum(),re.getCustomerId(),"15207170059");
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 发送发货通知
|
|
|
+ * @param relation 维修 换货 补发
|
|
|
+ * @param postFirm 物流公司代码
|
|
|
+ * @param postNum 物流单号
|
|
|
+ * @param customerId 客诉主键id
|
|
|
+ * @param tel 手机号
|
|
|
+ */
|
|
|
+ public void sendSMS(String relation,String postFirm,String postNum,Integer customerId,String tel){
|
|
|
+ if(postFirm != null && !postFirm.equals("") && postNum != null && !postNum.equals("")
|
|
|
+ && customerId > 0 && !tel.equals("")){
|
|
|
+ postFirm = KuaiDi100.replace(postFirm);
|
|
|
+ if(!postFirm.equals("")){
|
|
|
+ ProductType productType = customerInfoMapper.getcompanyAffiliation(customerId);
|
|
|
+ if(productType != null){
|
|
|
+ String rejected_text = "";
|
|
|
+ //1:美国watero; 2:上朵电动牙刷 3:优尼雅净水机
|
|
|
+ if (productType.getTypeCompany() == 1){
|
|
|
+ rejected_text = RELATION_SEND_WATERO;
|
|
|
+ }
|
|
|
+ if (productType.getTypeCompany() == 2){
|
|
|
+ rejected_text = RELATION_SEND_SHANGDUO;
|
|
|
+ }
|
|
|
+ if (productType.getTypeCompany() == 3){
|
|
|
+ rejected_text = RELATION_SEND_YULIA;
|
|
|
+ }
|
|
|
+ String text = MessageFormat.format(rejected_text, relation,postFirm+","+postNum);
|
|
|
+ smsService.sendOtherCMS(tel,text);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询省市县id
|
|
|
+ * @param
|
|
|
+ */
|
|
|
+ public Map<String,String> provincesCitiesCounties(EfastOrder efastOrder){
|
|
|
+ Map<String,String> map = new HashMap<String, String>();
|
|
|
+ String province = "";
|
|
|
+ String city = "";
|
|
|
+ String zone = "";
|
|
|
+ //省
|
|
|
+ if(efastOrder.getOrderProvince().substring(efastOrder.getOrderProvince().length() - 1,efastOrder.getOrderProvince().length()).equals("省")){
|
|
|
+ province = efastOrder.getOrderProvince().substring(0,efastOrder.getOrderProvince().length() - 1);
|
|
|
+ }else{
|
|
|
+ province = efastOrder.getOrderProvince();
|
|
|
+ }
|
|
|
+ Province provinceinfo = new Province();
|
|
|
+ provinceinfo.setProvince(province);
|
|
|
+ List<Province> provinceList = addressService.listProvince(provinceinfo);
|
|
|
+ if(provinceList.size() < 1){
|
|
|
+ provinceinfo.setProvince(null);
|
|
|
+ provinceList = addressService.listProvince(provinceinfo);
|
|
|
+ }
|
|
|
+ map.put("provinceId",String.valueOf(provinceList.get(0).getProvinceId()));
|
|
|
+ map.put("province",provinceList.get(0).getProvince());
|
|
|
+
|
|
|
+
|
|
|
+ //市
|
|
|
+ city = efastOrder.getOrderCity().substring(0,efastOrder.getOrderCity().length() - 1);
|
|
|
+ City cityInfo = new City();
|
|
|
+ cityInfo.setCity(city);
|
|
|
+ List<City> cityList = addressService.listCity(cityInfo);
|
|
|
+ if(cityList.size() < 1){
|
|
|
+ cityInfo.setCity(null);
|
|
|
+ cityInfo.setProvinceId(provinceList.get(0).getProvinceId());
|
|
|
+ cityList = addressService.listCity(cityInfo);
|
|
|
+ }
|
|
|
+ map.put("cityId",String.valueOf(cityList.get(0).getCityId()));
|
|
|
+ map.put("city",cityList.get(0).getCity());
|
|
|
+
|
|
|
+ //区
|
|
|
+ zone = efastOrder.getOrderArea().substring(0,efastOrder.getOrderArea().length() - 1);
|
|
|
+ District district = new District();
|
|
|
+ district.setDistrict(zone);
|
|
|
+ List<District> districtList = addressService.listDistrict(district);
|
|
|
+ if(districtList.size() < 1){
|
|
|
+ district.setDistrict(null);
|
|
|
+ district.setCityId(cityList.get(0).getCityId());
|
|
|
+ districtList = addressService.listDistrict(district);
|
|
|
+ }
|
|
|
+ map.put("districtId",String.valueOf(districtList.get(0).getDistrictId()));
|
|
|
+ map.put("district",districtList.get(0).getDistrict());
|
|
|
+ return map;
|
|
|
}
|
|
|
}
|