ContractController.java 18.4 KB
Newer Older
manxiaoqiang committed
1 2
package common.controller;

kangxiaoshan committed
3
import common.model.*;
manxiaoqiang committed
4
import common.service.ContractService;
kangxiaoshan committed
5
import dic.ContractStatusEnum;
manxiaoqiang committed
6
import dic.OperateObjectTypeEnum;
manxiaoqiang committed
7
import org.apache.commons.io.IOUtils;
2  
manxiaoqiang committed
8 9
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
manxiaoqiang committed
10
import org.springframework.beans.factory.annotation.Autowired;
manxiaoqiang committed
11 12
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
manxiaoqiang committed
13
import org.springframework.http.MediaType;
manxiaoqiang committed
14
import org.springframework.http.ResponseEntity;
manxiaoqiang committed
15 16 17
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import security.annotation.CurrentAccount;
kangxiaoshan committed
18
import util.IPAddrUtil;
manxiaoqiang committed
19
import util.NewUserLogThread;
manxiaoqiang committed
20
import util.ResultModel;
manxiaoqiang committed
21
import util.ValidateUtil;
manxiaoqiang committed
22

manxiaoqiang committed
23
import javax.servlet.http.HttpServletRequest;
manxiaoqiang committed
24 25 26 27
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
manxiaoqiang committed
28
import java.util.HashMap;
manxiaoqiang committed
29
import java.util.List;
manxiaoqiang committed
30
import java.util.Map;
manxiaoqiang committed
31 32 33 34 35 36 37 38

/**
 * Created by mxq on 17/12/21.
 * 优先测试账号查询
 */
@Controller
@RequestMapping("{platform}/contract")
public class ContractController {
kangxiaoshan committed
39

2  
manxiaoqiang committed
40
    private static final Logger logger = LoggerFactory.getLogger(ContractController.class);
kangxiaoshan committed
41 42

    private static final Map<String, String> CONTRACT_STATUS = new HashMap<String, String>() {{
kangxiaoshan committed
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
//        put(ContractStatusEnum.WAIT.getKey(), ContractStatusEnum.WAIT.getValue());
//        put(ContractStatusEnum.EXECUTING.getKey(), ContractStatusEnum.EXECUTING.getValue());
//        put(ContractStatusEnum.END.getKey(), ContractStatusEnum.END.getValue());
//        put(ContractStatusEnum.CANCEL.getKey(), ContractStatusEnum.CANCEL.getValue());
//        put(ContractStatusEnum.MONEY_BACK_ALL.getKey(), ContractStatusEnum.MONEY_BACK_ALL.getValue());
//        put(ContractStatusEnum.MONEY_BACK_PART.getKey(), ContractStatusEnum.MONEY_BACK_PART.getValue());
//        put(ContractStatusEnum.MONEY_BACK_NONE.getKey(), ContractStatusEnum.MONEY_BACK_NONE.getValue());
//        put(ContractStatusEnum.DELETE.getKey(), ContractStatusEnum.DELETE.getValue());

        putdata(this,ContractStatusEnum.WAIT);
        putdata(this,ContractStatusEnum.EXECUTING);
        putdata(this,ContractStatusEnum.END);
        putdata(this,ContractStatusEnum.CANCEL);
        putdata(this,ContractStatusEnum.MONEY_BACK_ALL);
        putdata(this,ContractStatusEnum.MONEY_BACK_PART);
        putdata(this,ContractStatusEnum.MONEY_BACK_NONE);
kangxiaoshan committed
59
        putdata(this,ContractStatusEnum.MONEY_BACK_FIRST);
kangxiaoshan committed
60
        putdata(this,ContractStatusEnum.DELETE);
kangxiaoshan committed
61 62 63

    }};

kangxiaoshan committed
64 65 66 67 68

    private static  void putdata(Map map,ContractStatusEnum a){
        map.put(a.getKey(),a.getValue());
    }

manxiaoqiang committed
69 70 71 72 73
    @Autowired
    private ContractService service;

