| | |
| | | package com.kidgrow.oprationcenter.controller; |
| | | |
| | | import com.kidgrow.common.annotation.LoginUser; |
| | | import com.kidgrow.common.constant.CommonConstant; |
| | | import com.kidgrow.common.controller.BaseController; |
| | | import com.kidgrow.common.model.PageResult; |
| | | import com.kidgrow.common.model.ResultBody; |
| | | import com.kidgrow.common.model.SysOrganization; |
| | | import com.kidgrow.common.model.SysUser; |
| | | import com.kidgrow.common.model.*; |
| | | import com.kidgrow.oprationcenter.model.HospitalInfo; |
| | | import com.kidgrow.oprationcenter.model.ProductOrder; |
| | | import com.kidgrow.oprationcenter.model.ProductOrderDetail; |
| | | import com.kidgrow.oprationcenter.model.ProductOrderRecord; |
| | | import com.kidgrow.oprationcenter.service.IBusinessRecordsService; |
| | | import com.kidgrow.oprationcenter.service.IProductOrderDetailService; |
| | | import com.kidgrow.oprationcenter.service.IProductOrderRecordService; |
| | | import com.kidgrow.oprationcenter.service.IProductOrderService; |
| | | import com.kidgrow.oprationcenter.vo.OrderChartVo; |
| | | import com.kidgrow.oprationcenter.vo.ProductOrderJoinDetail; |
| | | import com.kidgrow.oprationcenter.vo.UserProductData; |
| | | import com.kidgrow.usercenter.feign.SysUserService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | |
| | | private IBusinessRecordsService businessRecordsService; |
| | | @Autowired |
| | | private IProductOrderService productOrderService; |
| | | |
| | | @Autowired |
| | | private SysUserService sysUserServiceFeign; |
| | | /** |
| | | * 列表 |
| | | */ |
| | |
| | | } |
| | | return productOrderDetailService.findList(params); |
| | | } |
| | | |
| | | /** |
| | | * 列表 |
| | | */ |
| | |
| | | @ApiImplicitParam(name = "page", value = "分页起始位置", required = true, dataType = "Integer"), |
| | | @ApiImplicitParam(name = "limit", value = "分页结束位置", required = true, dataType = "Integer") |
| | | }) |
| | | @GetMapping("alldetail") |
| | | public PageResult alldetail(@RequestParam Map<String, Object> params) { |
| | | if (params.size() == 0) { |
| | | params.put("page", 1); |
| | | params.put("limit", 10); |
| | | } |
| | | return productOrderDetailService.departmentProductDetail(params); |
| | | } |
| | | |
| | | /** |
| | | * 列表 |
| | | */ |
| | | @ApiOperation(value = "查询列表") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "page", value = "分页起始位置", required = true, dataType = "Integer"), |
| | | @ApiImplicitParam(name = "limit", value = "分页结束位置", required = true, dataType = "Integer") |
| | | }) |
| | | @PostMapping("/alldata") |
| | | public PageResult findAllDataList(@RequestParam Map<String, Object> params) { |
| | | if (params.size() == 0) { |
| | | params.put("page", 1); |
| | | params.put("limit", 10); |
| | | } |
| | | if(params.get("diagnosticHospitalId")==null) |
| | | if (params.get("diagnosticHospitalId") == null) |
| | | return PageResult.<ProductOrderJoinDetail>builder().data(null).code(0).count(0L).build(); |
| | | return productOrderDetailService.findAllDataList(params); |
| | | } |
| | |
| | | } |
| | | return productOrderDetailService.groupList(params); |
| | | } |
| | | |
| | | /** |
| | | * 查询到期列表 |
| | | */ |
| | | @ApiOperation(value = "查询到期列表") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "page", value = "分页起始位置", required = true, dataType = "Integer"), |
| | | @ApiImplicitParam(name = "limit", value = "分页结束位置", required = true, dataType = "Integer") |
| | | }) |
| | | @GetMapping("/productEnd") |
| | | public PageResult productEndList(@RequestParam Map<String, Object> params) { |
| | | if (params.size() == 0) { |
| | | params.put("page", 1); |
| | | params.put("limit", 10); |
| | | } |
| | | return productOrderDetailService.productEndList(params); |
| | | } |
| | | /** |
| | | * 获取医院套餐是否到期和到期时间 |
| | | * data内 isend为true说明套餐到期 |
| | | * endtime上套餐的到期时间 |
| | | * |
| | | * @param hospitalId |
| | | * @param departmentId |
| | | * @param diagnosticId |
| | | * @return |
| | | */ |
| | | |
| | | @ApiOperation(value = "获取医院套餐是否到期和到期时间") |
| | | @GetMapping("/UserProductDetailData") |
| | | public ResultBody UserProductDetailData(@RequestParam Long hospitalId,@RequestParam Long departmentId) { |
| | | return productOrderDetailService.UserProductDetailData(hospitalId,departmentId); |
| | | public ResultBody<UserProductData> serProductDetailData(@RequestParam Long hospitalId, @RequestParam Long departmentId,@RequestParam String diagnosticId) { |
| | | return productOrderDetailService.userProductDetailData(hospitalId, departmentId,diagnosticId); |
| | | } |
| | | |
| | | /** |
| | | * 获取医院套餐是否到期和到期时间 |
| | | * data内 isend为true说明套餐到期 |
| | | * endtime上套餐的到期时间 |
| | | * |
| | | * @return |
| | | */ |
| | | |
| | | @ApiOperation(value = "获取医院套餐是否到期和到期时间") |
| | | @PostMapping("/serviceperiod") |
| | | public ResultBody<UserProductData> ServicePeriod(@RequestBody HospitalInfo hospitalInfo) { |
| | | return productOrderDetailService.UserProductDetailData(hospitalInfo.getHospitalId(),hospitalInfo.getDepartmentId()); |
| | | public ResultBody<UserProductData> servicePeriod(@RequestBody HospitalInfo hospitalInfo) { |
| | | return productOrderDetailService.userProductDetailData(hospitalInfo.getHospitalId(), hospitalInfo.getDepartmentId(),hospitalInfo.getDiagnosticId()); |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | @ApiOperation(value = "保存") |
| | | @PostMapping |
| | | public ResultBody save(@Valid @RequestBody ProductOrderDetail productOrderDetail, BindingResult bindingResult,@LoginUser SysUser sysUser) { |
| | | public ResultBody save(@Valid @RequestBody ProductOrderDetail productOrderDetail, BindingResult bindingResult, @LoginUser SysUser sysUser) { |
| | | List<String> errMsg = new ArrayList<>(); |
| | | if (bindingResult.hasErrors()) { |
| | | for (ObjectError error : bindingResult.getAllErrors()) { |
| | |
| | | return ResultBody.failed().msg(errMsg.toString()); |
| | | } else { |
| | | List<SysOrganization> organizations = sysUser.getOrganizations(); |
| | | if(organizations.size()>0){ |
| | | productOrderDetail.setCreateUserOrgCode(organizations.get(organizations.size()-1).getOrgCode()); |
| | | if (organizations.size() > 0) { |
| | | productOrderDetail.setCreateUserOrgCode(organizations.get(organizations.size() - 1).getOrgCode()); |
| | | } |
| | | boolean v = productOrderDetailService.saveOrUpdate(productOrderDetail); |
| | | if (v) { |
| | |
| | | } |
| | | |
| | | /** |
| | | * 新增or更新 |
| | | * 新增or更新 套餐充值 |
| | | */ |
| | | @ApiOperation(value = "保存") |
| | | @PostMapping("/saveall") |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public ResultBody batchInsert(@Valid @RequestBody List<ProductOrderDetail> list, BindingResult bindingResult) { |
| | | public ResultBody batchInsert(@Valid @RequestBody List<ProductOrderDetail> list,BindingResult bindingResult) { |
| | | List<String> errMsg = new ArrayList<>(); |
| | | if (bindingResult.hasErrors()) { |
| | | for (ObjectError error : bindingResult.getAllErrors()) { |
| | |
| | | } |
| | | return ResultBody.failed().msg(errMsg.toString()); |
| | | } else { |
| | | //写充值套餐给用户 |
| | | Boolean v = productOrderDetailService.saveBatch(list); |
| | | //写充值记录 |
| | | //对象转换 |
| | | List<ProductOrderRecord> productOrderRecordList= new ArrayList<ProductOrderRecord>();; |
| | | list.forEach(item->{ |
| | | ProductOrderRecord productOrderRecord=new ProductOrderRecord(); |
| | | productOrderRecord.setAilightCount(item.getAilightCount()); |
| | | productOrderRecord.setOrderId(item.getOrderId()); |
| | | productOrderRecord.setProId(item.getProId()); |
| | | productOrderRecord.setProName(item.getProName()); |
| | | productOrderRecord.setProType(item.getProType()); |
| | | productOrderRecord.setIsShare(item.getIsShare()); |
| | | productOrderRecord.setIsDel(item.getIsDel()); |
| | | productOrderRecord.setRecordCount(item.getRecordCount()); |
| | | productOrderRecord.setProBegintime(item.getProBegintime()); |
| | | productOrderRecord.setProEndtime(item.getProEndtime()); |
| | | productOrderRecord.setEnabled(item.getEnabled()); |
| | | productOrderRecordList.add(productOrderRecord); |
| | | }); |
| | | Boolean r = productOrderRecordService.saveBatch(productOrderRecordList); |
| | | if (v&&r) { |
| | | return ResultBody.ok().data(list.size()).msg("产品充值成功"); |
| | | //先检查科室试用数量是否已经超 |
| | | ProductOrder productOrder = productOrderService.getById(list.get(0).getOrderId()); |
| | | if (productOrder != null) { |
| | | //是否管理人员 |
| | | boolean ismanager=false, |
| | | //是否有待审核套餐 |
| | | isenabled=false; |
| | | //如果是超管,高管,销售部门管理 则不受次数限制 |
| | | ResultBody<LoginAppUser> loginAppUserTemp=sysUserServiceFeign.getLoginAppUser(); |
| | | LoginAppUser loginAppUser=loginAppUserTemp.getData(); |
| | | if (loginAppUser != null) { |
| | | |
| | | List<SysRole> sysRoleList = loginAppUser.getRoles(); |
| | | if (sysRoleList != null && sysRoleList.size() > 0) { |
| | | for (int i = 0; i < sysRoleList.size(); i++) { |
| | | String roleName = sysRoleList.get(i).getCode(); |
| | | if (roleName.equals(CommonConstant.SYSTEM_ADMIN_ROLE_CODE) || |
| | | roleName.equals(CommonConstant.SALE_MANAGER_ROLE_CODE) || |
| | | roleName.equals(CommonConstant.PC_ADMIN_ROLE_CODE) || |
| | | roleName.equals(CommonConstant.OPRATIONMANAGER_ROLE_CODE)) { |
| | | ismanager=true; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | if (!ismanager) { |
| | | int counts = productOrderDetailService.getEnabledCount(productOrder.getDepartmentId()); |
| | | if (counts >= CommonConstant.MAX_FREE_COUNT) { |
| | | //超过了限定次数 将试用套餐改为禁用 待审核 |
| | | for (int i = 0; i <list.size() ; i++) { |
| | | if (list.get(i).getProType()==0) { |
| | | //试用套餐 |
| | | list.get(i).setEnabled(false); |
| | | isenabled=true; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //写充值套餐给用户 |
| | | Boolean v = productOrderDetailService.saveBatch(list); |
| | | //写充值记录 |
| | | //对象转换 |
| | | List<ProductOrderRecord> productOrderRecordList = new ArrayList<ProductOrderRecord>(); |
| | | ; |
| | | list.forEach(item -> { |
| | | ProductOrderRecord productOrderRecord = new ProductOrderRecord(); |
| | | productOrderRecord.setAilightCount(item.getAilightCount()); |
| | | productOrderRecord.setOrderId(item.getOrderId()); |
| | | productOrderRecord.setProId(item.getProId()); |
| | | productOrderRecord.setProName(item.getProName()); |
| | | productOrderRecord.setProType(item.getProType()); |
| | | productOrderRecord.setIsShare(item.getIsShare()); |
| | | productOrderRecord.setIsDel(item.getIsDel()); |
| | | productOrderRecord.setRecordCount(item.getRecordCount()); |
| | | productOrderRecord.setProBegintime(item.getProBegintime()); |
| | | productOrderRecord.setProEndtime(item.getProEndtime()); |
| | | productOrderRecord.setEnabled(item.getEnabled()); |
| | | productOrderRecordList.add(productOrderRecord); |
| | | }); |
| | | Boolean r = productOrderRecordService.saveBatch(productOrderRecordList); |
| | | //更新合同 |
| | | Boolean p = false; |
| | | if (productOrder != null) { |
| | | productOrder.setIsDel(false); |
| | | p = productOrderService.saveOrUpdate(productOrder); |
| | | } |
| | | if (v && r && p) { |
| | | if (isenabled) { |
| | | return ResultBody.ok().data(list.size()).msg("充值成功,但是试用套餐需要管理审核才可使用!"); |
| | | } |
| | | else |
| | | { |
| | | return ResultBody.ok().data(list.size()).msg("产品充值成功..."); |
| | | } |
| | | } else { |
| | | //写入订单明细失败,则删除订单记录数据 |
| | | Boolean e = productOrderService.removeById(list.get(0).getOrderId()); |
| | | if (e) |
| | | return ResultBody.failed().msg("充值数据保存失败,订单已撤回!"); |
| | | else |
| | | return ResultBody.failed().msg("充值数据保存失败,订单撤回失败!"); |
| | | } |
| | | } else { |
| | | //写入订单明细失败,则删除订单记录数据 |
| | | Boolean e = productOrderService.removeById(list.get(0).getOrderId()); |
| | | if (e) |
| | | return ResultBody.failed().msg("充值数据保存失败,订单已撤回!"); |
| | | else |
| | | return ResultBody.failed().msg("充值数据保存失败,订单撤回失败!"); |
| | | return ResultBody.failed().msg("充值数据关联订单不存在!"); |
| | | } |
| | | } |
| | | } |
| | |
| | | boolean v = productOrderDetailService.removeById(id); |
| | | if (v) { |
| | | if (!businessRecordsService.recordBusinessData("删除订单明细:" + id, id.toString())) { |
| | | //log.error(String.format("删除订单明细id为:{1}",id)); |
| | | log.error(String.format("删除订单明细id为:{1}", id)); |
| | | } |
| | | return ResultBody.ok().msg("删除成功"); |
| | | } else { |
| | |
| | | if (resultBody.getCode() == 0) { |
| | | String enablad = (MapUtils.getBoolean(params, "enabled")) ? "启用" : "禁用"; |
| | | if (!businessRecordsService.recordBusinessData("修改订单明细状态为:" + enablad, enablad)) { |
| | | //log.error(String.format("修改合同状态为:{0},写入业务日志失败!合同管理id为:{1}",enablad,MapUtils.getString(params,"id"))); |
| | | log.error(String.format("修改合同状态为:{0},写入业务日志失败!合同管理id为:{1}", enablad, MapUtils.getString(params, "id"))); |
| | | } |
| | | } |
| | | return resultBody; |
| | |
| | | public ResultBody getTypeByUser(@LoginUser SysUser sysUser) { |
| | | return productOrderDetailService.getTypeByUser(sysUser); |
| | | } |
| | | |
| | | /** |
| | | * 统计获取数据量 |
| | | * @param datatype |
| | | * 0 试用审核量 |
| | | * 1 套餐总量 |
| | | * 2 未处理用户反馈 |
| | | * 3 未处理数据需求 |
| | | * @return |
| | | */ |
| | | @ApiOperation(value = "统计获取数据量") |
| | | @GetMapping("/oprationChart") |
| | | public ResultBody oprationChart(int datatype) { |
| | | int counts=productOrderDetailService.oprationChart(datatype); |
| | | return ResultBody.ok().data(counts).msg("数据获取成功!") ; |
| | | } |
| | | |
| | | /** |
| | | * 按指定类型统计合同数量 |
| | | * @param params |
| | | * datatype 1 按年 |
| | | * 2 按月 |
| | | * 3 按天 |
| | | * 4 按周 |
| | | * beginTime 查询时间段的开始时间 |
| | | * endTime 结束时间 |
| | | * @return |
| | | */ |
| | | @ApiOperation(value = "按指定类型统计合同数量") |
| | | @GetMapping("/productOrderChart") |
| | | public ResultBody productOrderChart(@RequestParam Map<String, Object> params) { |
| | | List<OrderChartVo> orderChartVo=productOrderDetailService.productOrderChart(params); |
| | | return ResultBody.ok().data(orderChartVo).msg("数据获取成功!") ; |
| | | } |
| | | |
| | | /** |
| | | * 统计产品的使用数量 |
| | | * @return ccount 是数量 |
| | | * units 是产品名称 |
| | | */ |
| | | @ApiOperation(value = "统计产品的使用数量") |
| | | @GetMapping("/proCountChart") |
| | | public ResultBody proCountChart() { |
| | | List<OrderChartVo> orderChartVo=productOrderDetailService.proCountChart(); |
| | | return ResultBody.ok().data(orderChartVo).msg("数据获取成功!") ; |
| | | } |
| | | } |