代码同步 2.14

main
张博文 3 months ago
parent 5a6f345362
commit 4b1eeec80b

@ -0,0 +1,20 @@
package cn.iocoder.yudao.module.identity.api.generaterecord;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.module.identity.api.generaterecord.dto.GenerateRecordDTO;
import cn.iocoder.yudao.module.identity.enums.ApiConstants;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@FeignClient(name = ApiConstants.NAME)
@Api(tags = "管理后台 - 生成记录")
public interface GenerateRecordApi {
String PREFIX = ApiConstants.CONST + "/generate-record";
@GetMapping( PREFIX + "/getByBatchId")
@ApiOperation("根据采收批次查询生成记录")
CommonResult<GenerateRecordDTO> getByBatchId(@RequestParam("batchId") String batchId);
}

@ -0,0 +1,60 @@
package cn.iocoder.yudao.module.identity.api.generaterecord.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* Base VO VO 使
* VO Swagger
*/
@Data
public class GenerateRecordDTO {
@ApiModelProperty(value = "记录编码", required = true)
private String generateRecordId;
@ApiModelProperty(value = "字符长度", required = true)
@NotNull(message = "字符长度不能为空")
private Integer charLength;
@ApiModelProperty(value = "文件路径",required = true)
@NotNull(message = "文件路径不能为空")
private String fileUrl;
@ApiModelProperty(value = "纯图片的文件路径")
private String imageFileUrl;
@ApiModelProperty(value = "字符类型 0纯数字 1纯字母 2混合类型", required = true)
@NotNull(message = "字符类型 0纯数字 1纯字母 2混合类型不能为空")
private Integer charType;
@ApiModelProperty(value = "数量", required = true)
@NotNull(message = "数量不能为空")
private Integer codeNum;
@ApiModelProperty(value = "操作者")
private String operateUser;
@ApiModelProperty(value = "操作者id")
private Long operateUserId;
@ApiModelProperty(value = "状态 0生成中 1已生成文字码未生成图片码 2文字及图片码均生成", required = true)
private Integer state;
@ApiModelProperty(value = "所属商户id", required = true)
@NotNull(message = "所属商户id不能为空")
private Long belongBusinessId;
@ApiModelProperty(value = "所属商户名称", required = true)
@NotNull(message = "所属商户名称不能为空")
private String belongBusinessName;
@ApiModelProperty(value = "采收批次")
private String batchId;
@ApiModelProperty(value = "商品名称")
private String goodsName;
}

@ -0,0 +1,26 @@
package cn.iocoder.yudao.module.identity.api.generaterecord;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.module.identity.api.generaterecord.dto.GenerateRecordDTO;
import cn.iocoder.yudao.module.identity.dal.mysql.generaterecord.GenerateRecordMapper;
import cn.iocoder.yudao.module.system.enums.ApiConstants;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@RestController // 提供 RESTful API 接口,给 Feign 调用
@DubboService(version = ApiConstants.VERSION) // 提供 Dubbo RPC 接口,给 Dubbo Consumer 调用
@Validated
public class GenerateRecordApiImpl implements GenerateRecordApi {
@Resource
private GenerateRecordMapper generateRecordMapper;
@Override
public CommonResult<GenerateRecordDTO> getByBatchId(String batchId) {
return CommonResult.success(generateRecordMapper.getGenerateRecordByBatchId(batchId));
}
}

