ContractServiceImpl.java 25.5 KB
Newer Older
manxiaoqiang committed
1 2 3 4 5 6
package common.service.impl;

import com.google.api.ads.adwords.lib.AdWordsProductFrameworkModule;
import common.model.*;
import common.repository.*;
import common.service.ContractService;
manxiaoqiang committed
7 8 9 10 11
import common.service.UserService;
import dic.ContractStatusEnum;
import dic.ContractTypeEnum;
import dic.RoleEnum;
import dic.RoleTypeEnum;
manxiaoqiang committed
12 13
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
manxiaoqiang committed
14 15
import tkio.model.Account;
import tkio.model.IncrementFlow;
manxiaoqiang committed
16
import tkio.model.PackageType;
manxiaoqiang committed
17 18
import tkio.repository.AccountRepository;
import tkio.repository.IncrementFlowRepository;
manxiaoqiang committed
19
import tkio.repository.PackageTypeRepository;
manxiaoqiang committed
20
import tkio.service.AccountService;
manxiaoqiang committed
21 22 23
import tkio.service.TkioAccountService;
import userio.service.AccountIOService;
import userio.service.IOAccountService;
manxiaoqiang committed
24
import util.DateUtil;
manxiaoqiang committed
25 26
import util.ResultModel;
import util.ResultStatus;
manxiaoqiang committed
27 28
import util.ValidateUtil;

manxiaoqiang committed
29
import java.math.BigDecimal;
manxiaoqiang committed
30
import java.math.BigInteger;
manxiaoqiang committed
31
import java.util.*;
manxiaoqiang committed
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

/**
 * Created by mxq on 2018/1/16.
 */
@Service
public class ContractServiceImpl implements ContractService{

    @Autowired
    ContractRepository contractRepository;
    @Autowired
    ContractBodyRepository contractBodyRepository;
    @Autowired
    Account4WebRepository account4WebRepository;
    @Autowired
    PackageTypeRepository packageTypeRepository;
    @Autowired
    PriceLevelMoneyRepository priceLevelMoneyRepository;
    @Autowired
    UserRepository userRepository;
manxiaoqiang committed
51 52 53 54
    @Autowired
    ContractChangeRepository contractChangeRepository;
    @Autowired
    ContractMoneyRepository contractMoneyRepository;
manxiaoqiang committed
55 56
    @Autowired
    AccountService accountService;
manxiaoqiang committed
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
    @Autowired
    AccountIOService accountIOService;
    @Autowired
    IOAccount4WebRepository ioAccount4WebRepository;
    @Autowired
    ContractIncrementRepository contractIncrementRepository;
    @Autowired
    TkioAccountService tkioAccountService;
    @Autowired
    IOAccountService ioAccountService;
    @Autowired
    AccountRepository accountRepository;
    @Autowired
    UserService userService;
    @Autowired
    IncrementFlowRepository incrementFlowRepository;
manxiaoqiang committed
73 74

