| | |
| | | |
| | | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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; |
| | | |
| | |
| | | private TBrandService brandService; |
| | | @Autowired |
| | | private TOptometryService optometryService; |
| | | @Autowired |
| | | private TWarehousingService warehousingService; |
| | | @Autowired |
| | | private TLensWarehousingDetailService lensWarehousingDetailService; |
| | | @Autowired |
| | | private TFrameWarehousingDetailService frameWarehousingDetailService; |
| | | @Autowired |
| | | private TSupplierService supplierService; |
| | | @Autowired |
| | | private TMaterialService materialService; |
| | | @Autowired |
| | | private TLineUpService lineUpService; |
| | | |
| | | @PostMapping("/obs-upload") |
| | | @ApiOperation(value = "文件上传",tags = "管理后台-文件上传") |
| | | public ApiResult<String> uploadOSS(@RequestPart("file") MultipartFile file) { |
| | |
| | | query.setEndTime(query.getEndTime()+" 23:59:59"); |
| | | } |
| | | List<Integer> orderIds = new ArrayList<>(); |
| | | List<Integer> collect = tAppUserService.lambdaQuery() |
| | | .eq(StringUtils.hasLength(query.getWxName()), TAppUser::getName, query.getWxName()) |
| | | .eq(StringUtils.hasLength(query.getPhone()), TAppUser::getName, query.getPhone()).list() |
| | | .stream().map(TAppUser::getId).collect(Collectors.toList()); |
| | | if (StringUtils.hasLength(query.getWxName())||StringUtils.hasLength(query.getPhone())){ |
| | | query.setUserIds(collect); |
| | | if (collect.isEmpty())return ApiResult.success(new PageInfo<>()); |
| | | } |
| | | // List<Integer> collect = tAppUserService.lambdaQuery() |
| | | // .eq(StringUtils.hasLength(query.getWxName()), TAppUser::getName, query.getWxName()) |
| | | // .eq(StringUtils.hasLength(query.getPhone()), TAppUser::getName, query.getPhone()).list() |
| | | // .stream().map(TAppUser::getId).collect(Collectors.toList()); |
| | | // if (StringUtils.hasLength(query.getWxName())||StringUtils.hasLength(query.getPhone())){ |
| | | // query.setUserIds(collect); |
| | | // if (collect.isEmpty())return ApiResult.success(new PageInfo<>()); |
| | | // } |
| | | List<Integer> collect1 = orderGoodsService.lambdaQuery() |
| | | .eq(StringUtils.hasLength(query.getBrandLens()), TOrderGoods::getBrandName, query.getBrandLens()) |
| | | .eq(StringUtils.hasLength(query.getSeries()), TOrderGoods::getSeriesName, query.getSeries()) |
| | | .eq((query.getType() != null), TOrderGoods::getType, query.getType()) |
| | | .eq(query.getType() != null, TOrderGoods::getType, query.getType()) |
| | | .eq(StringUtils.hasLength(query.getRefractiveIndex()), TOrderGoods::getRefractiveIndex, query.getRefractiveIndex()).list() |
| | | .stream().map(TOrderGoods::getOrderId).collect(Collectors.toList()); |
| | | if (StringUtils.hasLength(query.getBrandLens())||StringUtils.hasLength(query.getSeries())||query.getType() != null|| |
| | |
| | | |
| | | return ApiResult.success(tCouponReceives); |
| | | } |
| | | |
| | | @Autowired |
| | | private TTicketService tTicketService; |
| | | @ApiOperation(value = "添加订单") |
| | | @PostMapping(value = "/addOrder") |
| | | public ApiResult addOrder(@RequestBody TOrderDTO dto) { |
| | |
| | | TAppUser byId = tAppUserService.getById(dto.getUserId()); |
| | | dto.setName(byId.getName()); |
| | | dto.setPhone(byId.getPhone()); |
| | | |
| | | } |
| | | orderService.save(dto); |
| | | |
| | | List<TOptometryDetail> optometryDetails = dto.getOptometryDetails(); |
| | | if (!CollectionUtils.isEmpty(optometryDetails)){ |
| | | for (TOptometryDetail optometryDetail : optometryDetails) { |
| | | optometryDetail.setOrderId(dto.getId()); |
| | | } |
| | | optometryDetailService.saveBatch(optometryDetails); |
| | | } |
| | | |
| | | List<TOrderGoods> orderGoods = dto.getOrderGoods(); |
| | | List<TLensGoods> tLensGoods = new ArrayList<>(); |
| | |
| | | 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 one2 = lensSeriesService.lambdaQuery().eq(TLensSeries::getName, orderGood.getSeriesName()) |
| | | .eq(TLensSeries::getBrandId, one1.getId()).one(); |
| | | TLensSeries lensSeries = lensSeriesService.lambdaQuery().eq(TLensSeries::getName, orderGood.getSeriesName()) |
| | | .eq(TLensSeries::getBrandId, brand.getId()).one(); |
| | | TLensGoods one = lensGoodsService.lambdaQuery() |
| | | .eq(StringUtils.hasLength(orderGood.getSeriesName()),TLensGoods::getSeriesId, one2.getId()) |
| | | .eq(StringUtils.hasLength(orderGood.getSeriesName()),TLensGoods::getSeriesId, lensSeries.getId()) |
| | | .eq(StringUtils.hasLength(orderGood.getRefractiveIndex()),TLensGoods::getRefractiveIndex, orderGood.getRefractiveIndex()) |
| | | .eq(orderGood.getType()!=null,TLensGoods::getLensType, orderGood.getType()) |
| | | .eq(split.length>0,TLensGoods::getBallMirror, split[0]) |
| | | .eq(split.length>=2,TLensGoods::getColumnMirror, split[1]) |
| | | .one(); |
| | | if (one!=null){ |
| | | if (one.getTotal()-1<0){ |
| | | if (one.getTotal()-1<0 && lensSeries.getType()==1 ){ |
| | | return ApiResult.failed("库存不足"); |
| | | } |
| | | // 减少对应库存 |
| | | one.setTotal(one.getTotal()-1); |
| | | tLensGoods.add(one); |
| | | // 生成销售订单主表 |
| | | |
| | | TWarehousing tWarehousing = new TWarehousing(); |
| | | tWarehousing.setStatus(5); |
| | | tWarehousing.setType(2); |
| | | tWarehousing.setStoreId(dto.getStoreId()); |
| | | tWarehousing.setRemark("销售订单-镜片"); |
| | | tWarehousing.setOrderNum(dto.getId()+""); |
| | | warehousingService.save(tWarehousing); |
| | | // 生成明细记录 |
| | | TLensWarehousingDetail tLensWarehousingDetail = new TLensWarehousingDetail(); |
| | | tLensWarehousingDetail.setBrand(orderGood.getBrandName()); |
| | | TSupplier supplier = supplierService.getById(lensSeries.getSupplierId()); |
| | | if (supplier!=null){ |
| | | tLensWarehousingDetail.setSupplier(supplier.getName()); |
| | | } |
| | | tLensWarehousingDetail.setSeries(lensSeries.getName()); |
| | | tLensWarehousingDetail.setRefractiveIndex(orderGood.getRefractiveIndex()); |
| | | if (StringUtils.hasLength(orderGood.getLLens())){ |
| | | tLensWarehousingDetail.setBallMirror(orderGood.getLLens().split(",")[0]); |
| | | tLensWarehousingDetail.setColumnMirror(orderGood.getLLens().split(",")[0]); |
| | | } |
| | | if (StringUtils.hasLength(orderGood.getRLens())){ |
| | | tLensWarehousingDetail.setBallMirror(orderGood.getRLens().split(",")[0]); |
| | | tLensWarehousingDetail.setColumnMirror(orderGood.getRLens().split(",")[0]); |
| | | } |
| | | tLensWarehousingDetail.setType(orderGood.getType()); |
| | | tLensWarehousingDetail.setTotal(1); |
| | | tLensWarehousingDetail.setSeriesId(lensSeries.getId()); |
| | | tLensWarehousingDetail.setWarehousingId(tWarehousing.getId()); |
| | | tLensWarehousingDetail.setOrderId(dto.getId()); |
| | | lensWarehousingDetailService.save(tLensWarehousingDetail); |
| | | |
| | | }else { |
| | | return ApiResult.failed("商品不存在"); |
| | | return ApiResult.failed("商品库存不足"); |
| | | } |
| | | }else{ |
| | | TModel one1 = modelService.lambdaQuery().eq(TModel::getName, orderGood.getModelName()) |
| | |
| | | // 增加对应库存 |
| | | one.setTotal(one.getTotal()-1); |
| | | tFrameGoods.add(one); |
| | | // 生成销售订单主表 |
| | | TWarehousing tWarehousing = new TWarehousing(); |
| | | tWarehousing.setStatus(5); |
| | | tWarehousing.setType(1); |
| | | tWarehousing.setStoreId(dto.getStoreId()); |
| | | tWarehousing.setRemark("销售订单-镜架"); |
| | | tWarehousing.setOrderNum(dto.getId()+""); |
| | | warehousingService.save(tWarehousing); |
| | | // 生成明细记录 |
| | | TBrand brand = brandService.getById(one1.getBrandId()); |
| | | |
| | | TFrameWarehousingDetail tFrameWarehousingDetail = new TFrameWarehousingDetail(); |
| | | tFrameWarehousingDetail.setWarehousingId(tWarehousing.getId()); |
| | | if (brand!=null){ |
| | | tFrameWarehousingDetail.setBrand(brand.getName()); |
| | | } |
| | | TSupplier supplier = supplierService.getById(one1.getSupplierId()); |
| | | if (supplier!=null){ |
| | | tFrameWarehousingDetail.setSupplier(supplier.getName()); |
| | | } |
| | | TMaterial material = materialService.getById(one1.getMaterialId()); |
| | | if (material!=null){ |
| | | tFrameWarehousingDetail.setMaterial(material.getName()); |
| | | } |
| | | tFrameWarehousingDetail.setTotal(1); |
| | | tFrameWarehousingDetail.setColor(orderGood.getColor()); |
| | | tFrameWarehousingDetail.setModel(one1.getName()); |
| | | tFrameWarehousingDetail.setModelId(one1.getId()); |
| | | tFrameWarehousingDetail.setOrderId(dto.getId()); |
| | | frameWarehousingDetailService.save(tFrameWarehousingDetail); |
| | | |
| | | }else{ |
| | | return ApiResult.failed("商品不存在"); |
| | | return ApiResult.failed("商品库存不足"); |
| | | } |
| | | } |
| | | } |
| | | if (dto.getUserId()!=null){ |
| | | if (dto.getCouponId()!=null){ |
| | | TCouponReceive couponReceive = couponReceiveService.getById(dto.getCouponId()); |
| | | if (couponReceive==null){ |
| | | 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("优惠券不存在"); |
| | | TCouponReceive tCouponReceive = couponReceives.get(0); |
| | | tCouponReceive.setStatus(2); |
| | | tCouponReceive.setUseTime(LocalDateTime.now()); |
| | | couponReceiveService.updateById(tCouponReceive); |
| | | } |
| | | } |
| | | 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,1) |
| | | .eq(TTicket::getStatus, 1).list().stream().findFirst().orElse(null); |
| | | if (tTicket==null){ |
| | | 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); |
| | | if (dto.getIsMachining()==1){ |
| | | // 打印加工单 |
| | | TicketUtil.printMatch(tAddOptometryVO); |
| | | } |
| | | return ApiResult.success(dto.getId()); |
| | | } |
| | | |