| package com.matrix.system.hive.service.imp; | 
|   | 
| import com.matrix.core.exception.GlobleException; | 
| import com.matrix.core.pojo.PaginationVO; | 
| import com.matrix.core.tools.ModelUtils; | 
| import com.matrix.core.tools.StringUtils; | 
| 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.ArrayList; | 
| import java.util.Date; | 
| import java.util.List; | 
| import java.util.Map; | 
|   | 
| /** | 
|  * 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); | 
|     } | 
|   | 
|   | 
| } |