    @Override
manxiaoqiang committed
75
    public Map<String, Object> checkAccount(String email, String platfrom) {
manxiaoqiang committed
76
        Map<String, Object> map = new HashMap<>();
manxiaoqiang committed
77 78 79 80 81 82 83 84
        Account4Web account4Web = null;
        IOAccount4Web ioAccount4Web = null;
        if("tkio".equals(platfrom)){
            account4Web = account4WebRepository.findByEmail(email);
        }else if("io".equals(platfrom)){
            ioAccount4Web = ioAccount4WebRepository.findByEmail(email);
        }
        if(null == account4Web && null == ioAccount4Web){
manxiaoqiang committed
85 86
            map.put("result", 0);
        }else{
manxiaoqiang committed
87
            BigInteger integer = contractRepository.countNumByEmail(email,platfrom);
manxiaoqiang committed
88
            map.put("result", 1);
manxiaoqiang committed
89
            map.put("company", null == account4Web ? ioAccount4Web.getCompany() : account4Web.getCompany());
manxiaoqiang committed
90
            map.put("num", integer.intValue());
manxiaoqiang committed
91 92 93 94 95 96
            Contract contract = contractRepository.findByPlatformAndEmailLimitVaild(platfrom, email);
            if(null == contract){
                map.put("status", false);
            }else{
                map.put("status", true);
            }
manxiaoqiang committed
97
        }
manxiaoqiang committed
98

manxiaoqiang committed
99 100 101
        return map;
    }

manxiaoqiang committed
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
    @Override
    public Boolean checkTime(String email, String platfrom, String type, String product) {
        Boolean flag = false;
        if(ContractTypeEnum.MAIN.getKey().equals(type)){
            Contract contract = contractRepository.findByPlatformAndEmailLimit1(platfrom, email, type);
            if (null == contract){
                flag = true;
            }else{
                String beforeDay = DateUtil.getBeforeDays(180);
                if(beforeDay.compareTo(contract.getEndDate()) > 0){
                    flag = true;
                }
            }
        }else{
            ContractIncrement increment = contractIncrementRepository.findByCode(product);
            Contract contract = contractRepository.findByPlatformAndEmailAndPricelevelLimit1(platfrom, email, type, increment.getId());
            if (null == contract){
                flag = true;
            }else{
                String beforeDay = DateUtil.getBeforeDays(180);
                String endDate = contract.getEndDate() == null ? contract.getDs() : contract.getEndDate();
                if(beforeDay.compareTo(endDate) > 0){
                    flag = true;
                }
            }
        }
        return flag;
    }

manxiaoqiang committed
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
    @Override
    public List<ContractBody> findBody() {
        return contractBodyRepository.findAll();
    }

    @Override
    public String getContractCode(String code) {
        BigInteger integer = contractRepository.countNumByDs(DateUtil.getBeforeDays(0));
        String lastCode = "";
        if(integer.intValue() < 9){
            lastCode = "0" + (integer.intValue() + 1);
        }else{
            lastCode = "" + (integer.intValue() + 1);
        }
        String re = code + "-" + DateUtil.getDays2(0) + lastCode;
        return re;
    }

    @Override
manxiaoqiang committed
150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165
    public List findSetmeal() {
        List list = new ArrayList();
        List<PackageType> packageTypeList = packageTypeRepository.findAll();
        for(PackageType p : packageTypeList){
            p.setType("main");
            list.add(p);
        }
        List<ContractIncrement> increments = contractIncrementRepository.findAll();

        list.addAll(increments);
        return list;
    }

    @Override
    public List<ContractIncrement> findIncrement() {
        return null;
manxiaoqiang committed
166 167 168 169
    }

    @Override
    public Double getRebat(String product, Integer level, Long money) {
manxiaoqiang committed
170 171 172 173 174 175 176 177
        Double rebat = 1d;
        try{
            PriceLevelMoney levelMoney = priceLevelMoneyRepository.getOne(product, level);
            rebat = money * 1.0  / levelMoney.getMoney();
        } catch (Exception e){
            e.printStackTrace();
        }
        return rebat;
manxiaoqiang committed
178 179 180 181 182 183
    }