@ -22,15 +22,6 @@ public class CodeBaseSaveReqVO {
@ApiModelProperty(value = "校验码(明暗码需要)")
private String verfiyCode;
@ApiModelProperty(value = "码规则id")
private Long ruleId;
@ApiModelProperty(value = "码规则")
private String codeRuleFormat;
@ApiModelProperty(value = "码类型 0普通码 1明暗码")
private Integer codeType;
@ApiModelProperty(value = "字符长度")
private Integer charLength;

@ -23,18 +23,6 @@ public class CodeBaseVO {
@ApiModelProperty(value = "校验码(明暗码需要)")
private String verfiyCode;
@ApiModelProperty(value = "码规则id", required = true)
@NotNull(message = "码规则id不能为空")
private Long ruleId;
@ApiModelProperty(value = "码规则", required = true)
@NotNull(message = "码规则不能为空")
private String codeRuleFormat;
@ApiModelProperty(value = "码类型 0普通码 1明暗码", required = true)
@NotNull(message = "码类型 0普通码 1明暗码不能为空")
private Integer codeType;
@ApiModelProperty(value = "字符长度", required = true)
@NotNull(message = "字符长度不能为空")
private Integer charLength;

@ -25,15 +25,6 @@ public class CodeExcelVO {
// @ExcelProperty("校验码(明暗码需要)")
// private String verfiyCode;
@ExcelProperty("码规则编码")
private Long ruleId;
@ExcelProperty("码规则")
private String codeRuleFormat;
// @ExcelProperty("码类型 0普通码 1明暗码")
// private Integer codeType;
@ExcelProperty("字符长度")
private Integer charLength;

@ -21,15 +21,6 @@ public class CodeExportReqVO {
@ApiModelProperty(value = "校验码(明暗码需要)")
private String verfiyCode;
@ApiModelProperty(value = "码规则id")
private Long ruleId;
@ApiModelProperty(value = "码规则")
private String codeRuleFormat;
@ApiModelProperty(value = "码类型 0普通码 1明暗码")
private Integer codeType;
@ApiModelProperty(value = "字符长度")
private Integer charLength;

@ -24,15 +24,6 @@ public class CodePageReqVO extends PageParam {
@ApiModelProperty(value = "校验码(明暗码需要)")
private String verfiyCode;
@ApiModelProperty(value = "码规则id")
private Long ruleId;
@ApiModelProperty(value = "码规则")
private String codeRuleFormat;
@ApiModelProperty(value = "码类型 0普通码 1明暗码")
private Integer codeType;
@ApiModelProperty(value = "字符长度")
private Integer charLength;

@ -15,17 +15,6 @@ public class GenerateRecordBaseVO {
@ApiModelProperty(value = "记录编码", required = true)
private String generateRecordId;
@ApiModelProperty(value = "码规则id", required = true)
@NotNull(message = "码规则id不能为空")
private Long ruleId;
@ApiModelProperty(value = "码规则")
private String codeRuleFormat;
@ApiModelProperty(value = "码类型 0普通码 1明暗码", required = true)
@NotNull(message = "码类型 0普通码 1明暗码不能为空")
private Integer codeType;
@ApiModelProperty(value = "字符长度", required = true)
@NotNull(message = "字符长度不能为空")
private Integer charLength;

@ -20,15 +20,6 @@ public class GenerateRecordExcelVO {
@ExcelProperty("记录编码")
private String generateRecordId;
@ExcelProperty("码规则id")
private Long ruleId;
@ExcelProperty("码规则")
private String codeRuleFormat;
@ExcelProperty("码类型 0普通码 1明暗码")
private Integer codeType;
@ExcelProperty("字符长度")
private Integer charLength;

@ -17,15 +17,6 @@ public class GenerateRecordExportReqVO {
@ApiModelProperty(value = "记录编码")
private String generateRecordId;
@ApiModelProperty(value = "码规则id")
private Long ruleId;
@ApiModelProperty(value = "码规则")
private String codeRuleFormat;
@ApiModelProperty(value = "码类型 0普通码 1明暗码")
private Integer codeType;
@ApiModelProperty(value = "字符长度")
private Integer charLength;

@ -1,15 +1,11 @@
package cn.iocoder.yudao.module.identity.controller.admin.generaterecord.vo;
import cn.iocoder.yudao.framework.common.util.date.DateUtils;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import java.util.Date;
@ApiModel("管理后台 - 生成码 Request VO")
@Data

@ -37,18 +37,6 @@ public class CodeDO extends BaseDO {
*
*/
private String verfiyCode;
/**
* id
*/
private Long ruleId;
/**
*
*/
private String codeRuleFormat;
/**
* 0 1
*/
private Integer codeType;
/**
*
*/

@ -31,18 +31,6 @@ public class GenerateRecordDO extends BaseDO {
*
*/
private String generateRecordId;
/**
* id
*/
private Long ruleId;
/**
*
*/
private String codeRuleFormat;
/**
* 0 1
*/
private Integer codeType;
/**
*
*/

@ -23,9 +23,6 @@ public interface CodeMapper extends BaseMapperX<CodeDO> {
.eqIfPresent(CodeDO::getGenerateRecordId, reqVO.getGenerateRecordId())
.eqIfPresent(CodeDO::getIdentityCode, reqVO.getIdentityCode())
.eqIfPresent(CodeDO::getVerfiyCode, reqVO.getVerfiyCode())
.eqIfPresent(CodeDO::getRuleId, reqVO.getRuleId())
.eqIfPresent(CodeDO::getCodeRuleFormat, reqVO.getCodeRuleFormat())
.eqIfPresent(CodeDO::getCodeType, reqVO.getCodeType())
.eqIfPresent(CodeDO::getCharLength, reqVO.getCharLength())
.eqIfPresent(CodeDO::getCharType, reqVO.getCharType())
.eqIfPresent(CodeDO::getBatchId, reqVO.getBatchId())
@ -47,9 +44,6 @@ public interface CodeMapper extends BaseMapperX<CodeDO> {
.eqIfPresent(CodeDO::getGenerateRecordId, reqVO.getGenerateRecordId())
.eqIfPresent(CodeDO::getIdentityCode, reqVO.getIdentityCode())
.eqIfPresent(CodeDO::getVerfiyCode, reqVO.getVerfiyCode())
.eqIfPresent(CodeDO::getRuleId, reqVO.getRuleId())
.eqIfPresent(CodeDO::getCodeRuleFormat, reqVO.getCodeRuleFormat())
.eqIfPresent(CodeDO::getCodeType, reqVO.getCodeType())
.eqIfPresent(CodeDO::getCharLength, reqVO.getCharLength())
.eqIfPresent(CodeDO::getCharType, reqVO.getCharType())
.eqIfPresent(CodeDO::getBatchId, reqVO.getBatchId())

@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.identity.dal.mysql.generaterecord;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.identity.api.generaterecord.dto.GenerateRecordDTO;
import cn.iocoder.yudao.module.identity.controller.admin.generaterecord.vo.GenerateRecordExportReqVO;
import cn.iocoder.yudao.module.identity.controller.admin.generaterecord.vo.GenerateRecordPageReqVO;
import cn.iocoder.yudao.module.identity.controller.admin.generaterecord.vo.GenerateRecordRespVO;
@ -25,9 +26,6 @@ public interface GenerateRecordMapper extends BaseMapperX<GenerateRecordDO> {
default List<GenerateRecordDO> selectList(GenerateRecordExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<GenerateRecordDO>()
.eqIfPresent(GenerateRecordDO::getGenerateRecordId, reqVO.getGenerateRecordId())
.eqIfPresent(GenerateRecordDO::getRuleId, reqVO.getRuleId())
.eqIfPresent(GenerateRecordDO::getCodeRuleFormat, reqVO.getCodeRuleFormat())
.eqIfPresent(GenerateRecordDO::getCodeType, reqVO.getCodeType())
.eqIfPresent(GenerateRecordDO::getCharLength, reqVO.getCharLength())
.eqIfPresent(GenerateRecordDO::getCharType, reqVO.getCharType())
.eqIfPresent(GenerateRecordDO::getCodeNum, reqVO.getCodeNum())
@ -41,4 +39,6 @@ public interface GenerateRecordMapper extends BaseMapperX<GenerateRecordDO> {
.orderByDesc(GenerateRecordDO::getId));
}
GenerateRecordDTO getGenerateRecordByBatchId(@Param("batchId") String batchId);
}

@ -15,12 +15,10 @@ import cn.iocoder.yudao.module.identity.dal.mysql.code.CodeMapper;
import cn.iocoder.yudao.module.identity.qrcode.QRCodeProperties;
import cn.iocoder.yudao.module.identity.service.generatebatch.GenerateBatchService;
import cn.iocoder.yudao.module.identity.service.generaterecord.GenerateRecordService;
import cn.iocoder.yudao.module.infra.api.file.FileApi;
import cn.iocoder.yudao.module.product.api.harvestbatch.HarvestBatchApi;
import cn.iocoder.yudao.module.product.api.harvestbatch.dto.HarvestBatchDTO;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@ -45,15 +43,9 @@ public class CodeServiceImpl implements CodeService {
@Resource
private CodeMapper codeMapper;
@Resource
private StringRedisTemplate stringRedisTemplate;
@Resource
private GenerateRecordService generateRecordService;
@Resource
private FileApi fileApi;
@Resource
private HarvestBatchApi harvestBatchApi;
@ -85,11 +77,6 @@ public class CodeServiceImpl implements CodeService {
CodeDO codeDO = new CodeDO();
codeDO.setId(null);
codeDO.setGenerateRecordId(recordByRecordId.getGenerateRecordId());
// codeDO.setIdentityCode(str);
// codeDO.setVerfiyCode(Arrays.stream(verificationCodeStrings).findFirst().orElse(null));
codeDO.setRuleId(recordByRecordId.getRuleId());
codeDO.setCodeRuleFormat(recordByRecordId.getCodeRuleFormat());
codeDO.setCodeType(recordByRecordId.getCodeType());
codeDO.setCharLength(recordByRecordId.getCharLength());
codeDO.setCharType(recordByRecordId.getCharType());
codeDO.setBatchType(generateBatchByRecordId.getBatchType());

@ -28,4 +28,12 @@
order by igr.create_time desc
</select>
<select id="getGenerateRecordByBatchId" resultType="cn.iocoder.yudao.module.identity.api.generaterecord.dto.GenerateRecordDTO">
SELECT
igr.*, igb.batch_id
FROM identity_generate_record igr
LEFT JOIN identity_generate_batch igb ON igr.generate_record_id = igb.generate_record_id
WHERE igr.deleted = 0 AND igb.batch_id = #{batchId}
</select>
</mapper>

@ -107,9 +107,6 @@ public class GenerateRecordServiceImplTest extends BaseDbUnitTest {
// mock 数据
GenerateRecordDO dbGenerateRecord = randomPojo(GenerateRecordDO.class, o -> { // 等会查询到
o.setGenerateRecordId(null);
o.setRuleId(null);
o.setCodeRuleFormat(null);
o.setCodeType(null);
o.setCharLength(null);
o.setCharType(null);
o.setCodeNum(null);
@ -123,12 +120,6 @@ public class GenerateRecordServiceImplTest extends BaseDbUnitTest {
generateRecordMapper.insert(dbGenerateRecord);
// 测试 generateRecordId 不匹配
generateRecordMapper.insert(cloneIgnoreId(dbGenerateRecord, o -> o.setGenerateRecordId(null)));
// 测试 ruleId 不匹配
generateRecordMapper.insert(cloneIgnoreId(dbGenerateRecord, o -> o.setRuleId(null)));
// 测试 codeRuleFormat 不匹配
generateRecordMapper.insert(cloneIgnoreId(dbGenerateRecord, o -> o.setCodeRuleFormat(null)));
// 测试 codeType 不匹配
generateRecordMapper.insert(cloneIgnoreId(dbGenerateRecord, o -> o.setCodeType(null)));
// 测试 charLength 不匹配
generateRecordMapper.insert(cloneIgnoreId(dbGenerateRecord, o -> o.setCharLength(null)));
// 测试 charType 不匹配
@ -168,9 +159,6 @@ public class GenerateRecordServiceImplTest extends BaseDbUnitTest {
// mock 数据
GenerateRecordDO dbGenerateRecord = randomPojo(GenerateRecordDO.class, o -> { // 等会查询到
o.setGenerateRecordId(null);
o.setRuleId(null);
o.setCodeRuleFormat(null);
o.setCodeType(null);
o.setCharLength(null);
o.setCharType(null);
o.setCodeNum(null);
@ -184,12 +172,6 @@ public class GenerateRecordServiceImplTest extends BaseDbUnitTest {
generateRecordMapper.insert(dbGenerateRecord);
// 测试 generateRecordId 不匹配
generateRecordMapper.insert(cloneIgnoreId(dbGenerateRecord, o -> o.setGenerateRecordId(null)));
// 测试 ruleId 不匹配
generateRecordMapper.insert(cloneIgnoreId(dbGenerateRecord, o -> o.setRuleId(null)));
// 测试 codeRuleFormat 不匹配
generateRecordMapper.insert(cloneIgnoreId(dbGenerateRecord, o -> o.setCodeRuleFormat(null)));
// 测试 codeType 不匹配
generateRecordMapper.insert(cloneIgnoreId(dbGenerateRecord, o -> o.setCodeType(null)));
// 测试 charLength 不匹配
generateRecordMapper.insert(cloneIgnoreId(dbGenerateRecord, o -> o.setCharLength(null)));
// 测试 charType 不匹配
@ -211,9 +193,6 @@ public class GenerateRecordServiceImplTest extends BaseDbUnitTest {
// 准备参数
GenerateRecordExportReqVO reqVO = new GenerateRecordExportReqVO();
reqVO.setGenerateRecordId(null);
reqVO.setRuleId(null);
reqVO.setCodeRuleFormat(null);
reqVO.setCodeType(null);
reqVO.setCharLength(null);
reqVO.setCharType(null);
reqVO.setCodeNum(null);

@ -88,6 +88,7 @@ public interface ErrorCodeConstants {
ErrorCode CREATE_BLOCK_CERTIFICATE_FAIL = new ErrorCode(1013006006, "生成区块证书失败");
ErrorCode ONLY_ON_CHAIN_HARVEST_INFO_CAN_DO_UPDATE_CHAIN_STATUS = new ErrorCode(1013006007, "只有已上链的采收入库数据才可修改链状态");
ErrorCode UPDATE_CREATE_BLOCK_CERTIFICATE_FAIL = new ErrorCode(1013006008, "更新区块证书失败");
ErrorCode CAN_NOT_DELETE_BECAUSE_EXIST_GENERATE_RECORD = new ErrorCode(1013006009, "存在生码记录, 无法进行删除");
/**
* 007
*/

@ -39,24 +39,6 @@ public class HarvestBatchController {
@Resource
private HarvestBatchService harvestBatchService;
@DeleteMapping("/delete")
@ApiOperation("删除采收批次")
@ApiImplicitParam(name = "id", value = "编号", required = true, dataTypeClass = Long.class)
@PreAuthorize("@ss.hasPermission('product:harvest-batch:delete')")
public CommonResult<Boolean> deleteHarvestBatch(@RequestParam("id") Long id) {
harvestBatchService.deleteHarvestBatch(id);
return CommonResult.success(Boolean.TRUE);
}
@DeleteMapping("/deleteBatch")
@ApiOperation("批量删除采收批次")
@ApiImplicitParam(name = "ids", value = "ID列表", required = true, dataTypeClass = List.class)
@PreAuthorize("@ss.hasPermission('product:harvest-batch:delete')")
public CommonResult<Boolean> deleteBatch(@RequestParam("ids") List<Long> ids) {
harvestBatchService.deleteBatch(ids);
return CommonResult.success(Boolean.TRUE);
}
@GetMapping("/get")
@ApiOperation("获得采收批次")
@ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)

@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.chain.api.blockcertificate.BlockCertificateApi;
import cn.iocoder.yudao.module.chain.api.operatedetail.OperateDetailApi;
import cn.iocoder.yudao.module.configure.api.deviceenvtype.DeviceEnvTypeApi;
import cn.iocoder.yudao.module.configure.api.uniTemplate.UniTemplateApi;
import cn.iocoder.yudao.module.identity.api.generaterecord.GenerateRecordApi;
import cn.iocoder.yudao.module.identity.api.scanrecord.ScanRecordApi;
import cn.iocoder.yudao.module.infra.api.file.FileApi;
import cn.iocoder.yudao.module.system.api.dict.DictDataApi;
@ -26,6 +27,7 @@ import org.springframework.context.annotation.Configuration;
WorkersinfoApi.class,
UniTemplateApi.class,
ScanRecordApi.class,
GenerateRecordApi.class,
FileApi.class,
DeviceEnvTypeApi.class,
LanguageTypeApi.class,

@ -15,19 +15,6 @@ import java.util.Map;
*/
public interface HarvestBatchService {
/**
*
*
* @param id
*/
void deleteHarvestBatch(Long id);
/**
*
* @param ids id
*/
void deleteBatch(List<Long> ids);
/**
*
*

@ -82,30 +82,6 @@ public class HarvestBatchServiceImpl implements HarvestBatchService {
@Resource
private LanguageTypeApi languageTypeApi;
@Override
public void deleteHarvestBatch(Long id) {
// 校验存在
validateHarvestBatchExists(id);
// 删除
harvestBatchMapper.deleteById(id);
}
@Override
public void deleteBatch(List<Long> ids) {
List<HarvestBatchDO> harvestBatchs = harvestBatchMapper.selectList(new LambdaQueryWrapperX<HarvestBatchDO>().in(HarvestBatchDO::getId, ids));
if(harvestBatchs.size() != ids.size()) {
throw ServiceExceptionUtil.exception(ErrorCodeConstants.HARVEST_BATCH_NOT_EXISTS);
}
harvestBatchMapper.deleteBatchIds(ids);
}
private void validateHarvestBatchExists(Long id) {
HarvestBatchDO harvestBatchDO = harvestBatchMapper.selectById(id);
if (harvestBatchDO == null) {
throw ServiceExceptionUtil.exception(ErrorCodeConstants.HARVEST_BATCH_NOT_EXISTS);
}
}
@Override
public HarvestBatchRespVO getHarvestBatchDetail(Long id) {
return harvestBatchMapper.getHarvestBatchDetail(id, null, null);

@ -1,6 +1,7 @@
package cn.iocoder.yudao.module.product.service.harvestinfo;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.enums.BlockStateEnum;
import cn.iocoder.yudao.framework.common.enums.CodeEnum;
import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
@ -20,6 +21,8 @@ import cn.iocoder.yudao.module.chain.enums.ChainStatusEnum;
import cn.iocoder.yudao.module.chain.enums.OperateTypeEnum;
import cn.iocoder.yudao.module.configure.api.uniTemplate.UniTemplateApi;
import cn.iocoder.yudao.module.configure.api.uniTemplate.dto.UniTemplateDTO;
import cn.iocoder.yudao.module.identity.api.generaterecord.GenerateRecordApi;
import cn.iocoder.yudao.module.identity.api.generaterecord.dto.GenerateRecordDTO;
import cn.iocoder.yudao.module.product.controller.admin.harvestbatch.vo.HarvestBatchBaseVO;
import cn.iocoder.yudao.module.product.controller.admin.harvestbatch.vo.HarvestBatchRespVO;
import cn.iocoder.yudao.module.product.controller.admin.harvestbatch.vo.HarvestBatchSaveReqVO;
@ -77,6 +80,9 @@ public class HarvestInfoServiceImpl implements HarvestInfoService {
@Resource
private LanguageTypeApi languageTypeApi;
@Resource
private GenerateRecordApi generateRecordApi;
@Override
@Transactional
public Long createHarvestInfo(HarvestInfoCreateReqVO createReqVO) {
@ -146,18 +152,22 @@ public class HarvestInfoServiceImpl implements HarvestInfoService {
if (harvestInfo == null) {
throw ServiceExceptionUtil.exception(ErrorCodeConstants.HARVEST_INFO_NOT_EXISTS);
}
if(!harvestInfo.getBlockState().equals(BlockStateEnum.NOT_ON_CHAIN.getBlockState())) {
if (!harvestInfo.getBlockState().equals(BlockStateEnum.NOT_ON_CHAIN.getBlockState())) {
throw ServiceExceptionUtil.exception(ErrorCodeConstants.ONLY_NOT_ON_CHAIN_HARVEST_INFO_CAN_BE_EDIT);
}
List<HarvestBatchDO> DBHarvestBatchList = harvestBatchMapper.selectList(new LambdaQueryWrapperX<HarvestBatchDO>()
.eq(HarvestBatchDO::getHarvestId, harvestInfo.getHarverstId()));
Map<String, GoodsInfoRespDTO> goodsInfoMap = new HashMap<>();
List<Long> willUpdateIds = new ArrayList<>();// 将要更新的投入品批次主键id
this.verifiGoodsInfos(updateReqVO.getHarvestBatchs(), goodsInfoMap, willUpdateIds, harvestInfo.getBelongBusinessId());
List<Long> DBBatchIds = DBHarvestBatchList.stream().map(HarvestBatchDO::getId).collect(Collectors.toList());
// 验证将要更新的批次
Map<Long, HarvestBatchDO> harvestBatchMaps = new HashMap<>();// 采收批次键值对
// 验证将要更新的批次
if(willUpdateIds.size() > 0) {
if (!willUpdateIds.isEmpty()) {
List<HarvestBatchDO> harvestBatchDOs = harvestBatchMapper.selectList(new LambdaQueryWrapperX<HarvestBatchDO>()
.in(HarvestBatchDO::getId, willUpdateIds)
.eq(HarvestBatchDO::getHarvestId, harvestInfo.getHarverstId()));
@ -170,8 +180,9 @@ public class HarvestInfoServiceImpl implements HarvestInfoService {
List<HarvestBatchDO> addList = new ArrayList<>(); // 需要新增的批次集合
List<HarvestBatchDO> updateList = new ArrayList<>(); // 需要新增的批次集合
for(HarvestBatchSaveReqVO item: updateReqVO.getHarvestBatchs()) {
if(item.getId() != null) {
Collection<Long> deleteIds = CollUtil.subtract(DBBatchIds, willUpdateIds);// 需要删除的批次集合
for (HarvestBatchSaveReqVO item: updateReqVO.getHarvestBatchs()) {
if (item.getId() != null) {
// 更新流程
HarvestBatchDO harvestBatchDO = harvestBatchMaps.get(item.getId());
// 只更新可更新的字段
@ -200,13 +211,17 @@ public class HarvestInfoServiceImpl implements HarvestInfoService {
harvestInfoMapper.updateById(harvestInfoDO);
if(updateList.size() > 0) {
if (!updateList.isEmpty()) {
harvestBatchMapper.updateBatch(updateList, Integer.MAX_VALUE);
}
if(addList.size() > 0) {
if (!addList.isEmpty()) {
harvestBatchMapper.insertBatch(addList);
}
if (!deleteIds.isEmpty()) {
harvestBatchMapper.deleteBatchIds(deleteIds);
}
}
private void verifiGoodsInfos(List<HarvestBatchSaveReqVO> harvestBatchs, Map<String, GoodsInfoRespDTO> goodsInfoMap, List<Long> willUpdateIds, Long businessInfoId) {
@ -245,17 +260,33 @@ public class HarvestInfoServiceImpl implements HarvestInfoService {
}
@Override
@Transactional
public void deleteHarvestInfo(Long id) {
// 校验存在
validateHarvestInfoExists(id);
HarvestInfoDO harvestInfo = validateHarvestInfoExists(id);
HarvestBatchDO harvestBatch = harvestBatchMapper.selectOne(new LambdaQueryWrapperX<HarvestBatchDO>().eq(HarvestBatchDO::getHarvestId, harvestInfo.getHarverstId()));
if (harvestBatch != null) {
// 校验是否已生成码包
GenerateRecordDTO generateRecord = generateRecordApi.getByBatchId(harvestBatch.getHarvestBatchId()).getData();
if (generateRecord != null) {
throw ServiceExceptionUtil.exception(ErrorCodeConstants.CAN_NOT_DELETE_BECAUSE_EXIST_GENERATE_RECORD);
}
harvestBatchMapper.deleteById(harvestBatch.getId());
}
// 删除
harvestInfoMapper.deleteById(id);
}
private void validateHarvestInfoExists(Long id) {
if (harvestInfoMapper.selectById(id) == null) {
private HarvestInfoDO validateHarvestInfoExists(Long id) {
HarvestInfoDO harvestInfo = harvestInfoMapper.selectById(id);
if (harvestInfo == null) {
throw ServiceExceptionUtil.exception(ErrorCodeConstants.HARVEST_INFO_NOT_EXISTS);
}
return harvestInfo;
}
@Override
@ -270,7 +301,7 @@ public class HarvestInfoServiceImpl implements HarvestInfoService {
List<HarvestBatchRespVO> harvestBatchResps = HarvestBatchConvert.INSTANCE.convertList(list);
List<String> goodsIds = harvestBatchResps.stream().map(HarvestBatchBaseVO::getGoodsId).collect(Collectors.toList());
List<GoodsInfoRespDTO> goodsInfos = goodsInfoApi.getGoodsInfoListByGoodsIds(goodsIds, harvestInfo.getBelongBusinessId()).getData();
if(goodsInfos != null && !goodsInfos.isEmpty() || Objects.requireNonNull(goodsInfos).size() != goodsIds.size()) {
if(goodsInfos != null && !goodsInfos.isEmpty()) {
Map<String, GoodsInfoRespDTO> goodsInfoMap = new HashMap<>();
goodsInfos.forEach(item -> goodsInfoMap.put(item.getGoodsId(), item));

Loading…
Cancel
Save