无关风月
2025-02-28 2f8e70ad2884d2b6b7443dfae0af11ae9cfc8b99
manage/src/main/java/com/jilongda/manage/controller/TOrderController.java
@@ -2,6 +2,10 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.jilongda.common.Ticket.TAddOptometryVO;
import com.jilongda.common.Ticket.TOptometryDetailVO;
import com.jilongda.common.Ticket.TOrderGoodsPrintVO;
import com.jilongda.common.Ticket.TicketUtil;
import com.jilongda.common.basic.ApiResult;
import com.jilongda.common.basic.PageInfo;
import com.jilongda.manage.authority.model.SecUser;
@@ -14,12 +18,10 @@
import com.jilongda.manage.service.*;
import com.jilongda.manage.utils.LoginInfoUtil;
import com.jilongda.manage.utils.OssUploadUtil;
import com.jilongda.manage.vo.TModelVO;
import com.jilongda.manage.vo.TOptometryVO;
import com.jilongda.manage.vo.TOrderListVO;
import com.jilongda.manage.vo.TOrderVO;
import com.jilongda.manage.vo.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
@@ -28,6 +30,7 @@
import org.springframework.web.multipart.MultipartFile;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
@@ -81,6 +84,8 @@
    private TSupplierService supplierService;
    @Autowired
    private TMaterialService materialService;
    @Autowired
    private TLineUpService lineUpService;
    @PostMapping("/obs-upload")
    @ApiOperation(value = "文件上传",tags = "管理后台-文件上传")
