扫码关联关系等相关修改

dev_unify
yewj 8 months ago
parent 4223be84b5
commit b250e7b930

@ -8,7 +8,9 @@ import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.constant.RedissonCacheKey;
import com.glxp.api.controller.BaseController;
import com.glxp.api.dao.inout.IoCodeTempDao;
import com.glxp.api.entity.collect.RelCodeBatch;
import com.glxp.api.entity.inout.IoCodeTempEntity;
import com.glxp.api.req.collect.RelCodeBatchRequest;
import com.glxp.api.req.collect.RelCodeDetailRequest;
import com.glxp.api.res.PageSimpleResponse;
@ -32,6 +34,7 @@ public class RelCodeBatchController extends BaseController {
/**
*
*
* @param uuid
* @param file
* @return
@ -39,31 +42,33 @@ public class RelCodeBatchController extends BaseController {
@RepeatSubmit()
@CusRedissonAnnotation(cacheName = RedissonCacheKey.XML_UPLOAD, key = {"#uuid"}, timeOutMsg = "系统正在处理,请勿重复上传")
@PostMapping("/udiwms/relCode/batch/xmlUpload")
public BaseResponse xmlUpload(@RequestParam("uuid") String uuid,@RequestParam("file") MultipartFile file) {
public BaseResponse xmlUpload(@RequestParam("uuid") String uuid, @RequestParam("file") MultipartFile file) {
relCodeBatchService.xmlUpload(file);
return ResultVOUtils.successMsg("上传成功!");
}
/**
*
*
* @param relCodeBatchRequest
* @return
*/
@RepeatSubmit()
@PostMapping("/udiwms/relCode/batch/add")
public BaseResponse add(@RequestBody @Valid RelCodeBatchRequest relCodeBatchRequest,BindingResult bindingResult) {
public BaseResponse add(@RequestBody @Valid RelCodeBatchRequest relCodeBatchRequest, BindingResult bindingResult) {
relCodeBatchService.add(relCodeBatchRequest);
return ResultVOUtils.successMsg("添加成功!");
}
/**
*
*
* @param relCodeBatchRequest
* @return
*/
@RepeatSubmit()
@PostMapping("/udiwms/relCode/batch/addRelCodeSpellBox")
public BaseResponse addRelCodeSpellBox(@RequestBody @Valid List<RelCodeBatchRequest> relCodeBatchRequest,BindingResult bindingResult) {
public BaseResponse addRelCodeSpellBox(@RequestBody @Valid List<RelCodeBatchRequest> relCodeBatchRequest, BindingResult bindingResult) {
relCodeBatchService.addRelCodeSpellBox(relCodeBatchRequest);
return ResultVOUtils.successMsg("添加成功!");
}
@ -100,7 +105,6 @@ public class RelCodeBatchController extends BaseController {
}
@GetMapping("/udiwms/relCode/batch/deleteDetail")
public BaseResponse deleteDetail(@RequestParam("curCode") String curCode) {
relCodeBatchService.deleteDetail(curCode);
@ -117,26 +121,34 @@ public class RelCodeBatchController extends BaseController {
/**
*
*
* @param parentCode
* @return
*/
@GetMapping("/udiwms/relCode/batch/exist")
public BaseResponse batchExist(@RequestParam("parentCode") String parentCode) {
if (StrUtil.isBlank(parentCode)) return ResultVOUtils.error(500,"层级编码格式错误!");
if (StrUtil.isBlank(parentCode)) return ResultVOUtils.error(500, "层级编码格式错误!");
return ResultVOUtils.success(relCodeBatchService.batchExist(parentCode));
}
@Resource
IoCodeTempDao ioCodeTempDao;
/**
*
*
* @param parentCode
* @return
*/
@GetMapping("/udiwms/relCode/updateIoCodeTempEntity")
public BaseResponse threadUpdateIoCodeTempEntity(@RequestParam("parentCode") String parentCode) {
if (StrUtil.isBlank(parentCode)) return ResultVOUtils.error(500,"层级编码格式错误!");
public BaseResponse threadUpdateIoCodeTempEntity(@RequestParam("parentCode") String parentCode, @RequestParam("id") Integer id) {
if (StrUtil.isBlank(parentCode)) return ResultVOUtils.error(500, "层级编码格式错误!");
IoCodeTempEntity codeTempEntity = new IoCodeTempEntity();
codeTempEntity.setId(id);
codeTempEntity.setDrugLink(1);
ioCodeTempDao.updateById(codeTempEntity);
relCodeBatchService.threadUpdateIoCodeTempEntity(parentCode);
return ResultVOUtils.success();
}
}

@ -1,5 +1,6 @@
package com.glxp.api.controller.inout;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.thread.ThreadUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -16,6 +17,7 @@ import com.glxp.api.req.collect.CollectOrderBizRequest;
import com.glxp.api.req.collect.CollectOrderRequest;
import com.glxp.api.res.collect.CollectOrderBizResponse;
import com.glxp.api.res.collect.IoCollectOrderResponse;
import com.glxp.api.res.collect.RelCodeDetailResponse;
import com.glxp.api.res.inout.IoOrderDetailCodeResponse;
import com.glxp.api.res.inout.VailCodeResultResponse;
import com.glxp.api.service.collect.*;
@ -1446,6 +1448,11 @@ public class IoCodeTempController extends BaseController {
if (StrUtil.isEmpty(exitLocalEntity.getSupId()) || exitLocalEntity.getRelId() == null) {
return ResultVOUtils.error(500, "当前药品追溯码已存在,且存在异常未处理!");
}
if (StringUtils.isNotBlank(exitLocalEntity.getSerialNo())) {
return ResultVOUtils.error(500, "重复扫码!");
}
udiRelevanceResponses = udiRelevanceService.selectGroupByNameCode(exitLocalEntity.getNameCode(), null);
BeanUtils.copyProperties(exitLocalEntity, genDetaiEntity);
genDetaiEntity.setCount(1);
@ -1464,9 +1471,6 @@ public class IoCodeTempController extends BaseController {
exitLocalEntity.setReCount(exitLocalEntity.getMyReCount() * udiCalCountUtil.getCirActCount(udiRelevanceResponses.get(0)));
}
if (!StringUtils.isBlank(exitLocalEntity.getSerialNo())) {
return ResultVOUtils.error(500, "重复扫码!");
}
//校验库存
BaseResponse invRes = null;
if (IntUtil.value(bussinessTypeEntity.getUseDyCount()) == 2) {
@ -1535,6 +1539,9 @@ public class IoCodeTempController extends BaseController {
}
}
if (exitLocalEntity == null) {
if (codeTempService.ieExitRel(code, orderId)) {
return ResultVOUtils.error(500, "当前追溯码已上传关联关系,请勿重复扫码!");
}
IoCodeTempEntity codeEnttity = new IoCodeTempEntity();
codeEnttity.setCode(code);
codeEnttity.setOrderId(orderId);
@ -1787,6 +1794,9 @@ public class IoCodeTempController extends BaseController {
return ResultVOUtils.success(addCodeResult);
}
@Resource
RelCodeDetailService relCodeDetailService;
//前端扫码提交(药品)
@RepeatSubmit()
@AuthRuleAnnotation("")
@ -1822,6 +1832,21 @@ public class IoCodeTempController extends BaseController {
if (StrUtil.isNotEmpty(addOrderRequest.getSerialNo())) {
udiEntity.setSerialNo(addOrderRequest.getSerialNo());
}
if (StrUtil.isEmpty(udiEntity.getBatchNo())) {
IoCodeLostEntity codeLostEntity = codeLostService.findByCode(code);
if (codeLostEntity != null) {
udiEntity.setBatchNo(codeLostEntity.getBatchNo());
udiEntity.setProduceDate(codeLostEntity.getProduceDate());
udiEntity.setExpireDate(codeLostEntity.getExpireDate());
} else {
RelCodeDetailResponse codeRelEntity = relCodeDetailService.findByCode(code);
if (codeRelEntity != null) {
udiEntity.setBatchNo(codeRelEntity.getBatchNo());
udiEntity.setProduceDate(MsDateUtil.formatDate(codeRelEntity.getMadeDate(), "yyMMdd"));
udiEntity.setExpireDate(MsDateUtil.formatDate(codeRelEntity.getValidateDate(), "yyMMdd"));
}
}
}
IoOrderEntity ioOrderEntity = orderService.findCorpOrderId(addOrderRequest.getCorpOrderId());
if (ioOrderEntity != null) {
addOrderRequest.setBillNo(ioOrderEntity.getBillNo());

@ -19,7 +19,6 @@ import com.glxp.api.res.inv.InvPreinDetailResponse;
import com.glxp.api.res.inv.InvPreinOrderResponse;
import com.glxp.api.service.auth.InvWarehouseService;
import com.glxp.api.service.basic.IBasicBussinessTypeService;
import com.glxp.api.service.inout.IoCodeTempService;
import com.glxp.api.service.inout.impl.IoCodeService;
import com.glxp.api.service.inv.InvPreinDetailService;
import com.glxp.api.service.inv.InvPreinOrderService;

@ -202,7 +202,6 @@ public class IoCodeTempEntity {
private Integer drugLink;
public int getMyCount() {
if (count == null)
return 0;
@ -216,4 +215,9 @@ public class IoCodeTempEntity {
return reCount;
}
/**
*
*/
@TableField(value = "parentCode")
private String parentCode;
}

@ -408,7 +408,7 @@ public class IoCollectOrderCodeManService extends ServiceImpl<IoCollectOrderCode
collectOrderBiz.setSplitUnCheck(true);
throw new JsonException(503, collectOrderBiz.getId() + ";" + count1 + ";" + collectOrderBiz.getCpmctymc() + ";" + "扫码数量超出!");
}
}else {
} else {
throw new JsonException(500, collectOrderBiz.getCpmctymc() + "扫码数量超出!");
}
@ -444,7 +444,7 @@ public class IoCollectOrderCodeManService extends ServiceImpl<IoCollectOrderCode
.orderIdFk(collectOrder.getBillNo())
.bizIdFk(collectOrderBiz.getId())
.relId(collectOrderBiz.getRelId())
.nameCode(udiRelevanceResponse.getNameCode())
.nameCode(udiEntity.getUdi())
.batchNo(udiEntity.getBatchNo())
.serialNo(udiEntity.getSerialNo())
.productDate(udiEntity.getProduceDate())
@ -513,7 +513,7 @@ public class IoCollectOrderCodeManService extends ServiceImpl<IoCollectOrderCode
.ybbm(udiRelevanceResponse.getYbbm())
.payFeeCode(udiRelevanceResponse.getPayFeeCode())
.cpmctymc(udiRelevanceResponse.getCpmctymc())
.nameCode(udiRelevanceResponse.getNameCode())
.nameCode(udiEntity.getUdi())
.ggxh(StrUtil.isNotEmpty(udiRelevanceResponse.getGgxh()) ? udiRelevanceResponse.getGgxh() : udiRelevanceResponse.getBzgg())
.batchNo(udiEntity.getBatchNo())
.productDate(udiEntity.getProduceDate())

@ -17,6 +17,7 @@ import com.glxp.api.dao.inout.IoCodeTempDao;
import com.glxp.api.entity.auth.AuthAdmin;
import com.glxp.api.entity.basic.ProductInfoEntity;
import com.glxp.api.entity.basic.UdiEntity;
import com.glxp.api.entity.basic.UdiProductEntity;
import com.glxp.api.entity.collect.RelCodeDetail;
import com.glxp.api.entity.inout.IoCodeTempEntity;
import com.glxp.api.entity.thrsys.ThrSystemEntity;
@ -31,6 +32,7 @@ import com.glxp.api.res.collect.RelCodeDetailByParentCodeResponse;
import com.glxp.api.res.inv.ThrInvResultResponse;
import com.glxp.api.service.auth.CustomerService;
import com.glxp.api.service.basic.ProductInfoService;
import com.glxp.api.service.basic.UdiProductService;
import com.glxp.api.util.HttpClient;
import com.glxp.api.util.udi.FilterUdiUtils;
import lombok.extern.slf4j.Slf4j;
@ -68,6 +70,7 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode
/**
*
*
* @param file
*/
@Transactional(rollbackFor = Exception.class)
@ -75,11 +78,11 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode
try {
String fileName = file.getOriginalFilename();
String suffix = FileUtil.getSuffix(fileName);
if(! "xml".equals(suffix)){
throw new JsonException("仅支持XML文件类型错误"+suffix);
if (!"xml".equals(suffix)) {
throw new JsonException("仅支持XML文件类型错误" + suffix);
}
log.info(file.getSize()+"文件长度");
if(file.getSize() > 5 * 1024 *1024){
log.info(file.getSize() + "文件长度");
if (file.getSize() > 5 * 1024 * 1024) {
throw new JsonException("上传文件超过5M");
}
List<RelCodeDetail> relCodeDetails = new ArrayList<>();
@ -88,7 +91,7 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode
Element rootElement = XmlUtil.getRootElement(document);
//截取Relation
NodeList relation = rootElement.getElementsByTagName("Relation");
if(relation == null){
if (relation == null) {
throw new JsonException("XML文件解析错误");
}
Element relationE = (Element) relation.item(0);
@ -99,7 +102,7 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode
String comment = relationE.getAttribute("comment");
//截取Batch
NodeList batch = rootElement.getElementsByTagName("Batch");
if(batch == null){
if (batch == null) {
throw new JsonException("XML文件解析错误");
}
AuthAdmin user = customerService.getUserBean();
@ -120,7 +123,7 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode
// relCodeBatch.setMadeDate(DateUtil.parse(madeDate,"yyyy-MM-dd"));
String validateDate = batchE.getAttribute("validateDate");
// relCodeBatch.setValidateDate(DateUtil.offsetDay(DateUtil.parse(validateDate,"yyyy-MM-dd"),1));
relCodeBatch.setValidateDate(String.valueOf(DateUtil.offsetDay(DateUtil.parse(validateDate,"yyyy-MM-dd"),1)));
relCodeBatch.setValidateDate(String.valueOf(DateUtil.offsetDay(DateUtil.parse(validateDate, "yyyy-MM-dd"), 1)));
String workShop = batchE.getAttribute("workShop");
relCodeBatch.setWorkShop(workShop);
String lineName = batchE.getAttribute("lineName");
@ -148,7 +151,7 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode
String packLayer = codeE.getAttribute("packLayer");
relCodeDetail.setPackLayer(Integer.valueOf(packLayer));
String parentCode = codeE.getAttribute("parentCode");
relCodeDetail.setParentCode(StrUtil.isNotBlank(parentCode)?parentCode:"0");
relCodeDetail.setParentCode(StrUtil.isNotBlank(parentCode) ? parentCode : "0");
String flag = codeE.getAttribute("flag");
relCodeDetail.setFlag(Integer.valueOf(flag));
relCodeDetails.add(relCodeDetail);
@ -156,14 +159,15 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode
}
}
relCodeDetailService.saveBatch(relCodeDetails);
}catch (Exception e){
throw new JsonException("上传失败:"+e.getMessage());
} catch (Exception e) {
throw new JsonException("上传失败:" + e.getMessage());
}
}
/**
*
*
* @param relCodeBatchRequest
*/
@Transactional(rollbackFor = Exception.class)
@ -175,19 +179,18 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode
List<RelCodeBatch> list = this.list(new LambdaQueryWrapper<RelCodeBatch>()
.eq(RelCodeBatch::getProductCode, productCode)
.eq(RelCodeBatch::getSubTypeNo, subTypeNo)
.eq(RelCodeBatch::getBatchNo, batchNo))
;
if (CollUtil.isNotEmpty(list)){
throw new JsonException( "层级编码:【"+productCode + "】;类型编码:【" + subTypeNo + "】;批次号:【"+batchNo + "】已存在!");
.eq(RelCodeBatch::getBatchNo, batchNo));
if (CollUtil.isNotEmpty(list)) {
throw new JsonException("层级编码:【" + productCode + "】;类型编码:【" + subTypeNo + "】;批次号:【" + batchNo + "】已存在!");
}
List<RelCodeDetailRequest> detailList = relCodeBatchRequest.getDetailList();
if(CollUtil.isEmpty(detailList)){
if (CollUtil.isEmpty(detailList)) {
throw new JsonException("关联明细不能为空!");
}
AuthAdmin user = customerService.getUserBean();
RelCodeDetailRequest relCodeDetailRequest = detailList.get(0);
RelCodeBatch relCodeBatch = new RelCodeBatch();
BeanUtils.copyProperties(relCodeBatchRequest,relCodeBatch);
BeanUtils.copyProperties(relCodeBatchRequest, relCodeBatch);
relCodeBatch.setCreateTime(new Date());
relCodeBatch.setCreateUser(user.getUserName());
relCodeBatch.setUpdateTime(new Date());
@ -197,11 +200,11 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode
relCodeBatch.setErpId(customerId);
this.save(relCodeBatch);
List<RelCodeDetail> relCodeDetails = new ArrayList<>();
for(RelCodeDetailRequest request : detailList){
for (RelCodeDetailRequest request : detailList) {
RelCodeDetail relCodeDetail = new RelCodeDetail();
String parentCode = request.getParentCode();
request.setParentCode(StrUtil.isNotBlank(parentCode)?parentCode:"0");
BeanUtils.copyProperties(request,relCodeDetail);
request.setParentCode(StrUtil.isNotBlank(parentCode) ? parentCode : "0");
BeanUtils.copyProperties(request, relCodeDetail);
relCodeDetail.setBatchIdFk(relCodeBatch.getId());
relCodeDetails.add(relCodeDetail);
}
@ -221,19 +224,19 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode
@Transactional(rollbackFor = Exception.class)
public void delete(Long id) {
if(id == null){
if (id == null) {
throw new JsonException("id 不能为空");
}
relCodeDetailService.remove(new LambdaQueryWrapper<RelCodeDetail>().eq(RelCodeDetail::getBatchIdFk,id));
relCodeDetailService.remove(new LambdaQueryWrapper<RelCodeDetail>().eq(RelCodeDetail::getBatchIdFk, id));
this.removeById(id);
}
@Transactional(rollbackFor = Exception.class)
public void addRelCodeSpellBox(List<RelCodeBatchRequest> relCodeBatchRequests) {
if (CollUtil.isEmpty(relCodeBatchRequests)){
if (CollUtil.isEmpty(relCodeBatchRequests)) {
throw new JsonException("单据信息异常!");
}
relCodeBatchRequests.forEach( item -> {
relCodeBatchRequests.forEach(item -> {
this.add(item);
});
}
@ -241,17 +244,17 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode
@Transactional(rollbackFor = Exception.class)
public void deleteDetail(String curCode) {
List<RelCodeDetail> list = relCodeDetailService.list(new LambdaQueryWrapper<RelCodeDetail>().eq(RelCodeDetail::getParentCode, curCode));
if (CollUtil.isNotEmpty(list)){
if (CollUtil.isNotEmpty(list)) {
List<Integer> batchIds = list.stream().map(RelCodeDetail::getBatchIdFk).collect(Collectors.toList());
this.removeBatchByIds(batchIds);
relCodeDetailService.remove(new LambdaQueryWrapper<RelCodeDetail>().in(RelCodeDetail::getBatchIdFk,batchIds));
relCodeDetailService.remove(new LambdaQueryWrapper<RelCodeDetail>().in(RelCodeDetail::getBatchIdFk, batchIds));
}
}
@Transactional(rollbackFor = Exception.class)
public void deleteAllDetail(List<RelCodeDetailRequest> detailList) {
if (CollUtil.isNotEmpty(detailList)){
detailList.forEach( item -> {
if (CollUtil.isNotEmpty(detailList)) {
detailList.forEach(item -> {
String curCode = item.getCurCode();
this.deleteDetail(curCode);
});
@ -287,21 +290,21 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode
this.saveDetailByParentCode(relCodeDetailByParentCodeResponse);
List<RelCodeDetailByParentCodeResponse> relCodeDetailSons = relCodeDetailByParentCodeResponse.getRelCodeDetailSons();
if (CollUtil.isNotEmpty(relCodeDetailSons)) {
relCodeDetailSons.forEach( item ->{
relCodeDetailSons.forEach(item -> {
this.saveDetailByParentCode(item);
});
}
}catch (Exception e){
log.error("拉取SPMS同步库进行更新失败:[" + parentCode + "]" );
} catch (Exception e) {
log.error("拉取SPMS同步库进行更新失败:[" + parentCode + "]");
log.error(e.getMessage(), e);
}
}
return true;
}else
} else
return false;
}
public void saveDetailByParentCode( RelCodeDetailByParentCodeResponse relCodeDetailByParentCodeResponse) {
public void saveDetailByParentCode(RelCodeDetailByParentCodeResponse relCodeDetailByParentCodeResponse) {
String productCode = relCodeDetailByParentCodeResponse.getProductCode();
String subTypeNo = relCodeDetailByParentCodeResponse.getSubTypeNo();
String batchNo = relCodeDetailByParentCodeResponse.getBatchNo();
@ -351,50 +354,53 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode
}
@Resource
IoCodeTempDao ioCodeTempDao;
public void threadUpdateIoCodeTempEntity(String parentCode){
List<IoCodeTempEntity> ioCodeTempEntities = ioCodeTempDao.selectList(new LambdaQueryWrapper<IoCodeTempEntity>().eq(IoCodeTempEntity::getCode, parentCode));
if (CollUtil.isNotEmpty(ioCodeTempEntities)){
//1、排除掉层级是1的
UdiEntity udi = FilterUdiUtils.getUdi(parentCode);
String udi1 = udi.getUdi();
ProductInfoEntity byNameCode = productInfoService.findByNameCode(udi1);
List<RelCodeBatch> navList = this.list(new LambdaQueryWrapper<RelCodeBatch>()
.eq(RelCodeBatch::getParentCode, parentCode));
if ( (byNameCode != null && "1".equals(byNameCode.getPackLevel()))
|| (CollUtil.isNotEmpty(navList))
){
//打上匹配到了药品关联关系的标记
for (int i = 0; i < ioCodeTempEntities.size(); i++) {
IoCodeTempEntity ioCodeTempEntity = ioCodeTempEntities.get(i);
ioCodeTempEntity.setDrugLink(1);
ioCodeTempDao.updateById(ioCodeTempEntity);
@Resource
UdiProductService udiProductService;
public void threadUpdateIoCodeTempEntity(String parentCode) {
List<IoCodeTempEntity> ioCodeTempEntities = ioCodeTempDao.selectList(new LambdaQueryWrapper<IoCodeTempEntity>().eq(IoCodeTempEntity::getCode, parentCode));
if (CollUtil.isNotEmpty(ioCodeTempEntities)) {
//1、排除掉层级是1的
UdiEntity udi = FilterUdiUtils.getUdi(parentCode);
if (udi == null)
return;
String udi1 = udi.getUdi();
UdiProductEntity udiProductEntity = udiProductService.findByNameCode(udi1);
if (udiProductEntity == null)
return;
List<RelCodeBatch> navList = this.list(new LambdaQueryWrapper<RelCodeBatch>()
.eq(RelCodeBatch::getParentCode, parentCode));
if ((udiProductEntity != null && "1".equals(udiProductEntity.getPackLevel()))
|| (CollUtil.isNotEmpty(navList))
) {
//打上匹配到了药品关联关系的标记
for (int i = 0; i < ioCodeTempEntities.size(); i++) {
IoCodeTempEntity ioCodeTempEntity = ioCodeTempEntities.get(i);
ioCodeTempEntity.setDrugLink(1);
ioCodeTempDao.updateById(ioCodeTempEntity);
}
} else {
ThreadUtil.execAsync(() -> {
asynThreadUpdateIoCodeTempEntity(parentCode, ioCodeTempEntities);
});
}
}else {
ThreadUtil.execAsync(() -> {
asynThreadUpdateIoCodeTempEntity(parentCode,ioCodeTempEntities);
});
}
}
}
}
public void asynThreadUpdateIoCodeTempEntity(String parentCode,List<IoCodeTempEntity> ioCodeTempEntities){
if (this.batchExist(parentCode)){
public void asynThreadUpdateIoCodeTempEntity(String parentCode, List<IoCodeTempEntity> ioCodeTempEntities) {
if (this.batchExist(parentCode)) {
//打上匹配到了药品关联关系的标记
for (int i = 0; i < ioCodeTempEntities.size(); i++) {
IoCodeTempEntity ioCodeTempEntity = ioCodeTempEntities.get(i);
ioCodeTempEntity.setDrugLink(1);
ioCodeTempDao.updateById(ioCodeTempEntity);
}
}else {
} else {
//打上匹配不到了药品关联关系的标记
for (int i = 0; i < ioCodeTempEntities.size(); i++) {
IoCodeTempEntity ioCodeTempEntity = ioCodeTempEntities.get(i);

@ -13,13 +13,16 @@ import com.glxp.api.req.collect.RelCodeDetailRequest;
import com.glxp.api.res.collect.RelCodeDetailResponse;
import com.glxp.api.util.udi.FilterUdiUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.Currency;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.glxp.api.dao.collect.RelCodeDetailMapper;
import com.glxp.api.entity.collect.RelCodeDetail;
@Service
public class RelCodeDetailService extends ServiceImpl<RelCodeDetailMapper, RelCodeDetail> {
@ -28,20 +31,21 @@ public class RelCodeDetailService extends ServiceImpl<RelCodeDetailMapper, RelCo
/**
*
*
* @param relCodeDetailRequest
* @return
*/
public RelCodeDetailResponse scanCode(RelCodeDetailRequest relCodeDetailRequest) {
String curCode = relCodeDetailRequest.getCurCode();
String parentCode = relCodeDetailRequest.getParentCode();
if(StrUtil.isBlank(curCode)){
if (StrUtil.isBlank(curCode)) {
throw new JsonException("追溯码不能为空");
}
if (curCode.endsWith("\u001D")) {
curCode = curCode.replace("\u001D", "");
}
UdiEntity curCodeUdi = FilterUdiUtils.getUdi(curCode);
if (curCodeUdi == null){
if (curCodeUdi == null) {
throw new JsonException("无效条码!");
}
RelCodeDetailResponse relCodeDetailResponse = new RelCodeDetailResponse();
@ -49,39 +53,39 @@ public class RelCodeDetailService extends ServiceImpl<RelCodeDetailMapper, RelCo
.eq(BasicProductsEntity::getNameCode, curCodeUdi.getUdi())
.last("limit 1");
BasicProductsEntity cur = basicProductsDao.selectOne(cw);
if(cur == null){
if (cur == null) {
throw new JsonException("产品信息不存在");
}
//是否已存在数据库中
List<RelCodeDetail> list = this.baseMapper.selectList(new LambdaQueryWrapper<RelCodeDetail>().eq(RelCodeDetail::getCurCode, curCode));
if (CollUtil.isNotEmpty(list)){
if (CollUtil.isNotEmpty(list)) {
throw new JsonException("当前条码关联关系已被维护!");
}
if(StrUtil.isNotBlank(parentCode)){
if (StrUtil.isNotBlank(parentCode)) {
if (parentCode.endsWith("\u001D")) {
parentCode = parentCode.replace("\u001D", "");
}
if(StrUtil.equals(curCode,parentCode)){
if (StrUtil.equals(curCode, parentCode)) {
throw new JsonException("录入条码重复!");
}
UdiEntity parentCodeUdi = FilterUdiUtils.getUdi(parentCode);
if (parentCodeUdi == null){
if (parentCodeUdi == null) {
throw new JsonException("无效父级条码!");
}
LambdaQueryWrapper<BasicProductsEntity> pw = new LambdaQueryWrapper<BasicProductsEntity>()
.eq(BasicProductsEntity::getNameCode, parentCodeUdi.getUdi())
.last("limit 1");
BasicProductsEntity parent = basicProductsDao.selectOne(pw);
if(parent == null){
if (parent == null) {
throw new JsonException("父级产品信息不存在");
}
if(!StrUtil.equals(parent.getUuid(),cur.getUuid())){
if (!StrUtil.equals(parent.getUuid(), cur.getUuid())) {
throw new JsonException("当前条码不是同一产品");
}
if(Integer.valueOf(parent.getPackLevel()) - Integer.valueOf(cur.getPackLevel()) != 1){
if (Integer.valueOf(parent.getPackLevel()) - Integer.valueOf(cur.getPackLevel()) != 1) {
throw new JsonException("当前条码不属于子条码");
}
}else {
} else {
parentCode = "0";
}
relCodeDetailResponse.setCurCode(curCode);
@ -99,6 +103,7 @@ public class RelCodeDetailService extends ServiceImpl<RelCodeDetailMapper, RelCo
/**
*
*
* @param relCodeDetailRequest
* @return
*/
@ -113,4 +118,15 @@ public class RelCodeDetailService extends ServiceImpl<RelCodeDetailMapper, RelCo
return this.baseMapper.filterList(relCodeDetailRequest);
}
public RelCodeDetailResponse findByCode(String code) {
RelCodeDetailRequest relCodeDetailRequest = new RelCodeDetailRequest();
relCodeDetailRequest.setCurCode(code);
List<RelCodeDetailResponse> relCodeDetailResponse = filterList(relCodeDetailRequest);
if (CollUtil.isNotEmpty(relCodeDetailResponse)) {
return relCodeDetailResponse.get(0);
} else {
return null;
}
}
}

@ -33,7 +33,6 @@ import com.glxp.api.service.basic.UdiRelevanceService;
import com.glxp.api.service.basic.UdiRlSupService;
import com.glxp.api.service.inout.IoAddInoutService;
import com.glxp.api.service.inout.IoCheckInoutService;
import com.glxp.api.service.inout.IoCodeTempService;
import com.glxp.api.service.inout.IoOrderService;
import com.glxp.api.service.inout.impl.IoCodeService;
import com.glxp.api.service.inv.impl.InvProductService;

@ -1,59 +1,274 @@
package com.glxp.api.service.inout;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.pagehelper.PageHelper;
import com.glxp.api.dao.inout.IoCodeTempDao;
import com.glxp.api.entity.basic.BasicBussinessTypeEntity;
import com.glxp.api.entity.collect.RelCodeDetail;
import com.glxp.api.entity.inout.IoCodeTempEntity;
import com.glxp.api.entity.inout.IoOrderDetailCodeEntity;
import com.glxp.api.entity.inout.IoOrderEntity;
import com.glxp.api.req.inout.FilterCodeRequest;
import com.glxp.api.res.basic.UdiRelevanceResponse;
import com.glxp.api.res.inout.IoCodeResponse;
import com.glxp.api.res.inout.IoCodeTempResponse;
import com.glxp.api.service.basic.IBasicBussinessTypeService;
import com.glxp.api.service.basic.UdiRelevanceService;
import com.glxp.api.service.collect.RelCodeDetailService;
import com.glxp.api.service.inout.IoOrderDetailBizService;
import com.glxp.api.service.inout.IoOrderDetailCodeService;
import com.glxp.api.service.inout.IoOrderService;
import com.glxp.api.util.BeanCopyUtils;
import com.glxp.api.util.IntUtil;
import com.glxp.api.util.page.PageQuery;
import com.glxp.api.util.page.TableDataInfo;
import com.glxp.api.util.udi.UdiCalCountUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
public interface IoCodeTempService {
@Service
@Transactional(rollbackFor = Exception.class)
public class IoCodeTempService {
@Resource
IoCodeTempDao ioCodeTempDao;
IoCodeTempEntity selectById(Integer id);
int insert(IoCodeTempEntity codeEnttity);
public IoCodeTempEntity selectById(Integer id) {
return ioCodeTempDao.selectById(id);
}
int deleteById(Integer id);
boolean insertBatch(List<IoCodeTempEntity> codeEnttities);
public int insert(IoCodeTempEntity codeEnttity) {
codeEnttity.setId(null);
return ioCodeTempDao.insert(codeEnttity);
}
int updateById(IoCodeTempEntity codeEnttity);
public int deleteById(Integer id) {
return ioCodeTempDao.deleteById(id);
}
int updateByOrderId(IoCodeTempEntity codeTempEntity);
IoCodeTempEntity findByUnique(String orderId, String code);
public boolean insertBatch(List<IoCodeTempEntity> codeEnttities) {
return ioCodeTempDao.insertBatch(codeEnttities);
}
List<IoCodeTempEntity> findByOrderId(String billNo);
List<IoCodeResponse> findJoinByOrderId(String billNo);
public List<IoCodeTempEntity> findByOrderId(String billNo) {
return ioCodeTempDao.selectList(new QueryWrapper<IoCodeTempEntity>().eq("orderId", billNo));
}
TableDataInfo<IoCodeTempEntity> findByOrderId(FilterCodeRequest filterCodeRequest);
int deleteByBillNo(String orderId);
public List<IoCodeResponse> findJoinByOrderId(String billNo) {
if (StrUtil.isEmpty(billNo))
return null;
FilterCodeRequest filterCodeRequest = new FilterCodeRequest();
filterCodeRequest.setOrderId(billNo);
return ioCodeTempDao.filterJoinProduct(filterCodeRequest);
}
/**
*
*
* @param filterCodeRequest
* @return
*/
List<IoCodeTempResponse> findCodeList(FilterCodeRequest filterCodeRequest);
boolean isExit(String orderId);
public int updateById(IoCodeTempEntity codeEnttity) {
return ioCodeTempDao.updateById(codeEnttity);
}
Integer selectExitCount(String orderId, String bacthNo, Long relId, String supId);
Integer selectExitCount(String orderId, String code);
public int updateByOrderId(IoCodeTempEntity codeTempEntity) {
return ioCodeTempDao.update(codeTempEntity, new QueryWrapper<IoCodeTempEntity>().eq("orderId", codeTempEntity.getOrderId()));
}
Boolean checkTempCode(IoCodeTempEntity ioCodeTempEntity);
IoCodeTempEntity selectByCode(String code, String batchNo, String action);
public IoCodeTempEntity findByUnique(String orderId, String code) {
List<IoCodeTempEntity> codeTempEntities = ioCodeTempDao.selectList(new QueryWrapper<IoCodeTempEntity>().eq("orderId", orderId).eq("code", code));
if (CollUtil.isNotEmpty(codeTempEntities)) {
IoCodeTempEntity codeTempEntity = codeTempEntities.get(0);
if (codeTempEntities.size() > 1) {
for (int i = 1; i < codeTempEntities.size(); i++) {
codeTempEntity.setCount(codeTempEntity.getCount() + codeTempEntities.get(i).getCount());
codeTempEntity.setReCount(codeTempEntity.getReCount() + codeTempEntities.get(i).getReCount());
}
}
List<IoCodeTempEntity> selectByCodes(List<String> codeList, String orderId);
return codeTempEntity;
}
return null;
}
public TableDataInfo<IoCodeTempEntity> findByOrderId(FilterCodeRequest filterCodeRequest) {
PageQuery pageQuery = new PageQuery();
BeanCopyUtils.copy(filterCodeRequest, pageQuery);
Page<IoCodeTempEntity> page = ioCodeTempDao.selectPage(pageQuery.build(), new QueryWrapper<IoCodeTempEntity>().eq("orderId", filterCodeRequest.getOrderId()));
return TableDataInfo.build(page);
}
public int deleteByBillNo(String orderId) {
return ioCodeTempDao.delete(new QueryWrapper<IoCodeTempEntity>().eq("orderId", orderId));
}
public List<IoCodeTempResponse> findCodeList(FilterCodeRequest filterCodeRequest) {
if (null != filterCodeRequest && null != filterCodeRequest.getPage() && null != filterCodeRequest.getLimit()) {
PageHelper.offsetPage((filterCodeRequest.getPage() - 1) * filterCodeRequest.getLimit(), filterCodeRequest.getLimit());
}
return ioCodeTempDao.selectCodeList(filterCodeRequest);
}
public boolean isExit(String orderId) {
return ioCodeTempDao.exists(new QueryWrapper<IoCodeTempEntity>().eq("orderId", orderId));
}
public Integer selectExitCount(String orderId, String bacthNo, Long relId, String supId) {
FilterCodeRequest filterCodeRequest = new FilterCodeRequest();
filterCodeRequest.setOrderId(orderId);
filterCodeRequest.setBatchNo(bacthNo);
filterCodeRequest.setRelId(relId + "");
filterCodeRequest.setSupId(supId);
return ioCodeTempDao.selectExitCount(filterCodeRequest);
}
public Integer selectExitCount(String orderId, String code) {
FilterCodeRequest filterCodeRequest = new FilterCodeRequest();
filterCodeRequest.setOrderId(orderId);
filterCodeRequest.setCode(code);
return ioCodeTempDao.selectExitCount(filterCodeRequest);
}
public Boolean checkTempCode(IoCodeTempEntity ioCodeTempEntity) {
QueryWrapper<IoCodeTempEntity> ew = new QueryWrapper<>();
ew.eq("code", ioCodeTempEntity.getCode());
ew.eq("corpOrderId", ioCodeTempEntity.getCorpOrderId());
ew.eq("batchNo", ioCodeTempEntity.getBatchNo());
ew.eq("produceDate", ioCodeTempEntity.getProduceDate());
ew.eq("expireDate", ioCodeTempEntity.getExpireDate());
ew.eq("serialNo", ioCodeTempEntity.getSerialNo());
Long count = ioCodeTempDao.selectCount(ew);
if (count > 0) {
return false;
}
return true;
}
public IoCodeTempEntity selectByCode(String code, String batchNo, String action) {
QueryWrapper<IoCodeTempEntity> ew = new QueryWrapper<>();
ew.eq("code", code);
ew.eq(StrUtil.isNotEmpty(batchNo), "batchNo", batchNo);
ew.eq(StrUtil.isNotEmpty(action), "action", action);
return ioCodeTempDao.selectOne(ew);
}
public List<IoCodeTempEntity> selectByCodes(List<String> codeList, String orderId) {
QueryWrapper<IoCodeTempEntity> ew = new QueryWrapper<>();
ew.eq("orderId", orderId);
ew.in("code", codeList);
return ioCodeTempDao.selectList(ew);
}
@Resource
private IoOrderService orderService;
@Resource
private IBasicBussinessTypeService basicBussinessTypeService;
@Resource
UdiRelevanceService udiRelevanceService;
@Resource
UdiCalCountUtil udiCalCountUtil;
@Resource
IoOrderDetailCodeService ioOrderDetailCodeService;
@Resource
IoOrderDetailBizService orderDetailBizService;
public Boolean removeCodeById(IoCodeTempEntity codeTempEntity) {
IoOrderEntity orderEntity = orderService.findByBillNo(codeTempEntity.getOrderId());
BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(orderEntity.getAction());
UdiRelevanceResponse udiRelevanceResponses = udiRelevanceService.selectByNameCode(codeTempEntity.getNameCode());
if (codeTempEntity.getMyCount() > 1) {
codeTempEntity.setCount(codeTempEntity.getMyCount() - 1);
if (bussinessTypeEntity.isUse()) {
codeTempEntity.setReCount(codeTempEntity.getMyReCount() - udiCalCountUtil.getUseActCount(udiRelevanceResponses));
} else {
codeTempEntity.setReCount(codeTempEntity.getMyReCount() - udiCalCountUtil.getCirActCount(udiRelevanceResponses));
}
updateById(codeTempEntity);
} else {
deleteById(codeTempEntity.getId());
}
//更新扫码详情
IoOrderDetailCodeEntity orderDetailCodeEntity = ioOrderDetailCodeService.findByUnique(orderEntity.getBillNo(), codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getPrice());
if (orderDetailCodeEntity != null) {
//扫码数量-1
int orderCount = IntUtil.value(orderDetailCodeEntity.getCount());
int orderReCount = IntUtil.value(orderDetailCodeEntity.getReCount());
if (orderCount > 1) {
orderDetailCodeEntity.setCount(orderCount - 1);
if (bussinessTypeEntity.isUse()) {
orderDetailCodeEntity.setReCount(orderReCount - udiCalCountUtil.getUseActCount(udiRelevanceResponses));
// codeTempEntity.setReCount(codeTempEntity.getMyReCount() - udiCalCountUtil.getUseActCount(udiRelevanceResponses);
} else {
orderDetailCodeEntity.setReCount(orderReCount - udiCalCountUtil.getCirActCount(udiRelevanceResponses));
// codeTempEntity.setReCount(codeTempEntity.getMyReCount() - udiCalCountUtil.getCirActCount(udiRelevanceResponses);
}
ioOrderDetailCodeService.update(orderDetailCodeEntity);
} else {
ioOrderDetailCodeService.deleteById(orderDetailCodeEntity.getId());
}
}
boolean r1 = orderDetailBizService.isExit(orderEntity.getBillNo());
boolean r2 = ioOrderDetailCodeService.isExit(orderEntity.getBillNo());
if (!r1 && !r2) {
if (StrUtil.isNotEmpty(orderDetailCodeEntity.getOrderIdFk()))
orderService.deleteByBillNo(orderDetailCodeEntity.getOrderIdFk());
}
orderEntity.setUpdateTime(new Date());
orderService.update(orderEntity);
return true;
}
@Resource
RelCodeDetailService relCodeDetailService;
public boolean ieExitRel(String code, String orderId) {
boolean ret = false;
RelCodeDetail relCodeDetail = relCodeDetailService.getOne(new LambdaQueryWrapper<RelCodeDetail>().eq(RelCodeDetail::getCurCode, code));
if (relCodeDetail != null) {
ret = ioCodeTempDao.exists(new LambdaQueryWrapper<IoCodeTempEntity>().eq(IoCodeTempEntity::getOrderId, orderId).eq(IoCodeTempEntity::getCode, relCodeDetail.getParentCode()));
if (!ret) {
ret = ioCodeTempDao.exists(new LambdaQueryWrapper<IoCodeTempEntity>().eq(IoCodeTempEntity::getOrderId, orderId).eq(IoCodeTempEntity::getParentCode, code));
}
}
return ret;
}
Boolean removeCodeById(IoCodeTempEntity codeTempEntity);
}

@ -1,255 +0,0 @@
package com.glxp.api.service.inout.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.pagehelper.PageHelper;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.dao.inout.IoCodeTempDao;
import com.glxp.api.entity.basic.BasicBussinessTypeEntity;
import com.glxp.api.entity.inout.IoCodeTempEntity;
import com.glxp.api.entity.inout.IoOrderDetailCodeEntity;
import com.glxp.api.entity.inout.IoOrderEntity;
import com.glxp.api.req.inout.FilterCodeRequest;
import com.glxp.api.res.basic.UdiRelevanceResponse;
import com.glxp.api.res.inout.IoCodeResponse;
import com.glxp.api.res.inout.IoCodeTempResponse;
import com.glxp.api.service.basic.IBasicBussinessTypeService;
import com.glxp.api.service.basic.UdiRelevanceService;
import com.glxp.api.service.inout.IoCodeTempService;
import com.glxp.api.service.inout.IoOrderDetailBizService;
import com.glxp.api.service.inout.IoOrderDetailCodeService;
import com.glxp.api.service.inout.IoOrderService;
import com.glxp.api.util.BeanCopyUtils;
import com.glxp.api.util.IntUtil;
import com.glxp.api.util.page.PageQuery;
import com.glxp.api.util.page.TableDataInfo;
import com.glxp.api.util.udi.UdiCalCountUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
@Service
@Transactional(rollbackFor = Exception.class)
public class IoCodeTempServiceImpl implements IoCodeTempService {
@Resource
IoCodeTempDao ioCodeTempDao;
@Override
public IoCodeTempEntity selectById(Integer id) {
return ioCodeTempDao.selectById(id);
}
@Override
public int insert(IoCodeTempEntity codeEnttity) {
codeEnttity.setId(null);
return ioCodeTempDao.insert(codeEnttity);
}
@Override
public int deleteById(Integer id) {
return ioCodeTempDao.deleteById(id);
}
@Override
public boolean insertBatch(List<IoCodeTempEntity> codeEnttities) {
return ioCodeTempDao.insertBatch(codeEnttities);
}
@Override
public List<IoCodeTempEntity> findByOrderId(String billNo) {
return ioCodeTempDao.selectList(new QueryWrapper<IoCodeTempEntity>().eq("orderId", billNo));
}
@Override
public List<IoCodeResponse> findJoinByOrderId(String billNo) {
if (StrUtil.isEmpty(billNo))
return null;
FilterCodeRequest filterCodeRequest = new FilterCodeRequest();
filterCodeRequest.setOrderId(billNo);
return ioCodeTempDao.filterJoinProduct(filterCodeRequest);
}
@Override
public int updateById(IoCodeTempEntity codeEnttity) {
return ioCodeTempDao.updateById(codeEnttity);
}
@Override
public int updateByOrderId(IoCodeTempEntity codeTempEntity) {
return ioCodeTempDao.update(codeTempEntity, new QueryWrapper<IoCodeTempEntity>().eq("orderId", codeTempEntity.getOrderId()));
}
@Override
public IoCodeTempEntity findByUnique(String orderId, String code) {
List<IoCodeTempEntity> codeTempEntities = ioCodeTempDao.selectList(new QueryWrapper<IoCodeTempEntity>().eq("orderId", orderId).eq("code", code));
if (CollUtil.isNotEmpty(codeTempEntities)) {
IoCodeTempEntity codeTempEntity = codeTempEntities.get(0);
if (codeTempEntities.size() > 1) {
for (int i = 1; i < codeTempEntities.size(); i++) {
codeTempEntity.setCount(codeTempEntity.getCount() + codeTempEntities.get(i).getCount());
codeTempEntity.setReCount(codeTempEntity.getReCount() + codeTempEntities.get(i).getReCount());
}
}
return codeTempEntity;
}
return null;
}
@Override
public TableDataInfo<IoCodeTempEntity> findByOrderId(FilterCodeRequest filterCodeRequest) {
PageQuery pageQuery = new PageQuery();
BeanCopyUtils.copy(filterCodeRequest, pageQuery);
Page<IoCodeTempEntity> page = ioCodeTempDao.selectPage(pageQuery.build(), new QueryWrapper<IoCodeTempEntity>().eq("orderId", filterCodeRequest.getOrderId()));
return TableDataInfo.build(page);
}
@Override
public int deleteByBillNo(String orderId) {
return ioCodeTempDao.delete(new QueryWrapper<IoCodeTempEntity>().eq("orderId", orderId));
}
@Override
public List<IoCodeTempResponse> findCodeList(FilterCodeRequest filterCodeRequest) {
if (null != filterCodeRequest && null != filterCodeRequest.getPage() && null != filterCodeRequest.getLimit()) {
PageHelper.offsetPage((filterCodeRequest.getPage() - 1) * filterCodeRequest.getLimit(), filterCodeRequest.getLimit());
}
return ioCodeTempDao.selectCodeList(filterCodeRequest);
}
@Override
public boolean isExit(String orderId) {
return ioCodeTempDao.exists(new QueryWrapper<IoCodeTempEntity>().eq("orderId", orderId));
}
@Override
public Integer selectExitCount(String orderId, String bacthNo, Long relId, String supId) {
FilterCodeRequest filterCodeRequest = new FilterCodeRequest();
filterCodeRequest.setOrderId(orderId);
filterCodeRequest.setBatchNo(bacthNo);
filterCodeRequest.setRelId(relId + "");
filterCodeRequest.setSupId(supId);
return ioCodeTempDao.selectExitCount(filterCodeRequest);
}
@Override
public Integer selectExitCount(String orderId, String code) {
FilterCodeRequest filterCodeRequest = new FilterCodeRequest();
filterCodeRequest.setOrderId(orderId);
filterCodeRequest.setCode(code);
return ioCodeTempDao.selectExitCount(filterCodeRequest);
}
@Override
public Boolean checkTempCode(IoCodeTempEntity ioCodeTempEntity) {
QueryWrapper<IoCodeTempEntity> ew = new QueryWrapper<>();
ew.eq("code", ioCodeTempEntity.getCode());
ew.eq("corpOrderId", ioCodeTempEntity.getCorpOrderId());
ew.eq("batchNo", ioCodeTempEntity.getBatchNo());
ew.eq("produceDate", ioCodeTempEntity.getProduceDate());
ew.eq("expireDate", ioCodeTempEntity.getExpireDate());
ew.eq("serialNo", ioCodeTempEntity.getSerialNo());
Long count = ioCodeTempDao.selectCount(ew);
if (count > 0) {
return false;
}
return true;
}
@Override
public IoCodeTempEntity selectByCode(String code, String batchNo, String action) {
QueryWrapper<IoCodeTempEntity> ew = new QueryWrapper<>();
ew.eq("code", code);
ew.eq(StrUtil.isNotEmpty(batchNo), "batchNo", batchNo);
ew.eq(StrUtil.isNotEmpty(action), "action", action);
return ioCodeTempDao.selectOne(ew);
}
@Override
public List<IoCodeTempEntity> selectByCodes(List<String> codeList, String orderId) {
QueryWrapper<IoCodeTempEntity> ew = new QueryWrapper<>();
ew.eq("orderId", orderId);
ew.in("code", codeList);
return ioCodeTempDao.selectList(ew);
}
@Resource
private IoOrderService orderService;
@Resource
private IBasicBussinessTypeService basicBussinessTypeService;
@Resource
UdiRelevanceService udiRelevanceService;
@Resource
UdiCalCountUtil udiCalCountUtil;
@Resource
IoOrderDetailCodeService ioOrderDetailCodeService;
@Resource
IoOrderDetailBizService orderDetailBizService;
@Override
public Boolean removeCodeById(IoCodeTempEntity codeTempEntity) {
IoOrderEntity orderEntity = orderService.findByBillNo(codeTempEntity.getOrderId());
BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(orderEntity.getAction());
UdiRelevanceResponse udiRelevanceResponses = udiRelevanceService.selectByNameCode(codeTempEntity.getNameCode());
if (codeTempEntity.getMyCount() > 1) {
codeTempEntity.setCount(codeTempEntity.getMyCount() - 1);
if (bussinessTypeEntity.isUse()) {
codeTempEntity.setReCount(codeTempEntity.getMyReCount() - udiCalCountUtil.getUseActCount(udiRelevanceResponses));
} else {
codeTempEntity.setReCount(codeTempEntity.getMyReCount() - udiCalCountUtil.getCirActCount(udiRelevanceResponses));
}
updateById(codeTempEntity);
} else {
deleteById(codeTempEntity.getId());
}
//更新扫码详情
IoOrderDetailCodeEntity orderDetailCodeEntity = ioOrderDetailCodeService.findByUnique(orderEntity.getBillNo(), codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getPrice());
if (orderDetailCodeEntity != null) {
//扫码数量-1
int orderCount = IntUtil.value(orderDetailCodeEntity.getCount());
int orderReCount = IntUtil.value(orderDetailCodeEntity.getReCount());
if (orderCount > 1) {
orderDetailCodeEntity.setCount(orderCount - 1);
if (bussinessTypeEntity.isUse()) {
orderDetailCodeEntity.setReCount(orderReCount - udiCalCountUtil.getUseActCount(udiRelevanceResponses));
// codeTempEntity.setReCount(codeTempEntity.getMyReCount() - udiCalCountUtil.getUseActCount(udiRelevanceResponses);
} else {
orderDetailCodeEntity.setReCount(orderReCount - udiCalCountUtil.getCirActCount(udiRelevanceResponses));
// codeTempEntity.setReCount(codeTempEntity.getMyReCount() - udiCalCountUtil.getCirActCount(udiRelevanceResponses);
}
ioOrderDetailCodeService.update(orderDetailCodeEntity);
} else {
ioOrderDetailCodeService.deleteById(orderDetailCodeEntity.getId());
}
}
boolean r1 = orderDetailBizService.isExit(orderEntity.getBillNo());
boolean r2 = ioOrderDetailCodeService.isExit(orderEntity.getBillNo());
if (!r1 && !r2) {
if (StrUtil.isNotEmpty(orderDetailCodeEntity.getOrderIdFk()))
orderService.deleteByBillNo(orderDetailCodeEntity.getOrderIdFk());
}
orderEntity.setUpdateTime(new Date());
orderService.update(orderEntity);
return true;
}
}

@ -10,7 +10,6 @@ import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.pagehelper.PageHelper;
import com.glxp.api.common.enums.ResultEnum;
@ -19,7 +18,6 @@ import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.dao.inout.*;
import com.glxp.api.entity.inout.*;
import com.glxp.api.entity.system.PlatformEntity;
import com.glxp.api.idc.service.FileService;
import com.glxp.api.req.inout.PlatformLinkRequest;
import com.glxp.api.res.inout.IoUploadOrderResponse;
import com.glxp.api.res.inout.PlatformLinkResponse;
@ -36,7 +34,6 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.File;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.*;
import java.util.concurrent.TimeUnit;

@ -4686,3 +4686,6 @@ CALL Pro_Temp_ColumnWork('sys_workplace_queue', 'assignmentTerms1',
CALL Pro_Temp_ColumnWork('sys_workplace_queue', 'assignmentTerms2',
'varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT ''分配条件2''',
1);
CALL Pro_Temp_ColumnWork('io_code_temp', 'parentCode',
' varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT ''父级编码''',
1);
Loading…
Cancel
Save