PensionOrderController.java 16.6 KB
Newer Older
1 2
package io.hmit.modules.serviceOrder.controller;

mlchun's avatar
mlchun committed
3
import com.sun.xml.internal.bind.v2.TODO;
4 5
import io.hmit.annotation.Login;
import io.hmit.annotation.LoginUser;
6 7 8 9 10 11 12 13
import io.hmit.common.constant.Constant;
import io.hmit.common.page.PageData;
import io.hmit.common.utils.Result;
import io.hmit.common.validator.AssertUtils;
import io.hmit.common.validator.ValidatorUtils;
import io.hmit.common.validator.group.AddGroup;
import io.hmit.common.validator.group.DefaultGroup;
import io.hmit.common.validator.group.UpdateGroup;
14
import io.hmit.entity.UserEntity;
15
import io.hmit.modules.serviceOrder.dto.PensionOrderDTO;
mengmeng's avatar
mengmeng committed
16
import io.hmit.modules.serviceOrder.dto.ReservationDTO;
17 18 19 20 21 22 23 24 25
import io.hmit.modules.serviceOrder.service.PensionOrderService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;

26
import java.util.Date;
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
import java.util.Map;

/**
 * 订单表
 *
 * @author zsh 408538940@qq.com
 * @since 1.0.0 2021-01-26
 */
@RestController
@RequestMapping("serviceOrder/pensionorder")
@Api(tags="订单表")
public class PensionOrderController {
    @Autowired
    private PensionOrderService pensionOrderService;

42
    @Login
43
    @GetMapping("page")
44
    @ApiOperation("全部订单(志愿者)")
45 46 47 48 49 50
    @ApiImplicitParams({
        @ApiImplicitParam(name = Constant.PAGE, value = "当前页码,从1开始", paramType = "query", required = true, dataType="int") ,
        @ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataType="int") ,
        @ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataType="String") ,
        @ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataType="String")
    })
51 52 53
    public Result<PageData<PensionOrderDTO>> page(@ApiIgnore @LoginUser UserEntity user,
                                                  @ApiIgnore @RequestParam Map<String, Object> params){
        PageData<PensionOrderDTO> page = pensionOrderService.getAllOrderPage(params, user.getId());
54 55 56
        return new Result<PageData<PensionOrderDTO>>().ok(page);
    }

57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
    @Login
    @GetMapping("getElderAllOrderOrByStatusList")
    @ApiOperation("全部/根据状态返回订单(老人)")
    @ApiImplicitParams({
            @ApiImplicitParam(name = Constant.PAGE, value = "当前页码,从1开始", paramType = "query", required = true, dataType="int") ,
            @ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataType="int") ,
            @ApiImplicitParam(name = "status", value = "订单状态: 0未接单 1已接单 2已完成 3已取消", paramType = "query", dataType="int") ,
            @ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataType="String") ,
            @ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataType="String")
    })
    public Result<PageData<PensionOrderDTO>> getElderAllOrderOrByStatusList(@ApiIgnore @LoginUser UserEntity creator,
                                                                            @ApiIgnore @RequestParam Map<String, Object> params){
        Integer status = null;
        if (null != params.get("status")) {
            status = Integer.parseInt(params.get("status").toString());
        }
        PageData<PensionOrderDTO> page = pensionOrderService.getElderAllOrderOrByStatusPage(params, creator.getId(), status);
        return new Result<PageData<PensionOrderDTO>>().ok(page);
    }
76 77

    @Login
78
    @GetMapping("getOrderPageByStatus")
mlchun's avatar
mlchun committed
79
    @ApiOperation(value = "根据状态返回订单(志愿者)")
80 81 82
    @ApiImplicitParams({
            @ApiImplicitParam(name = Constant.PAGE, value = "当前页码,从1开始", paramType = "query", required = true, dataType="int") ,
            @ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataType="int") ,
83
            @ApiImplicitParam(name = "status", value = "订单状态: 0未接单 1已接单 2已完成 3已取消", paramType = "query",required = true, dataType="int") ,
84 85 86
            @ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataType="String") ,
            @ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataType="String")
    })
