| | |
| | | package com.jilongda.manage.controller; |
| | | |
| | | |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import com.jilongda.common.basic.ApiResult; |
| | | import com.jilongda.common.basic.PageInfo; |
| | | import com.jilongda.manage.authority.model.SecUser; |
| | | import com.jilongda.manage.authority.service.SecUserService; |
| | | import com.jilongda.manage.dto.AccountDetailDTO; |
| | | import com.jilongda.manage.model.*; |
| | | import com.jilongda.manage.query.TLineUpQuery; |
| | | import com.jilongda.manage.query.TOrderAccountingQuery; |
| | | import com.jilongda.manage.service.*; |
| | | import com.jilongda.manage.utils.LoginInfoUtil; |
| | | import com.jilongda.manage.vo.TOrderAccountVO; |
| | | import com.jilongda.manage.vo.TOrderVO; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.util.StringUtils; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDateTime; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | * @since 2024-12-09 |
| | | */ |
| | | @RestController |
| | | @Api(tags = "订单核算") |
| | | @RequestMapping("/t-order-accounting") |
| | | public class TOrderAccountingController { |
| | | |
| | | @Autowired |
| | | private SecUserService secUserService; |
| | | @Autowired |
| | | private TStoreService storeService; |
| | | @Autowired |
| | | private TOrderService orderService; |
| | | @Autowired |
| | | private TOrderAccountingService orderAccountingService; |
| | | @Autowired |
| | | private TAppUserService appUserService; |
| | | @Autowired |
| | | private TOptometryDetailService optometryDetailService; |
| | | @Autowired |
| | | private TOrderGoodsService orderGoodsService; |
| | | @Autowired |
| | | private SecFeeItemsService feeItemsService; |
| | | @Autowired |
| | | private LoginInfoUtil loginInfoUtil; |
| | | @ApiOperation(value = "核算订单分页列表") |
| | | @PostMapping(value = "/pageList") |
| | | public ApiResult<PageInfo<TOrderVO>> pageList(@RequestBody TOrderAccountingQuery query) { |
| | | if (StringUtils.hasLength(query.getStartTime())){ |
| | | query.setStartTime(query.getStartTime()+" 00:00:00"); |
| | | query.setEndTime(query.getEndTime()+" 23:59:59"); |
| | | } |
| | | PageInfo<TOrderVO> res = orderAccountingService.pageList(query); |
| | | return ApiResult.success(res); |
| | | } |
| | | @ApiOperation(value = "核算详情页面") |
| | | @GetMapping(value = "/detail") |
| | | public ApiResult<TOrderAccountVO> detail(Integer id) { |
| | | TOrderAccountVO res = new TOrderAccountVO(); |
| | | TOrder byId = orderService.getById(id); |
| | | if (byId.getUserId()!=null){ |
| | | TAppUser byId1 = appUserService.getById(byId.getUserId()); |
| | | if(byId1!=null){ |
| | | res.setName(byId1.getName()); |
| | | res.setPhone(byId1.getPhone()); |
| | | } |
| | | } |
| | | res.setAge(byId.getAge()); |
| | | res.setRealName(byId.getRealName()); |
| | | res.setGender(byId.getGender()); |
| | | List<TOptometryDetail> list = optometryDetailService.lambdaQuery().eq(TOptometryDetail::getOrderId, id) |
| | | .eq(TOptometryDetail::getType, 1).list(); |
| | | res.setOptometryDetails(list); |
| | | List<TOrderGoods> orderGoods = orderGoodsService.lambdaQuery() |
| | | .eq(TOrderGoods::getOrderId, id).list(); |
| | | BigDecimal goodsMoney = new BigDecimal("0"); |
| | | BigDecimal costMoney = new BigDecimal("0"); |
| | | BigDecimal constConfirm = new BigDecimal("0"); |
| | | for (TOrderGoods orderGood : orderGoods) { |
| | | goodsMoney =goodsMoney.add(orderGood.getGoodsMoney()); |
| | | costMoney=costMoney.add(orderGood.getCost()==null?new BigDecimal("0"):orderGood.getCost()); |
| | | constConfirm=constConfirm.add(orderGood.getConstConfirm()==null?new BigDecimal("0"):orderGood.getConstConfirm()); |
| | | } |
| | | res.setOrderGoods(orderGoods); |
| | | TStore byId1 = storeService.getById(byId.getStoreId()); |
| | | res.setStoreName(byId1.getName()); |
| | | res.setOrderMoney(goodsMoney); |
| | | res.setCouponMoney(byId.getCouponMoney()); |
| | | res.setPayMoney(byId.getPayMoney()); |
| | | res.setPayType(byId.getPayTypeName()); |
| | | res.setRealPayMoney(byId.getPayMoney()); |
| | | SecFeeItems one1 = feeItemsService.lambdaQuery().eq(SecFeeItems::getName, byId.getPayTypeName()) |
| | | .one(); |
| | | BigDecimal percent = one1.getPercent(); |
| | | BigDecimal bigDecimal1 = byId.getPayMoney().multiply(percent).setScale(2, BigDecimal.ROUND_DOWN); |
| | | res.setCommission(bigDecimal1); |
| | | if (byId.getIsAccounting()==1){ |
| | | res.setProfitMoney(byId.getPayMoney().subtract(bigDecimal1).subtract(constConfirm)); |
| | | res.setProfitRating(res.getProfitMoney().divide(byId.getPayMoney(),2, BigDecimal.ROUND_DOWN)); |
| | | } |
| | | return ApiResult.success(res); |
| | | } |
| | | @ApiOperation(value = "确认核算操作") |
| | | @GetMapping(value = "/confirm") |
| | | public ApiResult confirm(@RequestBody AccountDetailDTO dto) { |
| | | List<TOrderGoods> list = dto.getList(); |
| | | orderGoodsService.updateBatchById(list); |
| | | TOrder byId = orderService.getById(dto.getId()); |
| | | byId.setPayTypeName(dto.getPayTypeName()); |
| | | byId.setPayTypeName(dto.getPayTypeName()); |
| | | byId.setPayMoney(dto.getPayMoney()); |
| | | byId.setCommissionMoney(dto.getCommission()); |
| | | byId.setIsAccounting(1); |
| | | Long userId = loginInfoUtil.getUserId(); |
| | | SecUser byId1 = secUserService.getById(userId); |
| | | byId.setAccountingName(byId1.getNickName()); |
| | | byId.setAccountingTime(LocalDateTime.now()); |
| | | orderService.updateById(byId); |
| | | return ApiResult.success(); |
| | | } |
| | | } |
| | | |