package com.jilongda.manage.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; 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 java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.List; /** *

* 订单核算表 前端控制器 *

* * @author 无关风月 * @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; @Autowired private TOptometryService optometryService; @ApiOperation(value = "核算订单分页列表") @PostMapping(value = "/pageList") public ApiResult> pageList(@RequestBody TOrderAccountingQuery query) { if (StringUtils.hasLength(query.getStartTime())){ query.setStartTime(query.getStartTime()+" 00:00:00"); query.setEndTime(query.getEndTime()+" 23:59:59"); } PageInfo res = orderAccountingService.pageList(query); return ApiResult.success(res); } @ApiOperation(value = "核算详情页面") @GetMapping(value = "/detail") public ApiResult 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.setRealName(byId1.getRealName()); res.setGender(byId1.getGender()); } }else { res.setPhone(byId.getPhone()); res.setAge(byId.getAge()); res.setRealName(byId.getRealName()); res.setGender(byId.getGender()); } List list1 = orderItemsService.lambdaQuery().eq(TOrderItems::getOrderId, id).list(); for (TOrderItems orderItems : list1) { SecFeeItems secFeeItems = feeItemsService.getById(orderItems.getItemsId()); orderItems.setItemsName(secFeeItems.getName()); } res.setItemsId(byId.getItemsId()); res.setUserId(byId.getUserId()); res.setOptometryId(byId.getOptometryId()); List list = optometryDetailService.lambdaQuery().eq(TOptometryDetail::getOrderId, id) .eq(TOptometryDetail::getType, 1).list(); res.setOptometryDetails(list); List 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.setRealPayMoney(byId.getPayMoney()); SecFeeItems one1 = feeItemsService.lambdaQuery().eq(SecFeeItems::getId, byId.getItemsId()) .one(); res.setPayType(one1.getName()); res.setProfitMoney(byId.getProfitMoney()); res.setProfitRating(byId.getProfitRating()); List orderItems = orderItemsService.list(Wrappers.lambdaQuery(TOrderItems.class) .eq(TOrderItems::getOrderId, id)); res.setOrderItems(orderItems); return ApiResult.success(res); } @Autowired private TOrderItemsService orderItemsService; @ApiOperation(value = "确认核算操作") @PostMapping(value = "/confirm") public ApiResult confirm(@RequestBody AccountDetailDTO dto) { List list = dto.getList(); orderGoodsService.updateBatchById(list); TOrder byId = orderService.getById(dto.getId()); 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()); byId.setProfitRating(dto.getProfitRating()); byId.setProfitMoney(dto.getProfitMoney()); orderService.updateById(byId); boolean remove = orderItemsService .remove(new LambdaQueryWrapper() .eq(TOrderItems::getOrderId, dto.getId())); orderItemsService.saveBatch(dto.getListItems()); return ApiResult.success(); } }