@@ -176,7 +181,10 @@
        return ApiResult.success(tCouponReceives);
    }
    @Autowired
    private TTicketService tTicketService;
    @Autowired
    private TStoreService storeService;
    @ApiOperation(value = "添加订单")
    @PostMapping(value = "/addOrder")
    public ApiResult addOrder(@RequestBody TOrderDTO dto) {
@@ -208,13 +216,16 @@
                String[] split = null;
                if(StringUtils.hasLength(rLens)){
                    split = rLens.split(",");
                    if (split.length == 1){
                    }
                }else {
                    split = orderGood.getLLens().split(",");
                }
                TBrand one1 = brandService.lambdaQuery().eq(TBrand::getName, orderGood.getBrandName())
                TBrand brand = brandService.lambdaQuery().eq(TBrand::getName, orderGood.getBrandName())
                        .eq(TBrand::getType, 2).one();
                TLensSeries lensSeries = lensSeriesService.lambdaQuery().eq(TLensSeries::getName, orderGood.getSeriesName())
                        .eq(TLensSeries::getBrandId, one1.getId()).one();
                        .eq(TLensSeries::getBrandId, brand.getId()).one();
                TLensGoods one = lensGoodsService.lambdaQuery()
                        .eq(StringUtils.hasLength(orderGood.getSeriesName()),TLensGoods::getSeriesId, lensSeries.getId())
                        .eq(StringUtils.hasLength(orderGood.getRefractiveIndex()),TLensGoods::getRefractiveIndex, orderGood.getRefractiveIndex())
@@ -223,8 +234,14 @@
                        .eq(split.length>=2,TLensGoods::getColumnMirror, split[1])
                        .one();
                if (one!=null){
                    if (one.getTotal()-1<0){
                        return ApiResult.failed("库存不足");
                    if (one.getTotal()-1<0 && lensSeries.getType()==1 ){
                        if (StringUtils.hasLength(orderGood.getRightLens())){
                            orderService.removeById(dto);
                            return ApiResult.failed("镜片(R)库存不足,请重新选择");
                        }else{
                            orderService.removeById(dto);
                            return ApiResult.failed("镜片(L)库存不足,请重新选择");
                        }
                    }
                    // 减少对应库存
                    one.setTotal(one.getTotal()-1);
@@ -263,6 +280,7 @@
                    lensWarehousingDetailService.save(tLensWarehousingDetail);
                }else {
                    orderService.removeById(dto);
                    return ApiResult.failed("商品库存不足");
                }
            }else{
@@ -275,7 +293,8 @@
                        .eq(TFrameGoods::getColor, orderGood.getColor()).one();
                if (one!=null){
                    if (one.getTotal()-1<0){
                        return ApiResult.failed("库存不足");
                        orderService.removeById(dto);
                        return ApiResult.failed("镜架库存不足,请重新选择");
                    }
                    // 增加对应库存
                    one.setTotal(one.getTotal()-1);
@@ -312,16 +331,26 @@
                    frameWarehousingDetailService.save(tFrameWarehousingDetail);
                }else{
                    return ApiResult.failed("商品库存不足");
                    orderService.removeById(dto);
                    return ApiResult.failed("镜架库存不足,请重新选择");
                }
            }
        }
        if (dto.getUserId()!=null){
            if (dto.getCouponId()!=null){
                List<TCouponReceive> couponReceives = couponReceiveService.lambdaQuery().eq(TCouponReceive::getUserId, dto.getUserId())
                        .eq(TCouponReceive::getCouponId, dto.getCouponId())
                TCouponReceive couponReceive = couponReceiveService.getById(dto.getCouponId());
                if (couponReceive==null){
                    orderService.removeById(dto);
                    return ApiResult.failed("优惠券不存在");
                }
                List<TCouponReceive> couponReceives = couponReceiveService.lambdaQuery()
                        .eq(TCouponReceive::getUserId, dto.getUserId())
                        .eq(TCouponReceive::getCouponId, couponReceive.getCouponId())
                        .orderByDesc(TCouponReceive::getCreateTime).list();
                if (couponReceives.isEmpty())return ApiResult.failed("优惠券不存在");
                if (couponReceives.isEmpty()){
                    orderService.removeById(dto);
                    return ApiResult.failed("优惠券不存在");
                }
                TCouponReceive tCouponReceive = couponReceives.get(0);
                tCouponReceive.setStatus(2);
                tCouponReceive.setUseTime(LocalDateTime.now());
@@ -330,14 +359,81 @@
        }
        List<TOptometryDetail> optometryDetails = dto.getOptometryDetails();
        if (!CollectionUtils.isEmpty(optometryDetails)){
            int temp =0;
            if (dto.getUserId()!=null){
                TOptometry optometry = new TOptometry();
                long count = lineUpService.count(Wrappers.lambdaQuery(TLineUp.class)
                        .eq(TLineUp::getStoreId, dto.getStoreId()));
                optometry.setCode(""+(count+1));
                optometry.setUserId(dto.getUserId());
                optometry.setAge(dto.getAge());
                optometry.setGender(dto.getGender());
                optometry.setRealName(dto.getRealName());
                optometry.setPhone(dto.getPhone());
                optometry.setStoreId(dto.getStoreId());
                optometry.setStatus(3);
                optometryService.save(optometry);
                temp = optometry.getId();
            }
            for (TOptometryDetail optometryDetail : optometryDetails) {
                optometryDetail.setOrderId(dto.getId());
                if (dto.getUserId()!=null){
                    optometryDetail.setOptometryId(temp);
                }
            }
            optometryDetailService.saveBatch(optometryDetails);
        }
        orderGoodsService.saveBatch(orderGoods);
        lensGoodsService.updateBatchById(tLensGoods);
        frameGoodsService.updateBatchById(tFrameGoods);
        TAddOptometryVO tAddOptometryVO = new TAddOptometryVO();
        TTicket tTicket = tTicketService.lambdaQuery().eq(TTicket::getStoreId, dto.getStoreId())
                .eq(TTicket::getType,2)
                .eq(TTicket::getStatus, 1).list().stream().findFirst().orElse(null);
        if (tTicket==null){
            orderService.removeById(dto);
            return ApiResult.failed("当前门店未绑定小票机");
        }
        tAddOptometryVO.setSn(tTicket.getCloudId()+"");
        tAddOptometryVO.setPhone(dto.getPhone());
        List<TOrderGoods> orderGoods1 = dto.getOrderGoods();
        ArrayList<TOrderGoodsPrintVO> tOrderGoodsPrintVOS = new ArrayList<>();
        for (TOrderGoods orderGood : orderGoods1) {
            TOrderGoodsPrintVO tOrderGoodsPrintVO = new TOrderGoodsPrintVO();
            BeanUtils.copyProperties(orderGood,tOrderGoodsPrintVO);
            if (orderGood.getModelId()!=null){
                TModel byId = modelService.getById(orderGood.getModelId());
                if (byId!=null){
                    TMaterial byId1 = materialService.getById(byId.getMaterialId());
                    if (byId1!=null){
                        tOrderGoodsPrintVO.setMaterial(byId1.getName());
                    }
                }
            }
            tOrderGoodsPrintVOS.add(tOrderGoodsPrintVO);
        }
        tAddOptometryVO.setOrderGoods(tOrderGoodsPrintVOS);
        tAddOptometryVO.setRemark(dto.getRemark());
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String format = simpleDateFormat.format(new Date());
        tAddOptometryVO.setTime(format);
        tAddOptometryVO.setMachiningCode(dto.getMachiningCode());
        List<TOptometryDetailVO> tOptometryDetailVOS = new ArrayList<>();
        for (TOptometryDetail optometryDetail : dto.getOptometryDetails()) {
            TOptometryDetailVO tOptometryDetailVO = new TOptometryDetailVO();
            BeanUtils.copyProperties(optometryDetail,tOptometryDetailVO);
            tOptometryDetailVOS.add(tOptometryDetailVO);
        }
        tAddOptometryVO.setOptometryDetailVOS(tOptometryDetailVOS);
        tAddOptometryVO.setShopName(storeService.getById(dto.getStoreId()).getName());
        System.err.println("加工单数据");
        System.err.println(tAddOptometryVO);
        if (dto.getIsMachining()==1){
            // 打印加工单
            TicketUtil.printMatch(tAddOptometryVO);
        }
        return ApiResult.success(dto.getId());
    }