|
|
|
@ -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,9 +135,26 @@ 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 (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; |
|
|
|
} |
|
|
|
@ -132,7 +164,8 @@ public class CodeDrawingServiceImpl extends ServiceImpl<CodeDrawingMapper, CodeD |
|
|
|
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; |
|
|
|
} |
|
|
|
} |