From 6fbae02433b23c092cccea811cc94faf370bb647 Mon Sep 17 00:00:00 2001 From: kilo Date: Thu, 15 Jun 2023 13:45:36 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=84=E7=BA=A6=E8=BD=AC=E5=A4=87=E8=B4=A7?= =?UTF-8?q?=E3=80=81=E6=89=B9=E9=87=8F=E9=A2=84=E7=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ava => DistributionReservationEntity.java} | 20 +- ...VO.java => DistributionReservationVO.java} | 8 +- ...=> DistributionReservationController.java} | 67 ++++--- .../dto/DistributionReservationDTO.java | 61 ++++++ ...java => DistributionReservationExcel.java} | 2 +- ...ava => DistributionReservationClient.java} | 12 +- .../mapper/DistributionReservationMapper.java | 57 ++++++ ....xml => DistributionReservationMapper.xml} | 38 +++- .../DistributionReservationServiceImpl.java | 184 ++++++++++++++++++ 9 files changed, 402 insertions(+), 47 deletions(-) rename blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/{ReservationEntity.java => DistributionReservationEntity.java} (90%) rename blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/{ReservationVO.java => DistributionReservationVO.java} (85%) rename blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/{ReservationController.java => DistributionReservationController.java} (59%) create mode 100644 blade-service/logpm-distribution/src/main/java/com/logpm/distribution/dto/DistributionReservationDTO.java rename blade-service/logpm-distribution/src/main/java/com/logpm/distribution/excel/{ReservationExcel.java => DistributionReservationExcel.java} (98%) rename blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/{ReservationClient.java => DistributionReservationClient.java} (76%) create mode 100644 blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.java rename blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/{ReservationMapper.xml => DistributionReservationMapper.xml} (59%) create mode 100644 blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionReservationServiceImpl.java diff --git a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/ReservationEntity.java b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/DistributionReservationEntity.java similarity index 90% rename from blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/ReservationEntity.java rename to blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/DistributionReservationEntity.java index 53a73e05a..042e2cb3e 100644 --- a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/ReservationEntity.java +++ b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/DistributionReservationEntity.java @@ -35,7 +35,7 @@ import org.springblade.core.tenant.mp.TenantEntity; @TableName("logpm_distribution_reservation") @ApiModel(value = "reservation对象", description = "预约列表") @EqualsAndHashCode(callSuper = true) -public class ReservationEntity extends TenantEntity { +public class DistributionReservationEntity extends TenantEntity { /** * 订单自编号;订单自编号,关联订单表 @@ -56,7 +56,7 @@ public class ReservationEntity extends TenantEntity { * 预约时间 */ @ApiModelProperty(value = "预约时间") - private Date reservationData; + private Date reservationDate; /** * 服务类型;预约服务类型;1-上楼、2-超区、3-拆样、4-平移、5-分拣、6-搬运、7-返货; */ @@ -81,7 +81,7 @@ public class ReservationEntity extends TenantEntity { * 代付运费 */ @ApiModelProperty(value = "代付运费") - private String replaceFee; + private BigDecimal replaceFee; /** * 收件人电话 */ @@ -91,7 +91,7 @@ public class ReservationEntity extends TenantEntity { * 预约信息状态;预约列表信息状态;1-待确认、2-已确认 */ @ApiModelProperty(value = "预约信息状态;预约列表信息状态;1-待确认、2-已确认") - private String resvervationStatus; + private String reservationStatus; /** * 订单来源 */ @@ -106,7 +106,17 @@ public class ReservationEntity extends TenantEntity { * 备货区编号 */ @ApiModelProperty(value = "备货区编号") - private String goodsShelfId; + private String goodsAreaId; + /** + * 备注 + */ + @ApiModelProperty(value = "备注") + private String remarks; + /** + * 预约单编号,系统构建生成 + */ + @ApiModelProperty(value = "预约单编号") + private String reservationId; /** * 预留1 */ diff --git a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/ReservationVO.java b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionReservationVO.java similarity index 85% rename from blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/ReservationVO.java rename to blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionReservationVO.java index dcace8e94..82343095e 100644 --- a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/ReservationVO.java +++ b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionReservationVO.java @@ -16,7 +16,7 @@ */ package com.logpm.distribution.vo; -import com.logpm.distribution.entity.ReservationEntity; +import com.logpm.distribution.entity.DistributionReservationEntity; import lombok.Data; import lombok.EqualsAndHashCode; @@ -28,7 +28,11 @@ import lombok.EqualsAndHashCode; */ @Data @EqualsAndHashCode(callSuper = true) -public class ReservationVO extends ReservationEntity { +public class DistributionReservationVO extends DistributionReservationEntity { private static final long serialVersionUID = 1L; + //增值服务信息 + + //订单信息 + } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/ReservationController.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionReservationController.java similarity index 59% rename from blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/ReservationController.java rename to blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionReservationController.java index 7128a2b4b..9ba886268 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/ReservationController.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionReservationController.java @@ -16,10 +16,11 @@ */ package com.logpm.distribution.controller; -import com.logpm.distribution.entity.ReservationEntity; -import com.logpm.distribution.excel.ReservationExcel; -import com.logpm.distribution.service.IReservationService; -import com.logpm.distribution.vo.ReservationVO; +import com.logpm.distribution.dto.DistributionReservationDTO; +import com.logpm.distribution.entity.DistributionReservationEntity; +import com.logpm.distribution.excel.DistributionReservationExcel; +import com.logpm.distribution.service.IDistributionReservationService; +import com.logpm.distribution.vo.DistributionReservationVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; @@ -54,9 +55,9 @@ import javax.servlet.http.HttpServletResponse; @AllArgsConstructor @RequestMapping("/reservation") @Api(value = "预约列表", tags = "预约列表接口") -public class ReservationController extends BladeController { +public class DistributionReservationController extends BladeController { - private final IReservationService reservationService; + private final IDistributionReservationService reservationService; /** * 预约列表 详情 @@ -64,9 +65,10 @@ public class ReservationController extends BladeController { @GetMapping("/detail") @ApiOperationSupport(order = 1) @ApiOperation(value = "详情", notes = "传入distrbutionReservation") - public R detail(ReservationEntity distrbutionReservation) { - ReservationEntity detail = reservationService.getOne(Condition.getQueryWrapper(distrbutionReservation)); - return R.data(detail); + public R detail(@ApiIgnore @RequestParam String reservationId) { + DistributionReservationVO distributionReservationVO = reservationService.getReservationDetail(reservationId); +// ReservationEntity detail = reservationService.getOne(Condition.getQueryWrapper(distrbutionReservation)); + return R.data(distributionReservationVO); } /** * 预约列表 分页 @@ -74,8 +76,8 @@ public class ReservationController extends BladeController { @GetMapping("/list") @ApiOperationSupport(order = 2) @ApiOperation(value = "分页", notes = "传入distrbutionReservation") - public R> list(@ApiIgnore @RequestParam Map distrbutionReservation, Query query) { - IPage pages = reservationService.page(Condition.getPage(query), Condition.getQueryWrapper(distrbutionReservation, ReservationEntity.class)); + public R> list(@ApiIgnore @RequestParam Map distrbutionReservation, Query query) { + IPage pages = reservationService.page(Condition.getPage(query), Condition.getQueryWrapper(distrbutionReservation, DistributionReservationEntity.class)); return R.data(pages); } @@ -85,8 +87,9 @@ public class ReservationController extends BladeController { @GetMapping("/page") @ApiOperationSupport(order = 3) @ApiOperation(value = "分页", notes = "传入distrbutionReservation") - public R> page(ReservationVO distrbutionReservation, Query query) { - IPage pages = reservationService.selectDistrbutionReservationPage(Condition.getPage(query), distrbutionReservation); + public R> page(DistributionReservationVO distrbutionReservation, Query query) { + IPage page = Condition.getPage(query); + IPage pages = reservationService.selectDistrbutionReservationPage(page, distrbutionReservation); return R.data(pages); } @@ -96,8 +99,9 @@ public class ReservationController extends BladeController { @PostMapping("/save") @ApiOperationSupport(order = 4) @ApiOperation(value = "新增", notes = "传入distrbutionReservation") - public R save(@Valid @RequestBody ReservationEntity distrbutionReservation) { - return R.status(reservationService.save(distrbutionReservation)); + public R save(@Valid @RequestBody DistributionReservationDTO distributionReservationDTO) { + boolean result = reservationService.insertReservation(distributionReservationDTO); + return R.status(reservationService.save(distributionReservationDTO)); } /** @@ -106,7 +110,7 @@ public class ReservationController extends BladeController { @PostMapping("/update") @ApiOperationSupport(order = 5) @ApiOperation(value = "修改", notes = "传入distrbutionReservation") - public R update(@Valid @RequestBody ReservationEntity distrbutionReservation) { + public R update(@Valid @RequestBody DistributionReservationEntity distrbutionReservation) { return R.status(reservationService.updateById(distrbutionReservation)); } @@ -116,7 +120,7 @@ public class ReservationController extends BladeController { @PostMapping("/submit") @ApiOperationSupport(order = 6) @ApiOperation(value = "新增或修改", notes = "传入distrbutionReservation") - public R submit(@Valid @RequestBody ReservationEntity distrbutionReservation) { + public R submit(@Valid @RequestBody DistributionReservationEntity distrbutionReservation) { return R.status(reservationService.saveOrUpdate(distrbutionReservation)); } @@ -138,26 +142,35 @@ public class ReservationController extends BladeController { @ApiOperationSupport(order = 9) @ApiOperation(value = "导出数据", notes = "传入distrbutionReservation") public void exportDistrbutionReservation(@ApiIgnore @RequestParam Map distrbutionReservation, BladeUser bladeUser, HttpServletResponse response) { - QueryWrapper queryWrapper = Condition.getQueryWrapper(distrbutionReservation, ReservationEntity.class); + QueryWrapper queryWrapper = Condition.getQueryWrapper(distrbutionReservation, DistributionReservationEntity.class); //if (!AuthUtil.isAdministrator()) { // queryWrapper.lambda().eq(DistrbutionReservation::getTenantId, bladeUser.getTenantId()); //} - queryWrapper.lambda().eq(ReservationEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED); - List list = reservationService.exportDistrbutionReservation(queryWrapper); - ExcelUtil.export(response, "预约列表数据" + DateUtil.time(), "预约列表数据表", list, ReservationExcel.class); + queryWrapper.lambda().eq(DistributionReservationEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED); + List list = reservationService.exportDistrbutionReservation(queryWrapper); + ExcelUtil.export(response, "预约列表数据" + DateUtil.time(), "预约列表数据表", list, DistributionReservationExcel.class); } /** * 批量确认预约 */ - @PostMapping("/addIds") + @PostMapping("/confirmReservations") @ApiOperationSupport(order = 7) - @ApiOperation(value = "逻辑删除", notes = "传入ids") - public R addIds(@ApiParam(value = "主键集合", required = true) @RequestBody String ids) { - R result = reservationService.addReservations(Func.toLongList(ids)); - return R.status(reservationService.deleteLogic(Func.toLongList(ids))); + @ApiOperation(value = "批量确认预约", notes = "传入ids") + public R addIds(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { + R result = reservationService.addReservations(ids); + return result; } - + /** + * 批量预约转备货任务 + */ + @PostMapping("/stockUpTask") + @ApiOperationSupport(order = 7) + @ApiOperation(value = "批量预约转备货任务") + public R stockUpTask(@ApiParam(value = "主键集合", required = true)@RequestBody Map stockUpInfo) { + R result = reservationService.stockUpTask(stockUpInfo); + return result; + } } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/dto/DistributionReservationDTO.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/dto/DistributionReservationDTO.java new file mode 100644 index 000000000..4fe816250 --- /dev/null +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/dto/DistributionReservationDTO.java @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the dreamlu.net developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: Chill 庄骞 (smallchill@163.com) + */ +package com.logpm.distribution.dto; + +import com.logpm.distribution.entity.DistributionReservationEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * 预约列表 数据传输对象实体类 + * + * @author TJJ + * @since 2023-06-12 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class DistributionReservationDTO extends DistributionReservationEntity { + private static final long serialVersionUID = 1L; + + /** + * 备货区编号 + */ + @ApiModelProperty(value = "备货区编号") + private String goddsAreaId; + + /** + * 备货时间 + */ + @ApiModelProperty(value = "备货时间") + private Date stockupDate; + + /** + * 增值服务 + */ + @ApiModelProperty(value = "增值服务") + private List addvalueInfo; + + + + + +} diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/excel/ReservationExcel.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/excel/DistributionReservationExcel.java similarity index 98% rename from blade-service/logpm-distribution/src/main/java/com/logpm/distribution/excel/ReservationExcel.java rename to blade-service/logpm-distribution/src/main/java/com/logpm/distribution/excel/DistributionReservationExcel.java index 245d7927d..1abd89e73 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/excel/ReservationExcel.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/excel/DistributionReservationExcel.java @@ -38,7 +38,7 @@ import java.io.Serializable; @ColumnWidth(25) @HeadRowHeight(20) @ContentRowHeight(18) -public class ReservationExcel implements Serializable { +public class DistributionReservationExcel implements Serializable { private static final long serialVersionUID = 1L; diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/ReservationClient.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionReservationClient.java similarity index 76% rename from blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/ReservationClient.java rename to blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionReservationClient.java index 42b37e96a..b238dac66 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/ReservationClient.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionReservationClient.java @@ -17,8 +17,8 @@ package com.logpm.distribution.feign; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.logpm.distribution.entity.ReservationEntity; -import com.logpm.distribution.service.IReservationService; +import com.logpm.distribution.entity.DistributionReservationEntity; +import com.logpm.distribution.service.IDistributionReservationService; import lombok.AllArgsConstructor; import org.springblade.core.mp.support.BladePage; import org.springblade.core.mp.support.Condition; @@ -36,17 +36,17 @@ import springfox.documentation.annotations.ApiIgnore; @ApiIgnore() @RestController @AllArgsConstructor -public class ReservationClient implements IReservationClient { +public class DistributionReservationClient implements IDistributionReservationClient { - private final IReservationService reservationService; + private final IDistributionReservationService reservationService; @Override @GetMapping(TOP) - public BladePage reservationTop(Integer current, Integer size) { + public BladePage reservationTop(Integer current, Integer size) { Query query = new Query(); query.setCurrent(current); query.setSize(size); - IPage page = reservationService.page(Condition.getPage(query)); + IPage page = reservationService.page(Condition.getPage(query)); return BladePage.of(page); } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.java new file mode 100644 index 000000000..757245b18 --- /dev/null +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.java @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the dreamlu.net developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: Chill 庄骞 (smallchill@163.com) + */ +package com.logpm.distribution.mapper; + +import com.logpm.distribution.entity.DistributionReservationEntity; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.logpm.distribution.excel.DistributionReservationExcel; +import com.logpm.distribution.vo.DistributionReservationVO; +import org.apache.ibatis.annotations.Param; +import java.util.List; + +/** + * 预约列表 Mapper 接口 + * + * @author TJJ + * @since 2023-06-12 + */ +public interface DistributionReservationMapper extends BaseMapper { + + /** + * 自定义分页 + * + * @param page + * @param distrbutionReservation + * @return + */ + List selectDistrbutionReservationPage(IPage page, DistributionReservationVO distrbutionReservation); + + + /** + * 获取导出数据 + * + * @param queryWrapper + * @return + */ + List exportDistrbutionReservation(@Param("ew") Wrapper queryWrapper); + + Integer addReservations(@Param("list")List toLongList); + + DistributionReservationVO getReservationDetail(String reservationId); +} diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/ReservationMapper.xml b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.xml similarity index 59% rename from blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/ReservationMapper.xml rename to blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.xml index 3f233c2d6..619df420b 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/ReservationMapper.xml +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.xml @@ -1,9 +1,9 @@ - + - + @@ -16,23 +16,36 @@ - + - + - + + + + UPDATE logpm_distribution_reservation + + reservation_status='2' + + WHERE is_deleted=0 + and + id in + + #{item} + + - SELECT * FROM logpm_distrbution_reservation ${ew.customSqlSegment} + + diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionReservationServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionReservationServiceImpl.java new file mode 100644 index 000000000..c15f9e794 --- /dev/null +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionReservationServiceImpl.java @@ -0,0 +1,184 @@ +/* + * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the dreamlu.net developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: Chill 庄骞 (smallchill@163.com) + */ +package com.logpm.distribution.service.impl; + +import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; +import com.logpm.distribution.dto.DistributionReservationDTO; +import com.logpm.distribution.entity.DistributionReservationEntity; +import com.logpm.distribution.entity.DistributionStockupEntity; +import com.logpm.distribution.entity.ReservationStockupEntity; +import com.logpm.distribution.excel.DistributionReservationExcel; +import com.logpm.distribution.mapper.DistributionReservationMapper; +import com.logpm.distribution.mapper.DistributionStockupMapper; +import com.logpm.distribution.mapper.ReservationStockupMapper; +import com.logpm.distribution.service.IDistributionReservationService; +import com.logpm.distribution.service.IDistributionStockupService; +import com.logpm.distribution.vo.DistributionReservationVO; +import lombok.AllArgsConstructor; +import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils; +import org.springblade.common.utils.CommonUtil; +import org.springblade.core.secure.BladeUser; +import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.Func; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; + +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * 预约列表 服务实现类 + * + * @author TJJ + * @since 2023-06-12 + */ +@Service +@AllArgsConstructor +public class DistributionReservationServiceImpl extends BaseServiceImpl implements IDistributionReservationService { + + private DistributionReservationMapper distributionReservationMapper; + + private IDistributionStockupService distributionStockupService; + + private ReservationStockupMapper reservationStockupMapper; + + @Override + public IPage selectDistrbutionReservationPage(IPage page, DistributionReservationVO distrbutionReservation) { + return page.setRecords(baseMapper.selectDistrbutionReservationPage(page, distrbutionReservation)); + } + + + @Override + public List exportDistrbutionReservation(Wrapper queryWrapper) { + List distrbutionReservationList = baseMapper.exportDistrbutionReservation(queryWrapper); + //distrbutionReservationList.forEach(distrbutionReservation -> { + // distrbutionReservation.setTypeName(DictCache.getValue(DictEnum.YES_NO, DistrbutionReservation.getType())); + //}); + return distrbutionReservationList; + } + + @Override + public R addReservations(String ids) { + //对参数进行校验 + List longs = Func.toLongList(ids); + + if (Func.isEmpty(longs)){ + log.error("参数异常:+{"+longs+"}"); + R.fail("服务器异常,请重新添加!!"); + } + //这里就对预约信息列表进行批量的确认状态修改 + boolean result = SqlHelper.retBool(distributionReservationMapper.addReservations(longs)); + if (result){ + return R.status(result); + }else { + log.error("sql执行错误+{"+result+"}"); + return null; + + } + } + + @Override + public DistributionReservationVO getReservationDetail(String reservationId) { + DistributionReservationVO distributionReservationVO = distributionReservationMapper.getReservationDetail(reservationId); + return distributionReservationVO; + } + + @Override + @Transactional + public boolean insertReservation(DistributionReservationDTO distributionReservationDTO) { + if (Func.isEmpty(distributionReservationDTO)){ + log.error("参数错误+{"+ distributionReservationDTO +"}"); + return false; + } + DistributionReservationEntity distributionReservationEntity = new DistributionReservationEntity(); + BeanUtils.copyProperties(distributionReservationDTO, distributionReservationEntity); + //这里还需要对DTO中的服务内容进行保存 + + return false; + } + + + @Transactional + @Override + public R stockUpTask(Map stockUpInfo) { + if (Func.isEmpty(stockUpInfo)){ + log.error("参数异常:+{"+stockUpInfo+"}"); + return R.fail("服务器正忙!!!"); + } + boolean result = false; + try { + //获取前端携带批量转备货的id + String ids = (String) stockUpInfo.get("ids"); + //完成对备货表数据的保存 + String stockUpDate = (String) stockUpInfo.get("stockupDate"); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); + Date date = format.parse(stockUpDate); + String goddsAreaId = (String) stockUpInfo.get("goodsAreaId"); + DistributionStockupEntity stockupEntity = new DistributionStockupEntity(); + stockupEntity.setGoodsAreaId(goddsAreaId); + //设置备货任务指派状态---未指派 + stockupEntity.setAssignStatus("1"); + //设置备货任务状态---待备货 + stockupEntity.setStockupStatus("2"); + //设置备货任务备货时间 + stockupEntity.setStockupDate(date); + //保存备货任务数据获取备货数据ID + result = distributionStockupService.save(stockupEntity); + Long id = stockupEntity.getId(); + List reservationIds = Func.toLongList(ids); + for (Long reservationId : reservationIds) { + DistributionReservationEntity reservationEntity = distributionReservationMapper.selectById(reservationId); + if (Func.isEmpty(reservationEntity) || !reservationEntity.getReservationStatus().equals("2")){ + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + log.error("reservationEntity参数异常:+{"+reservationEntity+"}"); + return R.fail("服务器正忙!!!"); + } + //修改预约备货状态 + reservationEntity.setStockupStatus("2"); + result = SqlHelper.retBool(distributionReservationMapper.updateById(reservationEntity)); + //构建中间表信息 + ReservationStockupEntity reservationStockupEntity = new ReservationStockupEntity(); + reservationStockupEntity.setStockupId(id.toString()); + reservationStockupEntity.setReservationId(reservationEntity.getId().toString()); + result = SqlHelper.retBool(reservationStockupMapper.insert(reservationStockupEntity)); + if (!result){ + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + log.error("sql执行异常:+{"+result+"}"); + return R.fail("请稍后再试"); + } + } + } catch (ParseException e) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + log.error("执行异常:+{"+e.getMessage()+"}"); + return R.fail("请稍后再试"); + } + + //批量备货,循环多条预约信息数据 + return R.status(result); + } +}