Browse Source

2024-04-29

master
zelian_wu 2 years ago
parent
commit
43532a272d
  1. 22
      src/main/java/com/spring/modules/code/entity/CodeDrawingDetail.java
  2. 3
      src/main/java/com/spring/modules/code/mapper/CodeConditionDetailMapper.java
  3. 103
      src/main/java/com/spring/modules/code/service/impl/CodeDrawingServiceImpl.java
  4. 3
      src/main/resources/mapper/code/CodeConditionDetailMapper.xml

22
src/main/java/com/spring/modules/code/entity/CodeDrawingDetail.java

@ -0,0 +1,22 @@
package com.spring.modules.code.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
//@TableName("code_drawing_detail")
public class CodeDrawingDetail {
private String site;
private Integer itemNo;
private String drawingNo;
private String itemType;
private String itemValue;
private String itemLabel;
}

3
src/main/java/com/spring/modules/code/mapper/CodeConditionDetailMapper.java

@ -24,5 +24,6 @@ public interface CodeConditionDetailMapper extends BaseMapper<CodeConditionDetai
@Param("itemNo")Integer itemNo,
@Param("itemByCondition")String itemByCondition);
Integer getSeqNo(Integer seqNoBits);
Integer getSeqNo(@Param("seqNoBits") Integer seqNoBits,
@Param("lastSql")String lastSql);
}

103
src/main/java/com/spring/modules/code/service/impl/CodeDrawingServiceImpl.java