87 88 89
    public Result<PageData<PensionOrderDTO>> getOrderPageByStatus(@ApiIgnore @LoginUser UserEntity user,
                                                                  @ApiIgnore @RequestParam Map<String, Object> params){
        PageData<PensionOrderDTO> page = pensionOrderService.getOrderPageByStatus(params, user.getId(), Integer.parseInt(params.get("status").toString()));
90 91 92
        return new Result<PageData<PensionOrderDTO>>().ok(page);
    }

93
    @Login
94
    @GetMapping("getTodayOrderPageWithCover")
95
    @ApiOperation("今日订单(志愿者)")
96 97 98
    @ApiImplicitParams({
            @ApiImplicitParam(name = Constant.PAGE, value = "当前页码,从1开始", paramType = "query", required = true, dataType="int") ,
            @ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataType="int") ,
mengmeng's avatar
mengmeng committed
99
            @ApiImplicitParam(name = "status", value = "订单状态: 0未接单 1已接单 2已完成 3已取消", paramType = "query",required = true, dataType="int") ,
100 101 102
            @ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataType="String") ,
            @ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataType="String")
    })
103 104
    public Result<PageData<PensionOrderDTO>> getTodayOrderPageByStatus(@ApiIgnore @RequestParam Map<String, Object> params){
        PageData<PensionOrderDTO> page = pensionOrderService.getTodayOrderPage(params);
105 106 107
        return new Result<PageData<PensionOrderDTO>>().ok(page);
    }

108 109 110 111 112 113 114 115 116 117 118 119 120 121
    @Login
    @GetMapping("getElderTodayOrderPage")
    @ApiOperation("今日订单(老人)")
    @ApiImplicitParams({
            @ApiImplicitParam(name = Constant.PAGE, value = "当前页码,从1开始", paramType = "query", required = true, dataType="int") ,
            @ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataType="int") ,
            @ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataType="String") ,
            @ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataType="String")
    })
    public Result<PageData<PensionOrderDTO>> getElderTodayOrderPage(@ApiIgnore @LoginUser UserEntity creator,
                                                                    @ApiIgnore @RequestParam Map<String, Object> params){
        PageData<PensionOrderDTO> page = pensionOrderService.getElderTodayOrderPage(params, creator.getId());
        return new Result<PageData<PensionOrderDTO>>().ok(page);
    }
mengmeng's avatar
mengmeng committed
122

mlchun's avatar
mlchun committed
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
    @Login
    @GetMapping("getAllOrderByCommunityUserIdPage")
    @ApiOperation("本社区全部订单(社工)")
    @ApiImplicitParams({
            @ApiImplicitParam(name = Constant.PAGE, value = "当前页码,从1开始", paramType = "query", required = true, dataType="int") ,
            @ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataType="int") ,
            @ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataType="String") ,
            @ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataType="String")
    })
    public Result<PageData<PensionOrderDTO>> getAllOrderByCommunityUserIdPage(@ApiIgnore @LoginUser UserEntity user,
                                                                              @ApiIgnore @RequestParam Map<String, Object> params){
        PageData<PensionOrderDTO> page = pensionOrderService.getAllOrderByCommunityUserIdPage(params, user.getId());
        return new Result<PageData<PensionOrderDTO>>().ok(page);
    }

    @Login
    @GetMapping("getElderAllOrderByCommunityUserIdPage")
    @ApiOperation("查询本社区某老人全部订单(社工)")
    @ApiImplicitParams({
            @ApiImplicitParam(name = Constant.PAGE, value = "当前页码,从1开始", paramType = "query", required = true, dataType="int") ,
            @ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataType="int") ,
            @ApiImplicitParam(name = "name", value = "需要查询老人的名字", paramType = "query",required = true, dataType="String") ,
            @ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataType="String") ,
            @ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataType="String")
    })
    public Result<PageData<PensionOrderDTO>> getElderAllOrderByCommunityUserIdPage(@ApiIgnore @LoginUser UserEntity user,
                                                                                   @ApiIgnore @RequestParam Map<String, Object> params){
        PageData<PensionOrderDTO> page = pensionOrderService.getElderAllOrderByCommunityUserIdPage(params, user.getId(), params.get("name").toString());
        return new Result<PageData<PensionOrderDTO>>().ok(page);
    }

