forked from kidgrow-microservices-platform

houruijun
2020-11-04 1e228c1191996a8e704cf36dc8042b1c6ca81ef1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
package com.kidgrow.oprationcenter.service.impl;
 
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.kidgrow.common.model.*;
import com.kidgrow.common.service.impl.SuperServiceImpl;
import com.kidgrow.common.utils.DateUtils;
import com.kidgrow.oprationcenter.feign.DiagnosticService;
import com.kidgrow.oprationcenter.feign.RoleOrganizationService;
import com.kidgrow.oprationcenter.mapper.ProductOrderRecordMapper;
import com.kidgrow.oprationcenter.model.ProductOrderRecord;
import com.kidgrow.oprationcenter.service.IProductOrderRecordService;
import com.kidgrow.oprationcenter.vo.DiagnosisRecord;
import com.kidgrow.oprationcenter.vo.GroupProductDetail;
import com.kidgrow.oprationcenter.vo.ProductOrderJoinDetail;
import com.kidgrow.usercenter.feign.SysDoctorService;
import com.kidgrow.usercenter.feign.SysHospitalService;
import com.kidgrow.usercenter.model.SysHospital;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
/**
 * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
 *
 * @version 1.0
 * @Description: 产品/明显的充值记录<br>
 * @Project: 用户中心<br>
 * @CreateDate: Created in 2020-04-01 09:37:05 <br>
 * @Author: <a href="4345453@kidgrow.com">liuke</a>
 */
@Slf4j
@Service
public class ProductOrderRecordServiceImpl extends SuperServiceImpl<ProductOrderRecordMapper, ProductOrderRecord> implements IProductOrderRecordService {
    @Autowired
    DiagnosticService diagnosticService;
    @Autowired
    private RoleOrganizationService roleOrganizationService;
    @Autowired
    private SysDoctorService sysDoctorService;
    @Autowired
    private SysHospitalService sysHospitalService;
 
    /**
     * 列表
     *
     * @param params
     * @return
     */
    @Override
    public PageResult<ProductOrderRecord> findList(Map<String, Object> params) {
        Page<ProductOrderRecord> page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit"));
        List<ProductOrderRecord> list = baseMapper.findList(page, params);
        return PageResult.<ProductOrderRecord>builder().data(list).code(0).count(page.getTotal()).build();
    }
 
    /**
     * 获取诊断列表
     *
     * @param params
     * @return
     */
    @Override
    public PageResult<DiagnosisRecord> findAllDataList(Map<String, Object> params) {
        return diagnosticService.getDiagnosticItemList(params).getData();
    }
 
    /**
     * 列表
     *
     * @param params
     * @return
     */
    @Override
    public PageResult<ProductOrderJoinDetail> findAllList(Map<String, Object> params, SysUser sysUser) {
        Page<ProductOrderJoinDetail> page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit"));
        Map<String, Object> roleOrgMap = roleOrganizationService.getRoleOrgMap(sysUser);
        params.putAll(roleOrgMap);
        List<ProductOrderJoinDetail> list = baseMapper.findAllList(page, params);
        for (ProductOrderJoinDetail productOrderJoinDetail : list) {
            Date proBegintime = productOrderJoinDetail.getProBegintime();
            Date proEndtime = productOrderJoinDetail.getProEndtime();
            Date nowDate = new Date();
            if(nowDate.getTime()<proBegintime.getTime()){
                productOrderJoinDetail.setUseType("未使用");
            }else if (proBegintime.getTime()<=nowDate.getTime()&&nowDate.getTime()<proEndtime.getTime()){
                productOrderJoinDetail.setUseType("使用中");
            }else if(nowDate.getTime()>=proEndtime.getTime()){
                productOrderJoinDetail.setUseType("已结束");
            }
        }
        return PageResult.<ProductOrderJoinDetail>builder().data(list).code(0).count(page.getTotal()).build();
    }
 
    /**
     * 获取统计数据
     *
     * @param params
     * @return
     */
    @Override
    public PageResult<GroupProductDetail> groupList(Map<String, Object> params) {
        Page<GroupProductDetail> page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit"));
        List<GroupProductDetail> list = baseMapper.groupProductDetail(page, params);
        return PageResult.<GroupProductDetail>builder().data(list).code(0).count(page.getTotal()).build();
    }
    /**
     * 根据ProductOrderRecord对象当做查询条件进行查询
     *
     * @param productOrderRecord
     * @return ProductOrderRecord
     */
    @Override
    public ProductOrderRecord findByObject(ProductOrderRecord productOrderRecord) {
        return baseMapper.findByObject(productOrderRecord);
    }
 
    /**
     * 修改数据状态 启用 禁用
     *
     * @param params
     * @return
     */
    @Override
    public ResultBody updateEnabled(Map<String, Object> params) {
        Long id = MapUtils.getLong(params, "id");
        Boolean enabled = MapUtils.getBoolean(params, "enabled");
 
        ProductOrderRecord productOrder = baseMapper.selectById(id);
        if (productOrder == null) {
            return ResultBody.failed("该数据不存在!");
        }
        productOrder.setEnabled(enabled);
        productOrder.setUpdateTime(new Date());
        int i = baseMapper.updateById(productOrder);
        return i > 0 ? ResultBody.ok().data(productOrder).msg("更新成功") : ResultBody.failed("更新失败");
    }
 
    @Override
    public ResultBody getTypeByUser(SysUser sysUser) {
        List<SysOrganization> organizations = sysUser.getOrganizations();
        if (organizations.size() > 0) {
            SysOrganization sysOrganization = organizations.get(0);
            List<ProductOrderJoinDetail> list = baseMapper.getTypeByUser(sysOrganization.getId());
            if (list.size() > 0) {
                ProductOrderJoinDetail productOrderJoinDetail = list.get(0);
                //查询用户的真实姓名
                Map<String, Object> selectMap = new HashMap<>();
                selectMap.put("user_id", sysUser.getId());
                ResultBody listByMap = sysDoctorService.getListByMap(selectMap);
                List<SysDoctor> sysDoctors = JSON.parseArray(JSON.toJSONString(listByMap.getData()), SysDoctor.class);
                String str = "";
                if (sysDoctors != null && sysDoctors.size() > 0) {
                    str = sysDoctors.get(0).getDoctorName();
                }
                //查询医院的 logo
                Map<String, Object> map = new HashMap<>();
                map.put("id", sysOrganization.getId());
                ResultBody allByMap = sysHospitalService.findAllByMap(map);
                List<SysHospital> hospitals = JSON.parseArray(JSON.toJSONString(allByMap.getData()), SysHospital.class);
                String logo = "";
                if (hospitals.size() > 0) {
                    logo = hospitals.get(0).getHospitalLogo();
                }
                Map<String, Object> mapVo = new HashMap<>();
                mapVo.put("type", productOrderJoinDetail.getProType());
                mapVo.put("realName", str);
                //剩余时间
                Date proEndtime = productOrderJoinDetail.getProEndtime();
                Double surplusDay = DateUtils.getDays(proEndtime, new Date());
                int surplus = surplusDay.intValue();
                mapVo.put("surplus", surplus);
                mapVo.put("logo", logo);
                //获取 售后服务工程师********不能从sysOrganization获取,从department获取
               /* mapVo.put("saleUserName",sysOrganization.getSaleUserName());
                mapVo.put("saleUserTel",sysOrganization.getSaleUserTel());*/
                return ResultBody.ok().data(mapVo);
            } else {
                return ResultBody.failed("该用户套餐已经失效");
            }
        } else {
            return ResultBody.failed("该用户的组织已经失效");
        }
    }
}