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.app.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 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 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 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 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 findInPage(AchieveNew achieveNew, PaginationVO pageVo) { return achieveNewDao.selectInPage(achieveNew, pageVo); } @Override public List 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 achieveNewList = new ArrayList<>(); List 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()*beauticianState.getCount()); } else { achieveNew.setHisConsume(projUse.getPrice()*beauticianState.getCount()); } achieveNew.setT2(projUse.getSource()); achieveNew.setDatatime(new Date()); achieveNew.setOrderType(Dictionary.ORDER_TYPE_SERVICE); achieveNew.setServiceOrderId(projServices.getId()); achieveNew.setOrderItemId(beauticianState.getId()); achieveNew.setShopId(projServices.getShopId()); achieveNew.setCompanyId(projServices.getCompanyId()); 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 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); } } } } } if (CollectionUtils.isNotEmpty(achieveNewList)) { achieveNewDao.batchInsert(achieveNewList); } } @Autowired ShoppingGoodsDao shoppingGoodsDao; private void buildAchieve(SysOrder pageOrder, SysOrderItem orderItem, AchieveNew achieveNew) { if (Dictionary.ORDER_STATU_TK.equals(pageOrder.getStatu())) { achieveNew.setId(null); achieveNew.setProjPercentage(0 - achieveNew.getProjPercentage()); achieveNew.setT1((0 - Double.parseDouble(achieveNew.getT1())) + ""); } achieveNew.setVipId(pageOrder.getVipId()); achieveNew.setSaleId(pageOrder.getStaffId()); if (pageOrder.getPayTime() != null) { achieveNew.setDatatime(pageOrder.getPayTime()); } else { achieveNew.setDatatime(new Date()); } achieveNew.setOrderType(Dictionary.ORDER_TYPE_SEAL); achieveNew.setOrderId(pageOrder.getId()); achieveNew.setOrderItemId(orderItem.getId()); achieveNew.setShopId(pageOrder.getShopId()); achieveNew.setCompanyId(pageOrder.getCompanyId()); achieveNew.setShoppingGoodsId(orderItem.getGoodsId()); // 是否赠送 achieveNew.setT2(orderItem.getIsFree()); // 根据商品类型设置业绩类型 if (Dictionary.ACHIEVE_TYPE_CASH.equals(achieveNew.getT3())){ achieveNew.setCardCash(Double.parseDouble(achieveNew.getT1())); } else { // 设置划扣金额 achieveNew.setConsume(Double.parseDouble(achieveNew.getT1())); } } @Override public List 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 findSumDailyInfoNew(AchieveNew achieveNew, PaginationVO pageVo) { return achieveNewDao.findSumDailyInfoNew(achieveNew, pageVo); } @Override public void modifyAchieveTime(AchieveNew achieveNew) { achieveNewDao.updateAchieveTime(achieveNew); } @Override public List 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()); } @Override public List findOrderItemAchieve(Long orderId) { return achieveNewDao.selectOrderItemAchieveByOrderId(orderId); } }