154 155
    @Login
    @GetMapping("orderInfo/{id}")
156
    @ApiOperation("预约订单详情(志愿者)")
157 158
    public Result<PensionOrderDTO> getOrderInfo(@ApiIgnore @LoginUser UserEntity user,
                                                @PathVariable("id") Long id){
159
        PensionOrderDTO data = pensionOrderService.getOrderInfoByIdAndUserIdOrStatus(id, null, null);
160 161 162
        return new Result<PensionOrderDTO>().ok(data);
    }

mlchun's avatar
mlchun committed
163 164
    @Login
    @PutMapping("takingOrder/{id}")
165
    @ApiOperation("接单(志愿者)")
mlchun's avatar
mlchun committed
166 167
    public Result takingOrder(@ApiIgnore @LoginUser UserEntity user,
                              @PathVariable("id") Long id){
168
        PensionOrderDTO pensionOrderDTO = pensionOrderService.getOrderInfoByIdAndStatus(id, Constant.OrderStatus.BOOKED.geStatus());
mlchun's avatar
mlchun committed
169 170 171 172 173 174
        Date recipientTime = new Date();
        pensionOrderDTO.setOrderRecipientId(user.getId());
        pensionOrderDTO.setOrderRecipientName(user.getUsername());
        pensionOrderDTO.setOrderRecipientPhone(user.getMobile());
        pensionOrderDTO.setOrderRecipientTime(recipientTime);
        pensionOrderDTO.setUpdateDate(recipientTime);
175
        pensionOrderDTO.setStatus(Constant.OrderStatus.ORDER.geStatus());
mlchun's avatar
mlchun committed
176 177 178 179 180 181
        pensionOrderDTO.setStatusName("已接单");
        pensionOrderService.update(pensionOrderDTO);

        return new Result();
    }

mlchun's avatar
mlchun committed
182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211
    //新订单接口

    /**
     * 服务人员订单接口
     */
    @Login
    @GetMapping("staff")
    @ApiOperation(value = "根据状态返回订单列表(服务人员)")
    @ApiImplicitParams({
            @ApiImplicitParam(name = Constant.PAGE, value = "当前页码,从1开始", paramType = "query", required = true, dataType="int") ,
            @ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query", required = true, dataType="int") ,
            @ApiImplicitParam(name = "status", value = "订单状态: 1待完成 2已完成 3已取消", paramType = "query", required = true, dataType="int") ,
            @ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataType="String") ,
            @ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataType="String")
    })
    public Result<PageData<PensionOrderDTO>> staff(@ApiIgnore @LoginUser UserEntity user,
                                                   @ApiIgnore @RequestParam Map<String, Object> params){
        PageData<PensionOrderDTO> page = pensionOrderService.getOrderPageByStatus(params, user.getId(), Integer.parseInt(params.get("status").toString()));
        return new Result<PageData<PensionOrderDTO>>().ok(page);
    }

    /**
     * 机构订单接口
     */
    @Login
    @GetMapping("organization")
    @ApiOperation(value = "根据状态返回订单列表(机构)")
    @ApiImplicitParams({
            @ApiImplicitParam(name = Constant.PAGE, value = "当前页码,从1开始", paramType = "query", required = true, dataType="int") ,
            @ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query", required = true, dataType="int") ,
mlchun's avatar
mlchun committed
212
            @ApiImplicitParam(name = "status", value = "订单状态: 0未接单 1已派发 2已完成 3已取消 5已接单未派发", paramType = "query", dataType="int") ,
mlchun's avatar
mlchun committed
213 214 215 216 217
            @ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataType="String") ,
            @ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataType="String")
    })
    public Result<PageData<PensionOrderDTO>> organization(@ApiIgnore @LoginUser UserEntity user,
                                                   @ApiIgnore @RequestParam Map<String, Object> params){
mlchun's avatar
mlchun committed
218 219
        //登录->查询登录人员所属机构ID->机构ID查询服务ID(List)->服务ID + 状态查询订单(List)
        PageData<PensionOrderDTO> page = pensionOrderService.getOrganizationOrder(params, user.getId());
mlchun's avatar
mlchun committed
220 221 222 223 224 225 226 227
        return new Result<PageData<PensionOrderDTO>>().ok(page);
    }

    /**
     * 老人、子女订单接口
     */
    @Login
    @GetMapping("elderFamily")
