关联码

dev_no_inv
zane 9 months ago
parent 18a47639f5
commit f72a821392

@ -79,4 +79,8 @@ public class RelCodeBatchRequest extends ListPageRequest {
private String keyWords; private String keyWords;
private List<RelCodeDetailRequest> detailList; private List<RelCodeDetailRequest> detailList;
private String code;
private String startDate;
private String endDate;
} }

@ -1,5 +1,6 @@
package com.glxp.api.res.collect; package com.glxp.api.res.collect;
import com.baomidou.mybatisplus.annotation.TableField;
import com.glxp.api.entity.basic.BasicProductsEntity; import com.glxp.api.entity.basic.BasicProductsEntity;
import lombok.Data; import lombok.Data;
@ -92,4 +93,18 @@ public class RelCodeDetailResponse {
*/ */
private String lineManager; private String lineManager;
/**
*
*/
private String cpmctymc;
/**
*
*/
private Integer bhxjsl;
/**
*
*/
private String packUnit;
} }

@ -5,12 +5,15 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.glxp.api.dao.basic.BasicProductsDao; import com.glxp.api.dao.basic.BasicProductsDao;
import com.glxp.api.entity.basic.BasicProductsEntity; import com.glxp.api.entity.basic.BasicProductsEntity;
import com.glxp.api.entity.basic.UdiEntity;
import com.glxp.api.exception.JsonException; import com.glxp.api.exception.JsonException;
import com.glxp.api.req.collect.RelCodeDetailRequest; import com.glxp.api.req.collect.RelCodeDetailRequest;
import com.glxp.api.res.collect.RelCodeDetailResponse; import com.glxp.api.res.collect.RelCodeDetailResponse;
import com.glxp.api.util.udi.FilterUdiUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Collections; import java.util.Collections;
import java.util.Currency;
import java.util.List; import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.glxp.api.dao.collect.RelCodeDetailMapper; import com.glxp.api.dao.collect.RelCodeDetailMapper;
@ -22,37 +25,65 @@ public class RelCodeDetailService extends ServiceImpl<RelCodeDetailMapper, RelCo
private BasicProductsDao basicProductsDao; private BasicProductsDao basicProductsDao;
/** /**
* *
* @param relCodeDetailRequest * @param relCodeDetailRequest
* @return * @return
*/ */
public RelCodeDetailResponse scanCode(RelCodeDetailRequest relCodeDetailRequest) { public RelCodeDetailResponse scanCode(RelCodeDetailRequest relCodeDetailRequest) {
String curCode = relCodeDetailRequest.getCurCode();
String parentCode = relCodeDetailRequest.getParentCode(); String parentCode = relCodeDetailRequest.getParentCode();
if(StrUtil.isBlank(parentCode)){ if(StrUtil.isBlank(curCode)){
throw new JsonException("父级码不能为空"); throw new JsonException("追溯码不能为空");
}
if (curCode.endsWith("\u001D")) {
curCode = curCode.replace("\u001D", "");
}
UdiEntity curCodeUdi = FilterUdiUtils.getUdi(curCode);
if (curCodeUdi == null){
throw new JsonException("无效条码!");
} }
RelCodeDetailResponse relCodeDetailResponse = new RelCodeDetailResponse(); RelCodeDetailResponse relCodeDetailResponse = new RelCodeDetailResponse();
LambdaQueryWrapper<BasicProductsEntity> qw = new LambdaQueryWrapper<BasicProductsEntity>() LambdaQueryWrapper<BasicProductsEntity> cw = new LambdaQueryWrapper<BasicProductsEntity>()
.eq(BasicProductsEntity::getNameCode, relCodeDetailRequest.getParentCode()) .eq(BasicProductsEntity::getNameCode, curCodeUdi.getUdi())
.last("limit 1"); .last("limit 1");
BasicProductsEntity parent = basicProductsDao.selectOne(qw); BasicProductsEntity cur = basicProductsDao.selectOne(cw);
if(parent == null){ if(cur == null){
throw new JsonException("产品信息不存在"); throw new JsonException("产品信息不存在");
} }
Integer packLevel = Integer.valueOf(parent.getPackLevel()); if(StrUtil.isNotBlank(parentCode)){
if(packLevel == 1){ if (parentCode.endsWith("\u001D")) {
throw new JsonException("产品信息不存在子包装"); parentCode = parentCode.replace("\u001D", "");
} }
//todo 可能存在多个子集 如何处理 UdiEntity parentCodeUdi = FilterUdiUtils.getUdi(parentCode);
LambdaQueryWrapper<BasicProductsEntity> qw2 = new LambdaQueryWrapper<BasicProductsEntity>() if (parentCodeUdi == null){
.eq(BasicProductsEntity::getUuid, parent.getUuid()) throw new JsonException("无效父级条码!");
.eq(BasicProductsEntity::getPackLevel,packLevel - 1) }
LambdaQueryWrapper<BasicProductsEntity> pw = new LambdaQueryWrapper<BasicProductsEntity>()
.eq(BasicProductsEntity::getNameCode, parentCodeUdi.getUdi())
.last("limit 1"); .last("limit 1");
BasicProductsEntity subset = basicProductsDao.selectOne(qw2); BasicProductsEntity parent = basicProductsDao.selectOne(pw);
relCodeDetailResponse.setCurCode(subset.getNameCode()); if(parent == null){
relCodeDetailResponse.setPackLayer(Integer.valueOf(subset.getPackLevel())); throw new JsonException("父级产品信息不存在");
relCodeDetailResponse.setParentCode(parent.getNameCode()); }
relCodeDetailResponse.setFlag(Integer.valueOf(subset.getMajorStatus())); if(!StrUtil.equals(parent.getUuid(),cur.getUuid())){
throw new JsonException("当前条码不是同一产品");
}
if(Integer.valueOf(parent.getPackLevel()) - Integer.valueOf(cur.getPackLevel()) != 1){
throw new JsonException("当前条码不属于子条码");
}
}else {
parentCode = "0";
}
relCodeDetailResponse.setCurCode(curCode);
relCodeDetailResponse.setParentCode(parentCode);
relCodeDetailResponse.setPackLayer(Integer.valueOf(cur.getPackLevel()));
relCodeDetailResponse.setFlag(Integer.valueOf(cur.getMajorStatus()));
relCodeDetailResponse.setCpmctymc(cur.getCpmctymc());
relCodeDetailResponse.setProductCode(cur.getNameCode());
relCodeDetailResponse.setBhxjsl(cur.getBhxjsl());
relCodeDetailResponse.setPackageSpec(cur.getBzgg());
relCodeDetailResponse.setCascadeRatio(cur.getPackRatio());
relCodeDetailResponse.setPackUnit(cur.getPackUnit());
return relCodeDetailResponse; return relCodeDetailResponse;
} }