    @Override
    public List<User> getSales() {
        return userRepository.findSales();
    }
manxiaoqiang committed
184 185 186 187 188 189 190 191 192 193 194 195 196 197 198
    @Override
    public Contract build(Contract contract) {
        User user = userRepository.findByEmail(contract.getSaleName());
        if(null != user){
            contract.setSale(user.getId());
        }
        Account account = accountRepository.findByEmail(contract.getEmail());
        contract.setCustomerBody(account.getCompany());
        contract.setType("increment");
        contract.setPlatform("tkio");
        ContractIncrement contractIncrement = contractIncrementRepository.findByCode(contract.getPriceLevelName());
        contract.setPriceLevel(contractIncrement.getId());
        Contract contract1 = create(null, contract);
        return contract1;
    }
manxiaoqiang committed
199 200
    @Override
    public Contract create(User loginUser, Contract resource) {
manxiaoqiang committed
201 202 203 204 205 206
        String contractCode = getContractCode(resource.getMyBodyCode());

        if(!contractCode.equals(resource.getContractCode())){
            resource.setContractCode(contractCode);
        }

manxiaoqiang committed
207 208
        resource.setPayMoney(0L);
        resource.setInvoice(0L);
manxiaoqiang committed
209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229
        Long extraFlow = resource.getExtraFlow();
        if(!(extraFlow.longValue() == 0)){
            if(resource.getPlatform().equals("tkio")){
                IncrementFlow  flow = new IncrementFlow();
                Account account = accountRepository.findByEmail(resource.getEmail());
                flow.setAccount(account.getId());
                flow.setFlow(extraFlow);
                flow.setEndDate(resource.getEndDate());
                flow.setStartDate(resource.getStartDate());
                flow.setContractCode(resource.getContractCode());
                incrementFlowRepository.save(flow);
            }
        }
        if(resource.getType().equals("main")) {
            if (DateUtil.getBeforeDays(0).compareTo(resource.getStartDate()) < 0) {
                resource.setDs(DateUtil.getBeforeDays(0));
                resource.setStatus("wait");
            } else {
                resource.setDs(DateUtil.getBeforeDays(0));
                resource.setStatus("executing");
            }
manxiaoqiang committed
230 231
        }else{
            resource.setDs(DateUtil.getBeforeDays(0));
manxiaoqiang committed
232
            resource.setStatus("wait");
manxiaoqiang committed
233
        }
manxiaoqiang committed
234
        Double rebat = getRebat(resource.getProduct(), resource.getPriceLevel().intValue(), resource.getMoney());
manxiaoqiang committed
235 236 237 238
        BigDecimal bg = new BigDecimal(rebat);
        double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
        resource.setRebate(f1);

manxiaoqiang committed
239 240 241
        if(null != loginUser) {
            resource.setCreateAccount(loginUser.getId());
        }
manxiaoqiang committed
242
        resource.setCreateTime(new Date());
manxiaoqiang committed
243 244

        //同步修改trackingio的数据
manxiaoqiang committed
245
        if(resource.getPlatform().equals("tkio") && resource.getType().equals("main")){
manxiaoqiang committed
246 247
            accountService.update(resource);
        }
manxiaoqiang committed
248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272
        if(resource.getPlatform().equals("io") && resource.getType().equals("main")){
            accountIOService.update(resource);
        }

        if(resource.getType().equals(ContractTypeEnum.MAIN.getKey())
                || (resource.getType().equals(ContractTypeEnum.INCREMENT.getKey()) && resource.getPriceLevel().equals(1L))){
            List<Contract> contractList = contractRepository.findByPlatformAndEmail(resource.getPlatform(), resource.getEmail(),resource.getType());
            if(ValidateUtil.isValid(contractList)){
                List<Contract> list = new ArrayList<>();
                for(Contract contract : contractList){
                    if(contract.getType().equals(ContractTypeEnum.MAIN.getKey())
                            || (contract.getType().equals(ContractTypeEnum.INCREMENT.getKey()) && contract.getPriceLevel().equals(1L))){

                        if(contract.getStatus().equals(ContractStatusEnum.EXECUTING.getKey())
                                || contract.getStatus().equals(ContractStatusEnum.WAIT.getKey())){
                            contract.setStatus(ContractStatusEnum.CANCEL.getKey());
                        }
                        list.add(contract);
                    }

                }
                contractRepository.save(contractList);
            }
        }

manxiaoqiang committed
273 274 275 276 277
        return contractRepository.save(resource);
    }