@ -5,11 +5,14 @@ import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapp
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.spring.common.utils.Constant;
import com.spring.modules.code.entity.CodeDrawing;
import com.spring.modules.code.entity.CodeDrawingDetail;
import com.spring.modules.code.entity.CodeParameterDef;
import com.spring.modules.code.entity.CodeSeqNoGenerateRule;
import com.spring.modules.code.mapper.CodeConditionDetailMapper;
import com.spring.modules.code.mapper.CodeDrawingMapper;
import com.spring.modules.code.service.CodeDrawingService;
import com.spring.modules.code.service.CodeParameterDefService;
import com.spring.modules.code.service.CodeSeqNoGenerateRuleService;
import com.spring.modules.code.utils.WrapperGenerate;
import com.spring.modules.code.vo.CodeDrawingVo;
import com.spring.modules.code.vo.CodeItemDefVo;
@ -21,8 +24,11 @@ import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
@Service
@Slf4j
@ -33,6 +39,8 @@ public class CodeDrawingServiceImpl extends ServiceImpl<CodeDrawingMapper, CodeD
private CodeParameterDefService codeParameterDefService;
@Autowired
private CodeConditionDetailMapper codeConditionDetailMapper;
@Autowired
private CodeSeqNoGenerateRuleService codeSeqNoGenerateRuleService;
@Override
public List<CodeDrawing> searchCodeDrawingList(CodeDrawingVo codeDrawing) {
LambdaQueryWrapper<CodeDrawing> wrapper = new LambdaQueryWrapper<>();
@ -102,8 +110,15 @@ public class CodeDrawingServiceImpl extends ServiceImpl<CodeDrawingMapper, CodeD
String allSeqCodeNo = "";//全局的流水号编码
String codeNoHasSeqNo = Constant.SYSTEM_ACTIVE_NO;//是否存在流水号
int seqNum = 0;//流水号数量
// 详情
List<CodeDrawingDetail> details = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
CodeItemDefVo codeItem = list.get(i);
CodeDrawingDetail detail = new CodeDrawingDetail();
detail.setSite(codeItem.getSite());
detail.setItemNo(codeItem.getItemNo());
detail.setItemType(codeItem.getItemType());
if (i > 0 && codeItem.getPostfix().equals(Constant.SYSTEM_ACTIVE_YES)){
// 添加分隔符号
currentShortcode.append(separator);
@ -120,19 +135,37 @@ public class CodeDrawingServiceImpl extends ServiceImpl<CodeDrawingMapper, CodeD
// 获得流水号
// 判断流水号类型
Integer seqNo = null;
// 获得流水号where条件
String lastSql = generateSeqNo(list.get(i),list,currentSeqShortcode.toString(),separator);
// 所有元素/全部元素
if (codeItem.getSeqNoType().equals("所有元素") || codeItem.getSeqNoType().equals("全局")){
seqNo = codeConditionDetailMapper.getSeqNo(codeItem.getSeqNoBits());
if (Objects.isNull(seqNo)){
seqNo = 0;
}
seqNo++;
StringBuilder formatStr = new StringBuilder();
for (int j = 0; j < codeItem.getSeqNoBits(); j++) {
formatStr.append(BigDecimal.ZERO);
}
codeItem.setValue(new DecimalFormat(formatStr.toString()).format(seqNo));
// if (codeItem.getSeqNoType().equals("所有元素") || codeItem.getSeqNoType().equals("全局")){
// // 获取流水号
// seqNo = codeConditionDetailMapper.getSeqNo(codeItem.getSeqNoBits(),lastSql);
// if (Objects.isNull(seqNo)){
// seqNo = 0;
// }
// seqNo++;
// StringBuilder formatStr = new StringBuilder();
// for (int j = 0; j < codeItem.getSeqNoBits(); j++) {
// formatStr.append(BigDecimal.ZERO);
// }
// codeItem.setValue(new DecimalFormat(formatStr.toString()).format(seqNo));
// }else {
//
// }
// 获取流水号
seqNo = codeConditionDetailMapper.getSeqNo(codeItem.getSeqNoBits(),lastSql);
if (Objects.isNull(seqNo)){
seqNo = 0;
}
seqNo++;
StringBuilder formatStr = new StringBuilder();
for (int j = 0; j < codeItem.getSeqNoBits(); j++) {
formatStr.append(BigDecimal.ZERO);
}
codeItem.setValue(new DecimalFormat(formatStr.toString()).format(seqNo));
currentShortcode.append(codeItem.getValue());
currentSeqShortcode.append("|").append(codeItem.getValue()).append("|");
}
@ -151,6 +184,9 @@ public class CodeDrawingServiceImpl extends ServiceImpl<CodeDrawingMapper, CodeD
if (codeItem.getShowInRemark().equals(Constant.SYSTEM_ACTIVE_YES)){// 备注
codeItemRemark.append(codeItem.getShowItemDescInRemark().equals(Constant.SYSTEM_ACTIVE_YES)?codeItem.getItemDesc():"").append(":").append(codeItem.getItemType().equals("选择")?codeItem.getLabel():codeItem.getValue());
}
detail.setItemLabel(codeItem.getItemType().equals("选择")?codeItem.getLabel():codeItem.getValue());
detail.setItemValue(codeItem.getValue());
details.add(detail);
}
CodeDrawing drawing = new CodeDrawing();
drawing.setDrawingNo(currentShortcode.toString());
@ -158,6 +194,51 @@ public class CodeDrawingServiceImpl extends ServiceImpl<CodeDrawingMapper, CodeD
drawing.setDrawingDesc(codeItemDesc.toString());
drawing.setRemark(codeItemRemark.toString());
drawing.setSeqFlag(codeNoHasSeqNo);
// todo 批量新增
return drawing;
}
private String generateSeqNo(CodeItemDefVo codeItemDefVo, List<CodeItemDefVo> list,String value,String separator) {
if (codeItemDefVo.getSeqNoType().equals("全局")){
return null;
}
// 所有/指定
if (codeItemDefVo.getSeqNoType().equals("所有元素")){
return value+"|%";
}
if (codeItemDefVo.getSeqNoType().equals("指定元素")){
// 获得 指定元素列表
Map<Integer, CodeSeqNoGenerateRule> map = codeSeqNoGenerateRuleService.lambdaQuery()
.eq(CodeSeqNoGenerateRule::getSite, codeItemDefVo.getSite())
.eq(CodeSeqNoGenerateRule::getItemNo, codeItemDefVo.getItemNo())
.list().stream().collect(Collectors.toMap(CodeSeqNoGenerateRule::getRelatedItemNo, codeSeqNoGenerateRule -> codeSeqNoGenerateRule));
StringBuilder sql = new StringBuilder();
for (int i = 0; i < list.size(); i++) {
CodeItemDefVo itemDefVo = list.get(i);
if (itemDefVo.getItemNo().equals(codeItemDefVo.getItemNo())){
continue;
}
if (i > 0 && itemDefVo.getPostfix().equals(Constant.SYSTEM_ACTIVE_YES)){
// 添加分隔符号
sql.append(separator);
}
if (Objects.nonNull(map.get(itemDefVo.getItemNo()))){
if (itemDefVo.getItemType().equals("流水号")){
sql.append("|").append(itemDefVo.getValue()).append("|");
}else {
sql.append("{").append(itemDefVo.getValue()).append("}");
}
continue;
}
if (itemDefVo.getItemType().equals("流水号")){
sql.append("|").append("%").append("|");
}else {
sql.append("{").append("%").append("}");
}
}
sql.append("|%");
return sql.toString();
}
return null;
}
}

3
src/main/resources/mapper/code/CodeConditionDetailMapper.xml

@ -124,5 +124,8 @@
<select id="getSeqNo" resultType="java.lang.Integer">
SELECT max(convert(int,SubString(drawing_no_new,CharIndex('|',drawing_no_new)+1,#{seqNoBits}))) as SL FROM DC_PartList
WHERE seq_flag = 'Y'
<if test="lastSql != null and lastSql != ''">
and drawing_no_new like #{lastSql}
</if>
</select>
</mapper>
Loading…
Cancel
Save