mlchun's avatar
mlchun committed
228
    @ApiOperation(value = "全部/根据状态返回订单(老人/子女)", notes = "老人、子女的待完成实际是机构处的已派发未接单+已接单")
mlchun's avatar
mlchun committed
229 230 231
    @ApiImplicitParams({
            @ApiImplicitParam(name = Constant.PAGE, value = "当前页码,从1开始", paramType = "query", required = true, dataType="int") ,
            @ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataType="int") ,
mlchun's avatar
mlchun committed
232
            @ApiImplicitParam(name = "status", value = "订单状态: 0未接单 6待完成 3已取消 4待评价 留空全部", paramType = "query", dataType="int") ,
mlchun's avatar
mlchun committed
233 234 235 236 237 238 239 240 241 242 243 244 245 246 247
            @ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataType="String") ,
            @ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataType="String")
    })
    public Result<PageData<PensionOrderDTO>> elderFamily(@ApiIgnore @LoginUser UserEntity user,
                                                         @ApiIgnore @RequestParam Map<String, Object> params){
        Integer status = null;
        if (null != params.get("status")) {
            status = Integer.parseInt(params.get("status").toString());
        }
        PageData<PensionOrderDTO> page = pensionOrderService.getElderAllOrderOrByStatusPage(params, user.getId(), status);
        return new Result<PageData<PensionOrderDTO>>().ok(page);
    }

    //新订单接口

248 249 250 251
    @GetMapping("{id}")
    @ApiOperation("信息")
    public Result<PensionOrderDTO> get(@PathVariable("id") Long id){
        PensionOrderDTO data = pensionOrderService.get(id);
mengmeng's avatar
mengmeng committed
252 253 254 255 256 257 258 259 260 261 262 263

        return new Result<PensionOrderDTO>().ok(data);
    }

    @Login
    @PostMapping("reservationOrder")
    @ApiOperation("预约保存")
    public Result reservationOrder(@ApiIgnore @LoginUser UserEntity user,@RequestBody ReservationDTO dto){

        PensionOrderDTO data = new PensionOrderDTO().assemblePensionOrder(dto,user);
        pensionOrderService.reservation(data);
        return new Result();
264 265 266 267 268 269 270
    }

    @PostMapping
    @ApiOperation("保存")
    public Result save(@RequestBody PensionOrderDTO dto){
        //校验数据
        ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
mlchun's avatar
mlchun committed
271

272 273 274 275 276 277 278 279 280 281
        pensionOrderService.save(dto);

        return new Result();
    }

    @PutMapping
    @ApiOperation("修改")
    public Result update(@RequestBody PensionOrderDTO dto){
        //校验数据
        ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
mengmeng's avatar
mengmeng committed
282 283

        pensionOrderService.update(dto);
284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299

        return new Result();
    }

    @DeleteMapping
    @ApiOperation("删除")
    public Result delete(@RequestBody Long[] ids){
        //校验数据
        AssertUtils.isArrayEmpty(ids, "id");

        pensionOrderService.delete(ids);

        return new Result();
    }

}