    @Override
    public Contract update(User loginUser, Contract resource) {
manxiaoqiang committed
278 279
        Map<Long, String> packageMap = getPackageMap();
        Map<Long, String> saleMap = getSaleMap();
manxiaoqiang committed
280 281 282 283 284 285 286 287 288 289 290
        Contract contract = contractRepository.findOne(resource.getId());

        ContractChange cc = new ContractChange();
        cc.setType("update");
        cc.setUser(loginUser.getId());
        cc.setDs(DateUtil.getBeforeDays(0));
        cc.setContent("");
        cc.setEmail(contract.getEmail());
        cc.setCompany(contract.getCustomerBody());
        cc.setContractCode(contract.getContractCode());

manxiaoqiang committed
291

manxiaoqiang committed
292
        if(!resource.getStartDate().equals(contract.getStartDate())){
manxiaoqiang committed
293
            cc.setContent(cc.getContent() + "开始时间变更 : " + contract.getStartDate() + "-->" + resource.getStartDate());
manxiaoqiang committed
294
            contract.setStartDate(resource.getStartDate());
manxiaoqiang committed
295
            if(DateUtil.getBeforeDays(0).compareTo(resource.getStartDate()) < 0){
manxiaoqiang committed
296 297 298 299 300 301
                contract.setStatus("wait");
            }else{
                contract.setStatus("executing");
            }
        }
        if(!resource.getEndDate().equals(contract.getEndDate())){
manxiaoqiang committed
302
            cc.setContent(cc.getContent() + "   结束时间变更 : " + contract.getEndDate() + "-->" + resource.getEndDate());
manxiaoqiang committed
303 304 305 306
            contract.setEndDate(resource.getEndDate());
        }

        boolean newRebat = false;
manxiaoqiang committed
307 308 309 310 311 312
        if(contract.getType().equals(ContractTypeEnum.MAIN.getKey())){
            if(!resource.getPriceLevel().equals(contract.getPriceLevel())){
                cc.setContent(cc.getContent() +  "  套餐变更:" + packageMap.get(contract.getPriceLevel()) + "-->" + packageMap.get(resource.getPriceLevel()));
                newRebat = true;
                contract.setPriceLevel(resource.getPriceLevel());
            }
manxiaoqiang committed
313 314 315
        }

        if(!resource.getMoney().equals(contract.getMoney())){
manxiaoqiang committed
316
            cc.setContent(cc.getContent() + "   金额变更: " + contract.getMoney() + "-->" + resource.getMoney());
manxiaoqiang committed
317 318 319 320 321
            newRebat = true;
            contract.setMoney(resource.getMoney());
        }

        if(!resource.getSale().equals(contract.getSale())){
manxiaoqiang committed
322
            cc.setContent(cc.getContent() + "销售变更:" + saleMap.get(contract.getSale()) + "-->" + saleMap.get(resource.getSale()));
manxiaoqiang committed
323 324 325 326 327 328 329 330 331
            contract.setSale(resource.getSale());
        }

        if(newRebat){
            Double rebat = getRebat(contract.getProduct(), contract.getPriceLevel().intValue(), contract.getMoney());
            BigDecimal bg = new BigDecimal(rebat);
            double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
            contract.setRebate(f1);
        }
manxiaoqiang committed
332
        cc.setPlatform(contract.getPlatform());
manxiaoqiang committed
333 334
        contractChangeRepository.save(cc);

manxiaoqiang committed
335
        //同步修改trackingio的数据
manxiaoqiang committed
336
        if(contract.getPlatform().equals("tkio") && resource.getType().equals("main")){
manxiaoqiang committed
337 338
            accountService.update(contract);
        }
manxiaoqiang committed
339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365
        if(resource.getPlatform().equals("io") && resource.getType().equals("main")){
            accountIOService.update(resource);
        }

        if(resource.getPlatform().equals("tkio")){
            IncrementFlow flow = incrementFlowRepository.findOne(resource.getContractCode());
            if(null != flow){
                flow.setEndDate(resource.getEndDate());
                flow.setStartDate(resource.getStartDate());
                if(contract.getExtraFlow() != resource.getExtraFlow() ){
                    flow.setFlow(resource.getExtraFlow());
                    incrementFlowRepository.save(flow);
                }
            } else if(resource.getExtraFlow().longValue() > 0){
                IncrementFlow  flow1 = new IncrementFlow();
                Account account = accountRepository.findByEmail(resource.getEmail());
                flow1.setAccount(account.getId());
                flow1.setFlow(resource.getExtraFlow());
                flow1.setEndDate(resource.getEndDate());
                flow1.setStartDate(resource.getStartDate());
                flow1.setContractCode(resource.getContractCode());
                incrementFlowRepository.save(flow1);
            }

        }
        contract.setExtraFlow(resource.getExtraFlow());

manxiaoqiang committed
366
        return contractRepository.save(contract);
manxiaoqiang committed
367 368 369
    }

