package com.matrix.system.hive.service.imp;
|
|
import com.matrix.core.constance.MatrixConstance;
|
import com.matrix.core.exception.GlobleException;
|
import com.matrix.core.pojo.PaginationVO;
|
import com.matrix.core.tools.DateUtil;
|
import com.matrix.core.tools.ModelUtils;
|
import com.matrix.core.tools.StringUtils;
|
import com.matrix.core.tools.WebUtil;
|
import com.matrix.system.api.vo.UserAchieveVo;
|
import com.matrix.system.common.bean.SysUsers;
|
import com.matrix.system.common.dao.SysUsersDao;
|
import com.matrix.system.constance.Dictionary;
|
import com.matrix.system.hive.bean.*;
|
import com.matrix.system.hive.dao.AchieveNewDao;
|
import com.matrix.system.hive.dao.ShoppingGoodsDao;
|
import com.matrix.system.hive.dao.SysBeauticianStateDao;
|
import com.matrix.system.hive.dao.SysProjUseDao;
|
import com.matrix.system.hive.plugin.util.CollectionUtils;
|
import com.matrix.system.hive.service.AchieveNewService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.util.*;
|
|
/**
|
* This field was generated by Zking.software.Codegen.
|
*
|
* @date 2019-03-24 16:01
|
*/
|
@Service("achieveNewService")
|
public class AchieveNewServiceImpl implements AchieveNewService {
|
|
@Autowired
|
private AchieveNewDao achieveNewDao;
|
|
@Autowired
|
private SysUsersDao shopstaffInfoDao;
|
|
@Autowired
|
SysBeauticianStateDao sysBeauticianStateDao;
|
|
@Autowired
|
private SysProjUseDao sysProjUseDao;
|
|
@Override
|
public int add(AchieveNew achieveNew) {
|
|
return achieveNewDao.insert(achieveNew);
|
|
}
|
|
@Override
|
public int batchAdd(List<AchieveNew> achieveNewList) {
|
int num = 0;
|
|
int c = 10000;
|
int size = achieveNewList.size() / c + 1;
|
for (int i = 0; i < size; i++) {
|
int begin = i * c;
|
int end = (i + 1) * c;
|
end = end >= achieveNewList.size() ? achieveNewList.size() : end;
|
List<AchieveNew> insertList = achieveNewList.subList(begin, end);
|
num += achieveNewDao.batchInsert(insertList);
|
}
|
return num;
|
|
}
|
|
@Override
|
public int modifyByMap(AchieveNew oldAchieveNew, AchieveNew newAchieveNew) {
|
|
try {
|
if (!ModelUtils.isModified(oldAchieveNew, newAchieveNew)) {
|
return 1;
|
}
|
} catch (NoSuchFieldException e1) {
|
e1.printStackTrace();
|
}
|
Map<String, Object> modifyMap = null;
|
try {
|
modifyMap = ModelUtils.comparePojo2Map(oldAchieveNew, newAchieveNew);
|
} catch (Exception e) {
|
throw new GlobleException("数据对比失败");
|
}
|
if (modifyMap.size() > 0) {
|
modifyMap.put("id", oldAchieveNew.getId());
|
achieveNewDao.updateByMap(modifyMap);
|
}
|
return 1;
|
}
|
|
@Override
|
public int modifyByModel(AchieveNew achieveNew) {
|
|
return achieveNewDao.updateByModel(achieveNew);
|
|
}
|
|
@Override
|
public int remove(List<Long> list) {
|
|
return achieveNewDao.deleteByIds(list);
|
|
}
|
|
@Override
|
public int removeById(Long id) {
|
|
return achieveNewDao.deleteById(id);
|
|
}
|
|
@Override
|
public int removeByModel(AchieveNew achieveNew) {
|
|
return achieveNewDao.deleteByModel(achieveNew);
|
|
}
|
|
@Override
|
public List<AchieveNew> findInPage(AchieveNew achieveNew, PaginationVO pageVo) {
|
|
return achieveNewDao.selectInPage(achieveNew, pageVo);
|
|
}
|
|
@Override
|
public List<AchieveNew> findByModel(AchieveNew achieveNew) {
|
|
return achieveNewDao.selectByModel(achieveNew);
|
|
}
|
|
@Override
|
public int findTotal(AchieveNew achieveNew) {
|
|
return achieveNewDao.selectTotalRecord(achieveNew);
|
|
}
|
|
@Override
|
public AchieveNew findById(Long id) {
|
|
return achieveNewDao.selectById(id);
|
|
}
|
|
@Override
|
public int modify(AchieveNew obje) {
|
|
return 0;
|
}
|
|
|
@Override
|
public void addAchieveByServiceOrder(SysProjServices projServices) {
|
List<AchieveNew> achieveNewList = new ArrayList<>();
|
List<SysBeauticianState> beauticianStateList = sysBeauticianStateDao.selectBySerIds(projServices.getId());
|
int size = beauticianStateList.size();
|
|
Long achieveId = projServices.getCreateStaffId();
|
|
for (SysBeauticianState beauticianState : beauticianStateList) {
|
// 是否第一次计算改美疗师
|
boolean isFirst = true;
|
SysProjUse projUse = sysProjUseDao.selectById(beauticianState.getPuseId());
|
AchieveNew achieveNew = new AchieveNew();
|
// 设置顾问id
|
achieveNew.setSaleId(achieveId);
|
achieveNew.setBeaultId(beauticianState.getStaffId());
|
achieveNew.setVipId(projServices.getVipId());
|
// 是否为赠送业绩
|
if (Dictionary.TAOCAN_SOURCE_ZS.equals(projUse.getSource())) {
|
achieveNew.setFreeConsume(projUse.getPrice());
|
} else {
|
achieveNew.setHisConsume(projUse.getPrice());
|
}
|
achieveNew.setT2(projUse.getSource());
|
if (projServices.getCreateTime() != null) {
|
achieveNew.setDatatime(projServices.getCreateTime());
|
} else {
|
achieveNew.setDatatime(new Date());
|
}
|
achieveNew.setOrderType(Dictionary.ORDER_TYPE_SERVICE);
|
achieveNew.setServiceOrderId(projServices.getId());
|
achieveNew.setOrderItemId(beauticianState.getId());
|
achieveNew.setShopId(projServices.getShopId());
|
achieveNew.setShoppingGoodsId(projUse.getProjId());
|
achieveNew.setNumberOfPeople(1D / size);
|
achieveNew.setProjNum(1);
|
if (StringUtils.isNotBlank(beauticianState.getExtract())) {
|
achieveNew.setProjPercentage(Double.parseDouble(beauticianState.getExtract()));
|
}
|
if (isFirst && beauticianState.getEndTime() != null && beauticianState.getBeginTime() != null) {
|
long timeSpace = beauticianState.getEndTime().getTime() - beauticianState.getBeginTime().getTime();
|
if (timeSpace > 0) {
|
achieveNew.setProjTime((int) (timeSpace / 1000 / 60));
|
} else {
|
achieveNew.setProjTime(1);
|
}
|
isFirst = false;
|
}
|
achieveNewList.add(achieveNew);
|
}
|
|
if (CollectionUtils.isNotEmpty(achieveNewList)) {
|
achieveNewDao.batchInsert(achieveNewList);
|
}
|
|
}
|
|
@Override
|
public void addAchaeveByOrder(SysOrder pageOrder) {
|
List<AchieveNew> achieveNewList = new ArrayList<>();
|
if (CollectionUtils.isNotEmpty(pageOrder.getItems())) {
|
for (SysOrderItem orderItem : pageOrder.getItems()) {
|
|
if (orderItem != null && CollectionUtils.isNotEmpty(orderItem.getAchaeveList())) {
|
|
for (AchieveNew achieveNew : orderItem.getAchaeveList()) {
|
if (achieveNew !=null && achieveNew.getT1()!=null) {
|
buildAchieve(pageOrder, orderItem, achieveNew);
|
// 新增美疗师业绩
|
achieveNewList.add(achieveNew);
|
}
|
}
|
} else {
|
// 如果该订单明细没有设置美疗师则单独设置顾问业绩
|
AchieveNew achieveNew = new AchieveNew();
|
// 顾问业绩等于收款金额
|
achieveNew.setT1(orderItem.getPayMoney() + "");
|
buildAchieve(pageOrder, orderItem, achieveNew);
|
// 新增顾问业绩
|
achieveNewList.add(achieveNew);
|
}
|
}
|
}
|
if (CollectionUtils.isNotEmpty(achieveNewList)) {
|
achieveNewDao.batchInsert(achieveNewList);
|
}
|
}
|
|
@Autowired
|
ShoppingGoodsDao shoppingGoodsDao;
|
|
private void buildAchieve(SysOrder pageOrder, SysOrderItem orderItem, AchieveNew achieveNew) {
|
achieveNew.setVipId(pageOrder.getVipId());
|
achieveNew.setSaleId(pageOrder.getStaffId());
|
|
if (pageOrder.getOrderTime() != null) {
|
achieveNew.setDatatime(pageOrder.getOrderTime());
|
} else if (pageOrder.getOrderTime() != null) {
|
achieveNew.setDatatime(pageOrder.getOrderTime());
|
} else {
|
achieveNew.setDatatime(new Date());
|
}
|
achieveNew.setOrderType(Dictionary.ORDER_TYPE_SEAL);
|
achieveNew.setOrderId(pageOrder.getId());
|
achieveNew.setOrderItemId(orderItem.getId());
|
achieveNew.setShopId(pageOrder.getShopId());
|
achieveNew.setShoppingGoodsId(orderItem.getGoodsId());
|
// 是否赠送
|
achieveNew.setT2(orderItem.getIsFree());
|
// 根据商品类型设置业绩类型
|
|
String goodType = shoppingGoodsDao.selectById(orderItem.getGoodsId()).getGoodType();
|
if (orderItem.getPayMethod().equals(Dictionary.PAY_TYPE_MOENY)
|
&& Dictionary.SHOPPING_GOODS_TYPE_XM.equals(goodType)) {
|
// 现金支付设置现金单次
|
achieveNew.setProjCash(Double.parseDouble(achieveNew.getT1()));
|
|
} else if (orderItem.getPayMethod().equals(Dictionary.PAY_TYPE_MOENY)
|
&& Dictionary.SHOPPING_GOODS_TYPE_JJCP.equals(goodType)) {
|
// 设置现金产品
|
achieveNew.setGoodsCash(Double.parseDouble(achieveNew.getT1()));
|
} else if (orderItem.getPayMethod().equals(Dictionary.PAY_TYPE_MOENY)
|
&& (Dictionary.SHOPPING_GOODS_TYPE_TC.equals(goodType)
|
|| Dictionary.SHOPPING_GOODS_TYPE_CZK.equals(goodType)
|
|| Dictionary.SHOPPING_GOODS_TYPE_ZHK.equals(goodType)
|
|| Dictionary.SHOPPING_GOODS_TYPE_TCK.equals(goodType))) {
|
// 设置卡项
|
achieveNew.setCardCash(Double.parseDouble(achieveNew.getT1()));
|
} else if (!orderItem.getPayMethod().equals(Dictionary.PAY_TYPE_CARD)) {
|
// 设置划扣金额
|
achieveNew.setConsume(Double.parseDouble(achieveNew.getT1()));
|
}
|
}
|
|
@Override
|
public List<AchieveNew> findDayFlow(AchieveNew achieveNew, PaginationVO pageVo) {
|
|
return achieveNewDao.findDayFlow(achieveNew, pageVo);
|
}
|
|
@Override
|
public int findDayFlowTotal(AchieveNew achieveNew, PaginationVO pageVo) {
|
return achieveNewDao.findDayFlowTotal(achieveNew, pageVo);
|
}
|
|
@Override
|
public List<AchieveNew> findSumDailyInfoNew(AchieveNew achieveNew, PaginationVO pageVo) {
|
|
return achieveNewDao.findSumDailyInfoNew(achieveNew, pageVo);
|
}
|
|
|
@Override
|
public void modifyAchieveTime(AchieveNew achieveNew) {
|
achieveNewDao.updateAchieveTime(achieveNew);
|
}
|
|
@Override
|
public List<AchieveNew> findVipConsumeStatisticsList(AchieveNew achieveNew, PaginationVO pageVo) {
|
return achieveNewDao.selectVipConsumeStatisticsList(achieveNew, pageVo);
|
}
|
|
@Override
|
public int findVipConsumeStatisticsTotal(AchieveNew achieveNew) {
|
return achieveNewDao.selectVipConsumeStatisticsTotal(achieveNew);
|
}
|
|
@Override
|
public UserAchieveVo findUserAchieveByTime(int type) {
|
SysUsers users = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
|
Calendar calendar = Calendar.getInstance();
|
Date startTime = calendar.getTime();
|
Date endTime = calendar.getTime();
|
switch (type) {
|
// 本日
|
case 1 :
|
break;
|
// 昨日
|
case 2:
|
startTime = DateUtil.previousNDate(startTime, 1);
|
endTime = startTime;
|
break;
|
// 本月
|
case 3:
|
calendar.set(Calendar.DAY_OF_MONTH, 1);
|
startTime = calendar.getTime();
|
break;
|
// 上月
|
case 4:
|
calendar.add(Calendar.MONTH, -1);
|
calendar.set(Calendar.DAY_OF_MONTH, 1);
|
startTime = calendar.getTime();
|
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
|
endTime = calendar.getTime();
|
break;
|
default:
|
break;
|
|
}
|
|
return achieveNewDao.selectUserAchieveByTime(startTime, endTime, users.getSuId());
|
}
|
}
|