jyy
2021-06-19 e522e4d40451b4e46ec79b3d8a3891899196f14f
zq-erp/src/main/java/com/matrix/system/activity/service/ActivitySignWriteoffService.java
@@ -1,5 +1,7 @@
package com.matrix.system.activity.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -10,25 +12,37 @@
import com.matrix.system.activity.dao.ActivitySignAwardSetDao;
import com.matrix.system.activity.dao.ActivitySignReceiveRecordDao;
import com.matrix.system.activity.dao.ActivitySignWriteoffDao;
import com.matrix.system.activity.dto.LogisticsSubmitDto;
import com.matrix.system.activity.dto.SignWriteoffDto;
import com.matrix.system.activity.dto.SignWriteoffListDto;
import com.matrix.system.activity.dto.WriteoffCodeSubmitDto;
import com.matrix.system.activity.entity.ActivitySignAwardSet;
import com.matrix.system.activity.entity.ActivitySignReceiveRecord;
import com.matrix.system.activity.entity.ActivitySignWriteoff;
import com.matrix.system.activity.vo.LogisticsVo;
import com.matrix.system.activity.vo.SignWriteoffListVo;
import com.matrix.system.activity.vo.SignWriteoffVo;
import com.matrix.system.activity.vo.ZjrVo;
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.common.bean.SystemDictionary;
import com.matrix.system.common.constance.AppConstance;
import com.matrix.system.common.dao.SystemDictionaryDao;
import com.matrix.system.hive.action.util.QueryUtil;
import com.matrix.system.hive.dao.SysVipInfoDao;
import com.matrix.system.shopXcx.api.service.WxShopLogisticsQueryService;
import com.matrix.system.shopXcx.bean.ShopActivities;
import com.matrix.system.shopXcx.bean.ShopDeliveryInfo;
import com.matrix.system.shopXcx.bean.ShopLogisticsInfo;
import com.matrix.system.shopXcx.dao.ShopActivitiesDao;
import com.matrix.system.shopXcx.dao.ShopDeliveryInfoDao;
import com.matrix.system.shopXcx.dao.ShopLogisticsInfoDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * @description 核销记录
@@ -48,6 +62,14 @@
   ActivitySignReceiveRecordDao activitySignReceiveRecordDao;
   @Autowired
   SysVipInfoDao sysVipInfoDao;
   @Autowired
   SystemDictionaryDao systemDictionaryDao;
   @Autowired
   ShopDeliveryInfoDao shopDeliveryInfoDao;
   @Autowired
   ShopLogisticsInfoDao shopLogisticsInfoDao;
   @Autowired
   private WxShopLogisticsQueryService wxShopLogisticsQueryService;
   public IPage<SignWriteoffListVo> findSignWriteoffList(Page<SignWriteoffListVo> page,
         SignWriteoffListDto signWriteoffListDto) {
@@ -79,6 +101,37 @@
           ShopActivities shopActivities = shopActivitiesDao.selectById(activitySignWriteoff.getActId());
           signWriteoffVo.setHdmc(shopActivities.getActName());
           signWriteoffVo.setHdbh(shopActivities.getActCode());
           //获取收货地址信息
           int awardWay = activitySignAwardSet.getAwardWay();
           if(ActivitySignAwardSet.AWARDWAY_TWO == awardWay) {
              ActivitySignWriteoff activitySignWriteoffLogistics = activitySignWriteoffDao.selectById(writeoffId);
              Long receiveId = activitySignWriteoffLogistics.getReceiveId();
              ActivitySignReceiveRecord activitySignReceiveRecordLogistic = activitySignReceiveRecordDao.selectById(receiveId);
              signWriteoffVo.setConsignee(activitySignReceiveRecordLogistic.getConsignee());
              signWriteoffVo.setConsigneePhone(activitySignReceiveRecordLogistic.getConsigneePhone());
              signWriteoffVo.setConsigneeAddress(activitySignReceiveRecordLogistic.getConsigneeAddress());
              //物流跟踪
              Integer logisticsId = activitySignWriteoffLogistics.getLogisticsId();
            ShopDeliveryInfo shopDeliveryInfo = shopDeliveryInfoDao.selectById(logisticsId);
            if(ObjectUtil.isNotEmpty(shopDeliveryInfo)){
               signWriteoffVo.setLogisticsNum(shopDeliveryInfo.getWaybillNo());
               signWriteoffVo.setLogisticsCompany(shopDeliveryInfo.getLogisticsCompany());
               //查看物流信息
               wxShopLogisticsQueryService.selectLogisticsInfo(shopDeliveryInfo);
               List<ShopLogisticsInfo> shopLogisticsInfos = shopLogisticsInfoDao.selectByDelieryId(shopDeliveryInfo.getId());
               if(CollUtil.isNotEmpty(shopLogisticsInfos)) {
                  ArrayList<LogisticsVo> logisticsVos = new ArrayList<>();
                  for(ShopLogisticsInfo shopLogistics : shopLogisticsInfos) {
                     LogisticsVo logisticsVo = new LogisticsVo();
                     logisticsVo.setContent(shopLogistics.getDescribe());
                     logisticsVo.setTimestamp(shopLogistics.getLogisticsTime());
                     logisticsVos.add(logisticsVo);
                  }
                  signWriteoffVo.setActivities(logisticsVos);
               }
            }
           }
        }
        result.putInMap("signWriteoffVo", signWriteoffVo);
        return result;