    @Override
manxiaoqiang committed
370
    public List<Contract> findAll(User loginAccount, String startDate, String endDate, String platfrom) {
manxiaoqiang committed
371
        List<Contract> result = new ArrayList<>();
manxiaoqiang committed
372
        List<User> sales = userRepository.findAll();
manxiaoqiang committed
373 374 375 376 377 378 379 380 381 382 383 384 385
        Map<Long, String> saleMap = new HashMap<>();
        if(ValidateUtil.isValid(sales)){
            for(User s: sales){
                saleMap.put(s.getId(), s.getName());
            }
        }
        List<PackageType> typeList = packageTypeRepository.findAll();
        Map<Long, String> typeMap = new HashMap<>();
        if(ValidateUtil.isValid(typeList)){
            for(PackageType s: typeList){
                typeMap.put(s.getId(), s.getPackageName());
            }
        }
manxiaoqiang committed
386 387 388 389 390 391 392 393 394 395 396 397
        List<ContractIncrement> incrementList = contractIncrementRepository.findAll();
        Map<Long, String> incremenMap = new HashMap<>();
        if(ValidateUtil.isValid(incrementList)){
            for(ContractIncrement s: incrementList){
                incremenMap.put(s.getId(), s.getPackageName());
            }
        }
        List<Contract> contractList = null;
        if(loginAccount.getRole().equals(RoleEnum.SOUTH_BUSSINUSS.getKey()) || loginAccount.getRole().equals(RoleEnum.NORTH_BUSSINUSS.getKey())){

            List<User> userList = userService.findAllSons(loginAccount.getId());
            List<Long> idList = new ArrayList<>();
manxiaoqiang committed
398
            idList.add(loginAccount.getId());
manxiaoqiang committed
399 400 401 402 403 404 405 406 407
            for(User u : userList){
                idList.add(u.getId());
            }

            contractList = contractRepository.findByDsAndRoile(startDate, endDate, platfrom, idList);
        }else{
            contractList = contractRepository.findByDs(startDate, endDate, platfrom);
        }

manxiaoqiang committed
408 409 410
        if(ValidateUtil.isValid(contractList)){
            for(Contract c : contractList){
                c.setSaleName(saleMap.containsKey(c.getSale()) ? saleMap.get(c.getSale()) : "");
manxiaoqiang committed
411 412 413 414 415 416
                if(c.getType().equals(ContractTypeEnum.MAIN.getKey())){
                    c.setPriceLevelName(typeMap.containsKey(c.getPriceLevel()) ? typeMap.get(c.getPriceLevel()) : "");
                } else{
                    c.setPriceLevelName(incremenMap.containsKey(c.getPriceLevel()) ? incremenMap.get(c.getPriceLevel()) : "");
                }

manxiaoqiang committed
417
                c.setCreateName(saleMap.containsKey(c.getCreateAccount()) ? saleMap.get(c.getCreateAccount()) : "");
manxiaoqiang committed
418 419 420 421 422
                result.add(c);
            }
        }
        return result;
    }
manxiaoqiang committed
423

manxiaoqiang committed
424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444
    @Override
    public Contract findOne(String code) {

        List<Contract> result = new ArrayList<>();
        List<User> sales = userRepository.findAll();
        Map<Long, String> saleMap = new HashMap<>();
        if(ValidateUtil.isValid(sales)){
            for(User s: sales){
                saleMap.put(s.getId(), s.getName());
            }
        }
        List<PackageType> typeList = packageTypeRepository.findAll();
        Map<Long, String> typeMap = new HashMap<>();
        if(ValidateUtil.isValid(typeList)){
            for(PackageType s: typeList){
                typeMap.put(s.getId(), s.getPackageName());
            }
        }
        Contract contract = contractRepository.findByCode(code);
        contract.setSaleName(saleMap.containsKey(contract.getSale()) ? saleMap.get(contract.getSale()) : "");
        contract.setPriceLevelName(typeMap.containsKey(contract.getPriceLevel()) ? typeMap.get(contract.getPriceLevel()) : "");
manxiaoqiang committed
445
        contract.setCreateName(saleMap.containsKey(contract.getCreateAccount()) ? saleMap.get(contract.getCreateAccount()) : "");
manxiaoqiang committed
446

manxiaoqiang committed
447 448 449 450 451 452 453 454 455 456 457 458 459
        Boolean flag = null;
        if(contract.getPriceLevel().longValue() == 1l){
            flag = checkTime(contract.getEmail(), contract.getPlatform(),contract.getType(), "black");
        }else{
            flag = checkTime(contract.getEmail(), contract.getPlatform(),contract.getType(), "analysis");
        }

        if(flag){
            contract.setContractType("0");
        }else{
            contract.setContractType("1");
        }

manxiaoqiang committed
460 461 462
        return contract;
    }

manxiaoqiang committed
463 464 465 466 467 468 469 470 471 472
    @Override
    public ContractMoney pay(User loginUser, ContractMoney resource) {
        Contract contract = contractRepository.findByCode(resource.getContractCode());
        if(resource.getType().equals("pay")){
            contract.setPayMoney(contract.getPayMoney() + resource.getMoney());
        } else {
            contract.setInvoice(contract.getInvoice() + resource.getMoney());
        }
        contractRepository.save(contract);

manxiaoqiang committed
473 474 475 476 477 478 479

        if(resource.getType().equals("pay") && resource.getPlatform().equals("tkio")){
            tkioAccountService.contractPay(loginUser, resource);
        }else if(resource.getType().equals("pay") && resource.getPlatform().equals("io")){
            ioAccountService.contractPay(loginUser, resource);
        }

manxiaoqiang committed
480
        resource.setPlatform(contract.getPlatform());
manxiaoqiang committed
481 482 483 484 485 486 487 488
        resource.setCreateAccount(loginUser.getId());
        resource.setCreateTime(new Date());
        resource.setUser(loginUser.getId());
        return contractMoneyRepository.save(resource);
    }