    @RequestMapping(value = "find", method = RequestMethod.GET)
    @ResponseBody
manxiaoqiang committed
74
    public ResultModel findAll(@CurrentAccount User loginAccount, @PathVariable String platform,
kangxiaoshan committed
75
                               @RequestParam String startDate, @RequestParam String endDate,String contractId) {
kangxiaoshan committed
76

kangxiaoshan committed
77
        return ResultModel.OK(service.findAll(loginAccount,startDate, endDate, platform,contractId));
manxiaoqiang committed
78 79
    }

kangxiaoshan committed
80
    @RequestMapping(value = "contractid/find", method = RequestMethod.GET)
kangxiaoshan committed
81 82
    @ResponseBody
    public ResultModel findOne(@CurrentAccount User loginAccount, @PathVariable String platform,
kangxiaoshan committed
83
                             String startDate, String endDate,String contractId) {
kangxiaoshan committed
84 85 86 87 88

        return ResultModel.OK(service.findOne(loginAccount,startDate, endDate, platform,contractId));
    }


manxiaoqiang committed
89
    @RequestMapping(value = "export", method = RequestMethod.GET,produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
manxiaoqiang committed
90
    @ResponseBody
manxiaoqiang committed
91
    public ResponseEntity<byte[]> export(@CurrentAccount User loginAccount, @PathVariable String platform, @RequestParam String startDate
manxiaoqiang committed
92
                                , @RequestParam String endDate, HttpServletRequest request, HttpServletResponse response) {
kangxiaoshan committed
93
        List<Contract> contractList = service.findAll(loginAccount, startDate, endDate, platform,null);
kangxiaoshan committed
94

manxiaoqiang committed
95

manxiaoqiang committed
96 97
        byte[] content = new byte[0];
        StringBuilder sb = new StringBuilder();
kangxiaoshan committed
98
        sb.append("时间,合同编号,客户账号,签约方,销售,开始日期,结束日期,套餐类型,合同金额,收款金额,合同状态\r\n");
manxiaoqiang committed
99 100
        if(ValidateUtil.isValid(contractList)){
            for (Contract c : contractList){
manxiaoqiang committed
101
                sb.append(c.getDs()).append(",").append(c.getContractCode()).append(",").append(c.getEmail()).append(",").append(c.getCustomerBody()).append(",").append(c.getSaleName()).append(",")
kangxiaoshan committed
102
                        .append(c.getStartDate()).append(",").append(c.getEndDate()).append(",").append(c.getPriceLevelName()).append(",").append(c.getMoney()).append(",").append(c.getPayMoney()).append(",")
kangxiaoshan committed
103
                        .append(CONTRACT_STATUS.get(c.getStatus())).append("\r\n");
manxiaoqiang committed
104 105 106 107 108 109 110 111 112
            }
        }
        InputStream in =  new  ByteArrayInputStream(sb.toString().getBytes());
        try {
            content  = IOUtils.toByteArray(in);
        } catch (IOException e) {
            e.printStackTrace();
        }
        HttpHeaders headers = new HttpHeaders();
manxiaoqiang committed
113 114
        response.setHeader("filename", "contract.csv");
        response.setHeader("content-disposition", "attachment; filename=contract.csv");
manxiaoqiang committed
115 116
        response.setHeader("Content-Type","text/csv");
        response.setContentType("APPLICATION/OCTET-STREAM");
manxiaoqiang committed
117

manxiaoqiang committed
118
        NewUserLogThread userlog = new NewUserLogThread(loginAccount.getEmail(), loginAccount.getName(), OperateObjectTypeEnum.CUSTOMER.getKey(), platform, "导出合同", startDate, endDate, request,platform);
manxiaoqiang committed
119
        userlog.start();
manxiaoqiang committed
120 121 122 123 124 125
        //返回文件字符串
        return new ResponseEntity<byte[]>(content, headers, HttpStatus.CREATED);
    }

    @RequestMapping(value = "pay/export", method = RequestMethod.GET,produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
    @ResponseBody
manxiaoqiang committed
126
    public ResponseEntity<byte[]> exportPay(@CurrentAccount User loginAccount, @RequestParam String startDate, @RequestParam String endDate,
kangxiaoshan committed
127 128
                                             HttpServletRequest request, HttpServletResponse response, @PathVariable String platform ,String moneyType,String packageTypeSearch) {
        List<ContractMoney> moneyList = service.findPayAll(startDate, endDate, platform, moneyType, packageTypeSearch);
manxiaoqiang committed
129 130 131
        Map<String, String> map = new HashMap<>();
        map.put("pay", "收款");
        map.put("invoice", "收票");
manxiaoqiang committed
132 133 134

        byte[] content = new byte[0];
        StringBuilder sb = new StringBuilder();
kangxiaoshan committed
135 136 137 138 139 140 141 142 143
//        sb.append("合同编号 ,客户账号 ,签约方 ,事项 ,金额 ,日期 ,修改人 \r\n");
//        if(ValidateUtil.isValid(moneyList)){
//            for (ContractMoney c : moneyList){
//                sb.append(c.getContractCode()).append(",").append(c.getEmail()).append(",").append(c.getCompany()).append(",").append(map.get(c.getType())).append(",")
//                        .append(c.getMoney()).append(",").append(c.getDs()).append(",").append(c.getCreateName()).append("\r\n");
//            }
//        }


kangxiaoshan committed
144 145

        Long parseSum = 0L;
manxiaoqiang committed
146 147
        if(ValidateUtil.isValid(moneyList)){
            for (ContractMoney c : moneyList){
kangxiaoshan committed
148 149 150 151 152 153 154 155 156
                sb.append(c.getDs()).append(",")
                .append(c.getContractCode()).append(",")
                .append(c.getEmail()).append(",")
                .append(c.getCompany()).append(",")
                .append(c.getPackageName()).append(",")
                .append(c.getSalseName()).append(",")
                .append(map.get(c.getType())).append(",")
                .append(c.getMoney()).append(",")
                .append(c.getCreateName()).append("\r\n");
kangxiaoshan committed
157 158 159 160 161 162 163 164

                if("pay".equals(c.getType())){
                    // 付款
                    parseSum +=  c.getMoney();

                }else{
                    parseSum -= c.getMoney();
                }
manxiaoqiang committed
165
            }
kangxiaoshan committed
166

manxiaoqiang committed
167
        }
kangxiaoshan committed
168

kangxiaoshan committed
169 170 171
        sb.append("日期, 合同编号 ,客户账号 ,签约方名称 ,套餐类型, 销售, 事项 ,金额 ,操作人 \r\n");
        sb.append("汇总,  - , -  ,  - ,  - ,  - ,  -  ,").append(parseSum).append(" , - \r\n");

manxiaoqiang committed
172 173 174 175 176 177
        InputStream in =  new  ByteArrayInputStream(sb.toString().getBytes());
        try {
            content  = IOUtils.toByteArray(in);
        } catch (IOException e) {
            e.printStackTrace();
        }
manxiaoqiang committed
178
        HttpHeaders headers = new HttpHeaders();
manxiaoqiang committed
179 180 181 182 183
        response.setHeader("filename", "contract_pay.csv");
        response.setHeader("content-disposition", "attachment; filename=contract_pay.csv");
       // response.setHeader("Content-Type", "application/octet-stream;charset=UTF-8");
        response.setHeader("Content-Type","text/csv");
        response.setContentType("APPLICATION/OCTET-STREAM");
manxiaoqiang committed
184

manxiaoqiang committed
185
        NewUserLogThread userlog = new NewUserLogThread(loginAccount.getEmail(), loginAccount.getName(), OperateObjectTypeEnum.CUSTOMER.getKey(), platform, "导出收款开票", startDate, endDate, request, platform);
manxiaoqiang committed
186
        userlog.start();
manxiaoqiang committed
187 188 189 190
        //返回文件字符串
        return new ResponseEntity<byte[]>(content, headers, HttpStatus.CREATED);
    }

manxiaoqiang committed
191 192 193 194 195 196
    @RequestMapping(value = "findone", method = RequestMethod.GET)
    @ResponseBody
    public ResultModel findOne(@CurrentAccount User loginAccount, @RequestParam String code) {
        return ResultModel.OK(service.findOne(code));
    }

manxiaoqiang committed
197 198
    @RequestMapping(value = "checkAccount", method = RequestMethod.GET)
    @ResponseBody
manxiaoqiang committed
199 200
    public ResultModel checkAccount(@CurrentAccount User loginAccount, @RequestParam String email, @PathVariable String platform) {
        return ResultModel.OK(service.checkAccount(email, platform));
manxiaoqiang committed
201 202
    }

manxiaoqiang committed
203 204 205 206 207 208 209
    @RequestMapping(value = "checkTime", method = RequestMethod.GET)
    @ResponseBody
    public ResultModel checkTime(@RequestParam String type, @RequestParam String email,
                                 @RequestParam String platform, @RequestParam(required = false) String product) {
        return ResultModel.OK(service.checkTime(email, platform,type,product));
    }

manxiaoqiang committed
210 211
    @RequestMapping(value = "find/body", method = RequestMethod.GET)
    @ResponseBody
kangxiaoshan committed
212 213
    public ResultModel findBody(@CurrentAccount User loginAccount,@PathVariable String platform) {
        return ResultModel.OK(service.findBody(platform));
manxiaoqiang committed
214 215 216 217
    }

    @RequestMapping(value = "find/code", method = RequestMethod.GET)
    @ResponseBody
kangxiaoshan committed
218 219 220
    public ResultModel findCode(@CurrentAccount User loginAccount, @RequestParam String code,@PathVariable String platform,String company) {

        return ResultModel.OK(service.getContractCode(code,platform,company));
manxiaoqiang committed
221 222 223 224
    }

    @RequestMapping(value = "find/pricelevel", method = RequestMethod.GET)
    @ResponseBody
manxiaoqiang committed
225 226
    public ResultModel findPricelevel(@CurrentAccount User loginAccount, @PathVariable String platform) {
        return ResultModel.OK(service.findSetmeal(platform));
manxiaoqiang committed
227 228
    }

manxiaoqiang committed
229 230 231 232 233 234
    @RequestMapping(value = "find/increment", method = RequestMethod.GET)
    @ResponseBody
    public ResultModel findIncrement(@CurrentAccount User loginAccount) {
        return ResultModel.OK(service.findIncrement());
    }

manxiaoqiang committed
235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250
    @RequestMapping(value = "find/rebat", method = RequestMethod.GET)
    @ResponseBody
    public ResultModel rebat(@CurrentAccount User loginAccount, @RequestParam String product,
                             @RequestParam Integer level, @RequestParam Long money) {
        return ResultModel.OK(service.getRebat(product, level, money));
    }

    @RequestMapping(value = "find/sale", method = RequestMethod.GET)
    @ResponseBody
    public ResultModel rebat(@CurrentAccount User loginAccount) {
        return ResultModel.OK(service.getSales());
    }


    @RequestMapping(value = "create", method = RequestMethod.POST)
    @ResponseBody
manxiaoqiang committed
251
    public ResultModel create(@CurrentAccount User loginAccount, @RequestBody Contract contract, HttpServletRequest request, @PathVariable String platform) {
kangxiaoshan committed
252

manxiaoqiang committed
253
        Contract contract1 = service.create(loginAccount, contract);
manxiaoqiang committed
254
        NewUserLogThread userlog = new NewUserLogThread(loginAccount.getEmail(), loginAccount.getName(), OperateObjectTypeEnum.CUSTOMER.getKey(), contract1.getContractCode(), "新建合同","",contract1.toString(), request, platform);
manxiaoqiang committed
255
        userlog.start();
kangxiaoshan committed
256 257
//        ContractSendEmailThread email = new ContractSendEmailThread(contract);
//        email.start();
manxiaoqiang committed
258
        return ResultModel.OK(contract1);
manxiaoqiang committed
259
    }
manxiaoqiang committed
260 261 262

    @RequestMapping(value = "update", method = RequestMethod.PUT)
    @ResponseBody
manxiaoqiang committed
263
    public ResultModel update(@CurrentAccount User loginAccount, @RequestBody Contract contract, HttpServletRequest request, @PathVariable String platform) {
kangxiaoshan committed
264 265 266

        String ip = IPAddrUtil.getIpAddrNew(request);
        Contract contract1 = service.update(loginAccount, contract,ip);
manxiaoqiang committed
267
        NewUserLogThread userlog = new NewUserLogThread(loginAccount.getEmail(), loginAccount.getName(), OperateObjectTypeEnum.CUSTOMER.getKey(), contract1.getContractCode(), "修改合同","",contract1.toString(), request, platform);
manxiaoqiang committed
268
        userlog.start();
kangxiaoshan committed
269

manxiaoqiang committed
270
        return ResultModel.OK(contract1);
manxiaoqiang committed
271 272 273 274
    }

    @RequestMapping(value = "pay", method = RequestMethod.POST)
    @ResponseBody
manxiaoqiang committed
275
    public ResultModel pay(@CurrentAccount User loginAccount, @RequestBody ContractMoney contract, HttpServletRequest request, @PathVariable String platform) {
manxiaoqiang committed
276
        ContractMoney contract1 = service.pay(loginAccount, contract);
manxiaoqiang committed
277
        NewUserLogThread userlog = new NewUserLogThread(loginAccount.getEmail(), loginAccount.getName(), OperateObjectTypeEnum.CUSTOMER.getKey(), contract1.getContractCode(), "收款开票","",contract1.toString(), request, platform);
manxiaoqiang committed
278 279
        userlog.start();
        return ResultModel.OK(contract1);
manxiaoqiang committed
280 281 282 283
    }

    @RequestMapping(value = "change", method = RequestMethod.POST)
    @ResponseBody
kangxiaoshan committed
284 285
    public ResultModel change(@CurrentAccount User loginAccount,
                              @RequestBody ContractChange contract, HttpServletRequest request, @PathVariable String platform) {
kangxiaoshan committed
286
        Contract contract1 = service.change(loginAccount, contract,null);
manxiaoqiang committed
287
        NewUserLogThread userlog = new NewUserLogThread(loginAccount.getEmail(), loginAccount.getName(), OperateObjectTypeEnum.CUSTOMER.getKey(), contract1.getContractCode(), "修改套餐","",contract1.toString(), request, platform);
manxiaoqiang committed
288 289
        userlog.start();
        return ResultModel.OK(contract1);
manxiaoqiang committed
290 291
    }

kangxiaoshan committed
292 293 294 295 296 297 298 299
    /**
     *
     * @param loginAccount
     * @param startDate
     * @param endDate
     * @param code
     * @return
     */
manxiaoqiang committed
300 301 302 303 304 305 306 307 308 309 310 311 312 313
    @RequestMapping(value = "find/pay", method = RequestMethod.GET)
    @ResponseBody
    public ResultModel findPay(@CurrentAccount User loginAccount, @RequestParam String startDate,
                               @RequestParam String endDate, @RequestParam String code) {
        return ResultModel.OK(service.findPay(startDate, endDate, code));
    }

    @RequestMapping(value = "find/change", method = RequestMethod.GET)
    @ResponseBody
    public ResultModel findChange(@CurrentAccount User loginAccount, @RequestParam String startDate,
                                  @RequestParam String endDate, @RequestParam String code) {
        return ResultModel.OK(service.findChange(startDate, endDate, code));
    }

kangxiaoshan committed
314 315 316 317 318 319 320 321
    @RequestMapping(value = "find/flowchange", method = RequestMethod.GET)
    @ResponseBody
    public ResultModel flowchange(@CurrentAccount User loginAccount, @RequestParam String startDate,
                                  @RequestParam String endDate, @RequestParam String code) {
        return ResultModel.OK(service.findflowChange(startDate, endDate, code));
    }


manxiaoqiang committed
322 323
    @RequestMapping(value = "update/pay", method = RequestMethod.PUT)
    @ResponseBody
kangxiaoshan committed
324 325 326 327 328 329
    public ResultModel updatePay(@CurrentAccount User loginAccount, @RequestBody ContractMoney contract, HttpServletRequest request,
                                 @PathVariable String platform) {

        String ip = IPAddrUtil.getIpAddrNew(request);
        Contract contract1 = service.updatePay(loginAccount, contract,ip);
        NewUserLogThread userlog = new NewUserLogThread(loginAccount.getEmail(), loginAccount.getName(), OperateObjectTypeEnum.CUSTOMER.getKey(), contract1.getContractCode(), "修改收款开票","", contract1.toString(), request, platform);
manxiaoqiang committed
330 331
        userlog.start();
        return ResultModel.OK(contract1);
manxiaoqiang committed
332
    }
manxiaoqiang committed
333 334 335 336

    @RequestMapping(value = "find/payall", method = RequestMethod.GET)
    @ResponseBody
    public ResultModel findPayAll(@CurrentAccount User loginAccount, @RequestParam String startDate,
kangxiaoshan committed
337 338 339
                               @RequestParam String endDate, @PathVariable String platform,String moneyType,String packageTypeSearch) {
        return ResultModel.OK(service.findPayAll(startDate, endDate, platform,moneyType,packageTypeSearch));

manxiaoqiang committed
340
    }
manxiaoqiang committed
341

manxiaoqiang committed
342 343 344 345
    @RequestMapping(value = "build", method = RequestMethod.POST)
    @ResponseBody
    public ResultModel build(@RequestBody Contract contract, HttpServletRequest request) {

2  
manxiaoqiang committed
346
        logger.error("tkiio---------------" + contract);
manxiaoqiang committed
347 348
        return ResultModel.OK(service.build(contract));
    }
manxiaoqiang committed
349

kangxiaoshan committed
350
    @RequestMapping(value = "trade", method = RequestMethod.GET)
kangxiaoshan committed
351
    @ResponseBody
kangxiaoshan committed
352
    public ResultModel baseCreate( @PathVariable String platform) {
kangxiaoshan committed
353 354 355 356
        return ResultModel.OK(service.getTradeData(platform));
    }


kangxiaoshan committed
357
    @RequestMapping(value = "code/all", method = RequestMethod.GET)
kangxiaoshan committed
358
    @ResponseBody
kangxiaoshan committed
359
    public ResultModel contractCodeAll( @PathVariable String platform,String contractId) {
kangxiaoshan committed
360

kangxiaoshan committed
361
        return ResultModel.OK(service.contractCodeAll(platform,contractId));
kangxiaoshan committed
362 363 364
    }


kangxiaoshan committed
365 366
    @RequestMapping(value = "setstaus", method = RequestMethod.GET)
    @ResponseBody
kangxiaoshan committed
367 368
    public ResultModel contractStatusUpdate( @PathVariable String platform,@CurrentAccount User loginUser,
                                             String contractId,String status,HttpServletRequest request) {
kangxiaoshan committed
369

kangxiaoshan committed
370 371
        String ip = IPAddrUtil.getIpAddrNew(request);
        return ResultModel.OK(service.contractStatusUpdate(platform,contractId,status,ip,loginUser));
kangxiaoshan committed
372 373 374
    }


kangxiaoshan committed
375 376 377 378 379 380 381 382
    @RequestMapping(value = "codecheck", method = RequestMethod.GET)
    @ResponseBody
    public ResultModel codeCheck( @PathVariable String platform,String contractCode) {

        return ResultModel.OK(service.contractCodeCheck(platform,contractCode));
    }


kangxiaoshan committed
383 384 385 386 387 388 389 390
    /**
     * 删除记录
     * @param platform
     * @param
     * @return
     */
    @RequestMapping(value = "change/del", method = RequestMethod.GET)
    @ResponseBody
kangxiaoshan committed
391 392 393 394
    public ResultModel changesDel( @PathVariable String platform,@CurrentAccount User loginAccount,
                                   String id,String type,HttpServletRequest request) {

        return ResultModel.OK(service.changesDel(platform,id,type, IPAddrUtil.getIpAddrNew(request),loginAccount));
kangxiaoshan committed
395 396 397 398

    }


kangxiaoshan committed
399 400


kangxiaoshan committed
401 402


kangxiaoshan committed
403 404 405



manxiaoqiang committed
406
}