@@ -93,18 +146,45 @@
        String writeOffCode = writeoffCodeSubmitDto.getWriteOffCode();
        /**
         * 验证核销码是不是匹配
       * 只能核销一次
         * 更新核销记录
         * 更新领取记录
         */
        //验证核销码是不是匹配
        ActivitySignWriteoff activitySignWriteoff = activitySignWriteoffDao.selectById(writeoffId);
        if(ActivitySignWriteoff.STATE_ONE != activitySignWriteoff.getState()){
         return new AjaxResult(AjaxResult.STATUS_FAIL, "兑奖码已失效");
      }
        if(ObjectUtil.isNotEmpty(activitySignWriteoff)) {
           String writeoffCodeReal = activitySignWriteoff.getWriteoffCode();
           if(!writeoffCodeReal.equals(writeOffCode)) {
              return new AjaxResult(AjaxResult.STATUS_FAIL, "兑奖码无效");
           }
        }
        //更新核销记录
        //线下兑换失效
      Long awardId = activitySignWriteoff.getAwardId();
      ActivitySignAwardSet activitySignAwardSet = activitySignAwardSetDao.selectById(awardId);
      if(ActivitySignAwardSet.AWARDWAY_ONE == activitySignAwardSet.getAwardWay()
         || ActivitySignAwardSet.AWARDWAY_THREE == activitySignAwardSet.getAwardWay()){
         Date prizeStartTime = activitySignAwardSet.getPrizeStartTime();
         if(DateUtil.date().getTime() < prizeStartTime.getTime()){
            return new AjaxResult(AjaxResult.STATUS_FAIL, "兑奖还没开始呢!");
         }
         Date prizeEndTime = activitySignAwardSet.getPrizeEndTime();
         if(DateUtil.date().getTime() > prizeEndTime.getTime()){
            Long receiveId = activitySignWriteoff.getReceiveId();
            ActivitySignReceiveRecord activitySignReceiveRecord = activitySignReceiveRecordDao.selectById(receiveId);
            if(ObjectUtil.isNotEmpty(activitySignReceiveRecord)){
               activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_FIVE);
            }
            activitySignReceiveRecordDao.updateById(activitySignReceiveRecord);
            activitySignWriteoff.setState(ActivitySignWriteoff.STATE_FOUR);
            activitySignWriteoffDao.updateById(activitySignWriteoff);
            return new AjaxResult(AjaxResult.STATUS_FAIL, "已超出兑奖结束时间!");
         }
      }
      //更新核销记录
        activitySignWriteoff.setState(ActivitySignWriteoff.STATE_THREE);
        activitySignWriteoff.setWriteoffTime(new Date());
        activitySignWriteoff.setWriteoffUser(sysUsers.getSuName());
@@ -118,6 +198,56 @@
        return new AjaxResult(AjaxResult.STATUS_SUCCESS, "核销成功");
   }
   @Transactional
   public AjaxResult logisticsSubmit(LogisticsSubmitDto logisticsSubmitDto) {
      //设置用户公司ID
        QueryUtil.setQueryLimitCom(logisticsSubmitDto);
        SysUsers sysUsers = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
        Long writeoffId = logisticsSubmitDto.getWriteoffId();
        /**
         * 更新领取记录表的收货信息和状态
         * 更新核销记录表的状态和物流ID
         */
        ActivitySignWriteoff activitySignWriteoff = activitySignWriteoffDao.selectById(writeoffId);
        //新增一条物流信息
        ShopDeliveryInfo shopDeliveryInfo = new ShopDeliveryInfo();
        Long receiveId = activitySignWriteoff.getReceiveId();
        SystemDictionary systemDictionary = systemDictionaryDao.selectByCode(logisticsSubmitDto.getKdgs());
        if (ObjectUtil.isEmpty(systemDictionary)) {
            return new AjaxResult(AjaxResult.STATUS_FAIL, "没有找到物流公司信息!");
        }
        shopDeliveryInfo.setUserId(activitySignWriteoff.getUserId());
        shopDeliveryInfo.setReceiveId(receiveId);
        shopDeliveryInfo.setReceiveAddress(logisticsSubmitDto.getShdz());
        shopDeliveryInfo.setLogisticsCompany(systemDictionary.getName());
        shopDeliveryInfo.setLogisticsCompanyCode(systemDictionary.getCode());
        shopDeliveryInfo.setDeliveryWay("物流配送");
      shopDeliveryInfo.setLogisticsStatus(AppConstance.LOGISTICS_STATUS_OF_RECEIVE);
        shopDeliveryInfo.setWaybillNo(logisticsSubmitDto.getKddh());
        shopDeliveryInfo.setUpdateBy(sysUsers.getSuName());
        shopDeliveryInfo.setCreateBy(sysUsers.getSuName());
        shopDeliveryInfo.setDeliveryTime(new Date());
        shopDeliveryInfoDao.insert(shopDeliveryInfo);
      //更新核销记录
      activitySignWriteoff.setState(ActivitySignWriteoff.STATE_THREE);
      activitySignWriteoff.setWriteoffTime(new Date());
      activitySignWriteoff.setWriteoffUser(sysUsers.getSuName());
      activitySignWriteoff.setWriteoffUserid(sysUsers.getSuId());
      activitySignWriteoff.setLogisticsId(shopDeliveryInfo.getId());
      activitySignWriteoffDao.updateById(activitySignWriteoff);
      //更新领取记录
      ActivitySignReceiveRecord activitySignReceiveRecord = activitySignReceiveRecordDao.selectById(receiveId);
      activitySignReceiveRecord.setState(ActivitySignReceiveRecord.STATE_FOUR);
      activitySignReceiveRecord.setConsignee(logisticsSubmitDto.getShr());
      activitySignReceiveRecord.setConsigneeAddress(logisticsSubmitDto.getShdz());
      activitySignReceiveRecord.setConsigneePhone(logisticsSubmitDto.getLxdh());
      activitySignReceiveRecordDao.updateById(activitySignReceiveRecord);
        return new AjaxResult(AjaxResult.STATUS_SUCCESS, "发货成功");
   }