    @Override
    public Contract change(User loginUser, ContractChange resource) {
manxiaoqiang committed
489 490
        Map<Long, String> packageMap = getPackageMap();
        Map<Long, String> saleMap = getSaleMap();
manxiaoqiang committed
491 492
        Contract contract = contractRepository.findByCode(resource.getContractCode());
        if(resource.getType().equals("price")){
manxiaoqiang committed
493 494
            resource.setContent("套餐变更 :" + packageMap.get(contract.getPriceLevel()) + "-->" + packageMap.get(resource.getLevel())
                    + " 金额变更 :" + contract.getMoney() + "-->" +(resource.getMoney() + contract.getMoney()));
manxiaoqiang committed
495 496 497 498 499 500 501

            contract.setMoney(resource.getMoney() + contract.getMoney());
            contract.setPriceLevel(resource.getLevel());
            Double rebat = getRebat(contract.getProduct(), contract.getPriceLevel().intValue(), contract.getMoney());
            BigDecimal bg = new BigDecimal(rebat);
            double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
            contract.setRebate(f1);
manxiaoqiang committed
502 503

            //同步修改trackingio的数据
manxiaoqiang committed
504
            if(contract.getPlatform().equals("tkio")){
manxiaoqiang committed
505 506
                accountService.update(contract);
            }
manxiaoqiang committed
507
        }else{
manxiaoqiang committed
508
            //同步修改trackingio的数据
manxiaoqiang committed
509
            if(contract.getPlatform().equals("tkio")){
manxiaoqiang committed
510 511
                accountService.forbiden(contract);
            }
manxiaoqiang committed
512 513
            contract.setStatus("cancel");
        }
manxiaoqiang committed
514
        resource.setPlatform(contract.getPlatform());
manxiaoqiang committed
515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603
        resource.setCreateAccount(loginUser.getId());
        resource.setCreateTime(new Date());
        resource.setDs(DateUtil.getBeforeDays(0));
        resource.setUser(loginUser.getId());
        contractChangeRepository.save(resource);

        return contractRepository.save(contract);
    }

    @Override
    public List<ContractMoney> findPay(String startDate, String endDate, String code) {
        List<User> sales = userRepository.findAll();
        Map<Long, String> saleMap = new HashMap<>();
        if(ValidateUtil.isValid(sales)){
            for(User s: sales){
                saleMap.put(s.getId(), s.getName());
            }
        }

        List<ContractMoney> result  = new ArrayList<>();
        List<ContractMoney> list = contractMoneyRepository.findByDs(startDate, endDate,code);
        if(ValidateUtil.isValid(list)){
            for(ContractMoney cm : list){
                cm.setCreateName(saleMap.containsKey(cm.getUser()) ? saleMap.get(cm.getUser()) : "");
                result.add(cm);
            }
        }
        return result;
    }