@ -25,37 +25,46 @@
<select id="filterList" parameterType="com.glxp.api.req.collect.RelCodeBatchRequest" resultType="com.glxp.api.res.collect.RelCodeBatchResponse"> <select id="filterList" parameterType="com.glxp.api.req.collect.RelCodeBatchRequest" resultType="com.glxp.api.res.collect.RelCodeBatchResponse">
select select
id, a.id,
productCode, a.productCode,
subTypeNo, a.subTypeNo,
cascadeRatio, a.cascadeRatio,
packageSpec, a.packageSpec,
comment, a.comment,
batchNo, a.batchNo,
madeDate, a.madeDate,
validateDate, a.validateDate,
workShop, a.workShop,
lineName, a.lineName,
lineManager a.lineManager
from rel_code_batch from rel_code_batch a
<where> <where>
<if test="productCode != '' and productCode != null"> <if test="productCode != '' and productCode != null">
AND productCode LIKE concat('%', #{productCode}, '%') AND a.productCode LIKE concat('%', #{productCode}, '%')
</if> </if>
<if test="batchNo != null and batchNo != ''"> <if test="batchNo != null and batchNo != ''">
AND batchNo = #{batchNo} AND a.batchNo = #{batchNo}
</if> </if>
<if test="keyWords != '' and keyWords != null"> <if test="keyWords != '' and keyWords != null">
and ( and (
productCode LIKE concat('%', #{keyWords}, '%') a.productCode LIKE concat('%', #{keyWords}, '%')
or subTypeNo LIKE concat('%', #{keyWords}, '%') or a.subTypeNo LIKE concat('%', #{keyWords}, '%')
or packageSpec LIKE concat('%', #{keyWords}, '%')) or a.packageSpec LIKE concat('%', #{keyWords}, '%'))
</if> </if>
<if test="lineName != '' and lineName != null"> <if test="lineName != '' and lineName != null">
AND lineName LIKE concat('%', #{lineName}, '%') AND a.lineName LIKE concat('%', #{lineName}, '%')
</if> </if>
<if test="lineManager != '' and lineManager != null"> <if test="lineManager != '' and lineManager != null">
AND lineManager LIKE concat('%', #{lineManager}, '%') AND a.lineManager LIKE concat('%', #{lineManager}, '%')
</if>
<if test="code != '' and code != null">
and exists(select 1 from rel_code_detail b where a.id = b.batchIdFk and b.curCode = #{code})
</if>
<if test="startDate != null and startDate != ''">
<![CDATA[ and a.validateDate >= DATE_FORMAT(#{startDate}, '%Y-%m-%d %H:%i:%S') ]]>
</if>
<if test="endDate != null and endDate != ''">
<![CDATA[ and a.validateDate <= DATE_FORMAT(#{endDate}, '%Y-%m-%d %H:%i:%S') ]]>
</if> </if>
</where> </where>
</select> </select>

Loading…
Cancel
Save