    @Override
    public List<ContractChange> findChange(String startDate, String endDate, String code) {

        List<User> sales = userRepository.findAll();
        Map<Long, String> saleMap = new HashMap<>();
        if(ValidateUtil.isValid(sales)){
            for(User s: sales){
                saleMap.put(s.getId(), s.getName());
            }
        }

        List<ContractChange> result  = new ArrayList<>();
        List<ContractChange> list = contractChangeRepository.findByDs(startDate, endDate,code);
        if(ValidateUtil.isValid(list)){
            for(ContractChange cm : list){
                cm.setCreateName(saleMap.containsKey(cm.getUser()) ? saleMap.get(cm.getUser()) : "");
                result.add(cm);
            }
        }
        return result;
    }

    @Override
    public Contract updatePay(User loginUser, ContractMoney resource) {
        ContractMoney contractMoney = contractMoneyRepository.findOne(resource.getId());
        Contract contract = contractRepository.findByCode(resource.getContractCode());
        if(contractMoney.getType().equals("pay")){
            contract.setPayMoney(contract.getPayMoney() + resource.getMoney() - contractMoney.getMoney());
        } else {
            contract.setInvoice(contract.getInvoice() + resource.getMoney() - contractMoney.getMoney());
        }
        Contract save = contractRepository.save(contract);

        contractMoney.setModifyAccount(loginUser.getId());
        contractMoney.setModifyTime(new Date());
        contractMoney.setMoney(resource.getMoney());
        contractMoney.setDs(resource.getDs());
        contractMoneyRepository.save(contractMoney);

        List<User> sales = userRepository.findAll();
        Map<Long, String> saleMap = new HashMap<>();
        if(ValidateUtil.isValid(sales)){
            for(User s: sales){
                saleMap.put(s.getId(), s.getName());
            }
        }
        List<PackageType> typeList = packageTypeRepository.findAll();
        Map<Long, String> typeMap = new HashMap<>();
        if(ValidateUtil.isValid(typeList)){
            for(PackageType s: typeList){
                typeMap.put(s.getId(), s.getPackageName());
            }
        }

        save.setSaleName(saleMap.containsKey(save.getSale()) ? saleMap.get(save.getSale()) : "");
        save.setPriceLevelName(typeMap.containsKey(save.getPriceLevel()) ? typeMap.get(save.getPriceLevel()) : "");
        save.setCreateName(saleMap.containsKey(save.getSale()) ? saleMap.get(save.getSale()) : "");
        return save;
    }
manxiaoqiang committed
604 605

    @Override
manxiaoqiang committed
606
    public List<ContractMoney> findPayAll(String startDate, String endDate, String platfrom) {
manxiaoqiang committed
607 608 609 610 611 612 613 614 615
        List<User> sales = userRepository.findAll();
        Map<Long, String> saleMap = new HashMap<>();
        if(ValidateUtil.isValid(sales)){
            for(User s: sales){
                saleMap.put(s.getId(), s.getName());
            }
        }

        List<ContractMoney> result  = new ArrayList<>();
manxiaoqiang committed
616
        List<ContractMoney> list = contractMoneyRepository.findByDsAll(startDate, endDate, platfrom);
manxiaoqiang committed
617 618 619 620 621 622 623 624
        if(ValidateUtil.isValid(list)){
            for(ContractMoney cm : list){
                cm.setCreateName(saleMap.containsKey(cm.getUser()) ? saleMap.get(cm.getUser()) : "");
                result.add(cm);
            }
        }
        return result;
    }
manxiaoqiang committed
625

manxiaoqiang committed
626 627


manxiaoqiang committed
628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648
    public Map<Long, String> getPackageMap(){
        List<PackageType> typeList = packageTypeRepository.findAll();
        Map<Long, String> typeMap = new HashMap<>();
        if(ValidateUtil.isValid(typeList)){
            for(PackageType s: typeList){
                typeMap.put(s.getId(), s.getPackageName());
            }
        }
        return typeMap;
    }

    public Map<Long, String> getSaleMap(){
        List<User> sales = userRepository.findAll();
        Map<Long, String> saleMap = new HashMap<>();
        if(ValidateUtil.isValid(sales)){
            for(User s: sales){
                saleMap.put(s.getId(), s.getName());
            }
        }
        return saleMap;
    }
manxiaoqiang committed
649
}