From d2570148ec3884de3af721bd99c4b7acbbdee075 Mon Sep 17 00:00:00 2001 From: 田源 <lastanimals@163.com> Date: 星期二, 09 五月 2023 17:07:26 +0800 Subject: [PATCH] 前端代码提交 --- Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeFixedValueServiceImpl.java | 330 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 329 insertions(+), 1 deletions(-) diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeFixedValueServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeFixedValueServiceImpl.java index 1bf6076..5c7939a 100644 --- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeFixedValueServiceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeFixedValueServiceImpl.java @@ -1,19 +1,347 @@ package com.vci.ubcs.code.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.vci.ubcs.code.constant.MdmBtmTypeConstant; +import com.vci.ubcs.code.dto.CodeFixedValueDTO; +import com.vci.ubcs.code.entity.CodeClassifyProcessTemp; import com.vci.ubcs.code.entity.CodeFixedValue; import com.vci.ubcs.code.mapper.CodeFixedValueMapper; import com.vci.ubcs.code.service.ICodeFixedValueService; +import com.vci.ubcs.code.vo.pagemodel.CodeFixedValueVO; +import com.vci.ubcs.code.wrapper.CodeFixedValueWrapper; +import com.vci.ubcs.starter.exception.VciBaseException; +import com.vci.ubcs.starter.revision.service.RevisionModelUtil; +import com.vci.ubcs.starter.web.util.BeanUtilForVCI; +import com.vci.ubcs.starter.web.util.VciBaseUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; +import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.core.tool.api.R; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.vci.ubcs.code.constant.FrameWorkLangCodeConstant.*; /** * 鍥哄畾鐮佹鐨勭爜鍊兼湇鍔� - * @author weidy + * @author ludc * @date 2022-01-24 */ @Service public class CodeFixedValueServiceImpl extends ServiceImpl<CodeFixedValueMapper, CodeFixedValue> implements ICodeFixedValueService { + /** + * 鏁版嵁鎿嶄綔灞� + */ + @Resource + private CodeFixedValueMapper codeFixedValueMapper; + + /** + * 瀵硅薄鐨勬搷浣� + */ + @Resource + private RevisionModelUtil revisionModelUtil; + + /** + * 鏌ヨ鎵�鏈夌殑鍥哄畾鐮佹鐨勭爜鍊� + * @param codeFixedValueVO 鏌ヨ鏉′欢 + * @param page 鍒嗛〉鍜屾帓搴� + * @return 鎵ц缁撴灉 + * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父 + */ + @Override + public IPage<CodeFixedValueVO> gridCodeFixedValue(CodeFixedValueVO codeFixedValueVO,IPage<CodeFixedValueVO> page) throws VciBaseException{ + String secOid = codeFixedValueVO.getCodeFixedSecOid(); + if(StringUtils.isBlank(secOid)){ + return null; + } + List<CodeFixedValue> doList = codeFixedValueMapper.selectByPage(codeFixedValueVO,page); + return page.setRecords(CodeFixedValueWrapper.build().listVO(doList)); + } + + /** + * 澧炲姞鍥哄畾鐮佹鐨勭爜鍊� + * @param codeFixedValueDTO 鍥哄畾鐮佹鐨勭爜鍊兼暟鎹紶杈撳璞� + * @return 鎵ц缁撴灉 + * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父 + */ + @Override + public boolean addSave(CodeFixedValueDTO codeFixedValueDTO) throws VciBaseException{ + VciBaseUtil.alertNotNull(codeFixedValueDTO,"闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄"); + //灏咲TO杞崲涓篋O + CodeFixedValue codeFixedValueDO = new CodeFixedValue(); + BeanUtilForVCI.copyPropertiesIgnoreCase(codeFixedValueDTO,codeFixedValueDO); + //濉厖涓�浜涢粯璁ゅ�� + codeFixedValueDO.setOid(VciBaseUtil.getPk()); + codeFixedValueDO.setRevisionOid(VciBaseUtil.getPk()); + codeFixedValueDO.setNameOid(VciBaseUtil.getPk()); + codeFixedValueDO.setBtmname(MdmBtmTypeConstant.CODE_FIXED_VALUE); + codeFixedValueDO.setCreateTime(new Date()); + codeFixedValueDO.setCreator(AuthUtil.getUserId().toString()); + codeFixedValueDO.setLastModifier(AuthUtil.getUserId().toString()); + codeFixedValueDO.setLastModifyTime(new Date()); + codeFixedValueDO.setTs(new Date()); + Long count = this.codeFixedValueMapper.selectCount(Wrappers.<CodeFixedValue>query() + .lambda().eq(CodeFixedValue::getCodeFixedSecOid, codeFixedValueDO.getCodeFixedSecOid()) + )+1L; + codeFixedValueDO.setOrderNum(count.intValue()); + boolean resBoolean = this.codeFixedValueMapper.insert(codeFixedValueDO) > 0; + return resBoolean; + } + + /** + * 淇敼鍥哄畾鐮佹鐨勭爜鍊� + * @param codeFixedValueDTO 鍥哄畾鐮佹鐨勭爜鍊兼暟鎹紶杈撳璞� + * @return 鎵ц缁撴灉 + * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public boolean editSave(CodeFixedValueDTO codeFixedValueDTO) throws VciBaseException{ + VciBaseUtil.alertNotNull(codeFixedValueDTO,"鏁版嵁瀵硅薄",codeFixedValueDTO.getOid(),"鍥哄畾鐮佹鐨勭爜鍊间富閿�"); + //灏咲TO杞崲涓篋O + CodeFixedValue codeFixedValueDO = selectByOid(codeFixedValueDTO.getOid()); + revisionModelUtil.copyFromDTOIgnore(codeFixedValueDTO,codeFixedValueDO); + //濉厖涓�浜涢粯璁ゅ�� + codeFixedValueDO.setLastModifier(AuthUtil.getUserId().toString()); + codeFixedValueDO.setLastModifyTime(new Date()); + codeFixedValueDO.setTs(new Date()); + boolean resBoolean = codeFixedValueMapper.updateById(codeFixedValueDO) > 0; + return resBoolean; + } + + /** + * 鏍¢獙鏄惁鍙互鍒犻櫎锛屽鏋滃瓨鍦ㄤ笅绾э紝骞朵笖涓嬬骇鏈夋暟鎹紩鐢ㄥ垯涓嶈兘鍒犻櫎 + * @param codeFixedValueDTO 鏁版嵁浼犺緭瀵硅薄 + * @param codeFixedValueDO 鏁版嵁搴撲腑鐨勬暟鎹璞� + * @return success涓簍rue涓哄彲浠ュ垹闄わ紝false琛ㄧず鏈夋暟鎹紩鐢紝obj涓簍rue琛ㄧず鏈変笅绾� + */ + private R checkIsCanDeleteForDO(CodeFixedValueDTO codeFixedValueDTO, CodeFixedValue codeFixedValueDO) { + if (checkTs(codeFixedValueDTO)) { + return R.fail(TS_NOT_PROCESS); + } + if(!checkIsLinked(codeFixedValueDO.getOid())) { + return R.status(true); + }else{ + return R.fail(DATA_LINKED_NOT_DELETE); + } + } + + /** + * 妫�鏌s + * @param tempDO + * @return + */ + private boolean checkTs(CodeFixedValueDTO tempDO){ + LambdaQueryWrapper<CodeFixedValue> wrapper = Wrappers.<CodeFixedValue>query() + .lambda().eq(CodeFixedValue::getOid,tempDO.getOid()).select(CodeFixedValue::getTs); + long dbTs = codeFixedValueMapper.selectById(wrapper).getTs().getTime(); + long currentTs = tempDO.getTs().getTime(); + if(dbTs == currentTs){ + return true; + } + return false; + } + + /** + * 鏍¢獙鏄惁琚紩鐢� + * @param oid 涓婚敭 + * @throws VciBaseException 琚紩鐢ㄧ殑鏃跺�欎細鎶涘嚭寮傚父 + */ + private boolean checkIsLinked(String oid) throws VciBaseException{ + //TODO 娣诲姞闇�瑕佹牎楠屽紩鐢ㄧ殑鍦版柟 + return false; + } + + /** + * 鍒犻櫎鍥哄畾鐮佹鐨勭爜鍊� + * @param codeFixedValueDTO 鍥哄畾鐮佹鐨勭爜鍊兼暟鎹紶杈撳璞★紝oid鍜宼s闇�瑕佷紶杈� + * @return 鍒犻櫎缁撴灉鍙嶉锛氾細success锛氭垚鍔燂紝fail锛氬け璐� + * @throws VciBaseException 鍙傛暟涓虹┖锛岃寮曠敤鏃舵姏鍑哄紓甯� + */ + @Override + @Transactional(rollbackFor = Exception.class) + public R deleteCodeFixedValue(CodeFixedValueDTO codeFixedValueDTO) throws VciBaseException { + VciBaseUtil.alertNotNull(codeFixedValueDTO,"鍥哄畾鐮佹鐨勭爜鍊兼暟鎹璞�",codeFixedValueDTO.getOid(),"鍥哄畾鐮佹鐨勭爜鍊肩殑涓婚敭"); + CodeFixedValue codeFixedValueDO = selectByOid(codeFixedValueDTO.getOid()); + R baseResult = checkIsCanDeleteForDO(codeFixedValueDTO,codeFixedValueDO); + if(!baseResult.isSuccess()) { + return baseResult; + } + //鎵ц鍒犻櫎鎿嶄綔 + boolean resBoolean = codeFixedValueMapper.deleteById(codeFixedValueDO.getOid())>0; + return R.status(resBoolean); + } + + /** + * 涓婚敭鑾峰彇鍥哄畾鐮佹鐨勭爜鍊� + * @param oid 涓婚敭 + * @return 鍥哄畾鐮佹鐨勭爜鍊兼樉绀哄璞� + * @throws VciBaseException 鍙傛暟涓虹┖锛屾暟鎹笉瀛樺湪鏃朵細鎶涘嚭寮傚父 + */ + @Override + public CodeFixedValueVO getObjectByOid(String oid) throws VciBaseException{ + return CodeFixedValueWrapper.build().entityVO(selectByOid(oid)); + } + + /** + * 涓婚敭鏌ヨ鏁版嵁瀵硅薄 + * @param oid 涓婚敭 + * @return 鏁版嵁瀵硅薄 + * @throws VciBaseException 鍙傛暟涓虹┖锛屽苟涓旀暟鎹笉瀛樺湪鐨勬椂鍊欎細鎶涘嚭寮傚父 + */ + private CodeFixedValue selectByOid(String oid) throws VciBaseException{ + VciBaseUtil.alertNotNull(oid,"涓婚敭"); + CodeFixedValue codeFixedValueDO = codeFixedValueMapper.selectById(oid.trim()); + if(codeFixedValueDO == null || StringUtils.isBlank(codeFixedValueDO.getOid())){ + throw new VciBaseException(DATA_OID_NOT_EXIST); + } + return codeFixedValueDO; + } + + /** + * 涓婚敭鎵归噺鑾峰彇鍥哄畾鐮佹鐨勭爜鍊� + * @param oidCollections 涓婚敭闆嗗悎锛屼絾鏄彈鎬ц兘褰卞搷锛屽缓璁竴娆℃煡璇笉瓒呰繃10000涓� + * @return 鍥哄畾鐮佹鐨勭爜鍊兼樉绀哄璞� + * @throws VciBaseException 鏌ヨ鍑虹幇寮傚父鏃朵細鎶涘嚭 + */ + @Override + public Collection<CodeFixedValueVO> listCodeFixedValueByOids(Collection<String> oidCollections) throws VciBaseException { + VciBaseUtil.alertNotNull(oidCollections,"鏁版嵁瀵硅薄涓婚敭闆嗗悎"); + List<CodeFixedValue> codeFixedValueDOList = listCodeFixedValueDOByOidCollections(oidCollections); + return CodeFixedValueWrapper.build().listVO(codeFixedValueDOList); + } + + /** + * 浣跨敤涓婚敭闆嗗悎鏌ヨ鏁版嵁瀵硅薄 + * @param oidCollections 涓婚敭鐨勯泦鍚� + * @return 鏁版嵁瀵硅薄鍒楄〃 + */ + private List<CodeFixedValue> listCodeFixedValueDOByOidCollections(Collection<String> oidCollections){ + List<CodeFixedValue> codeFixedValueDOList = new ArrayList<>(); + if(!CollectionUtils.isEmpty(oidCollections)){ + Collection<Collection<String>> oidCollectionsList = VciBaseUtil.switchCollectionForOracleIn(oidCollections); + for(Collection<String> oids: oidCollectionsList){ + List<CodeFixedValue> tempDOList = codeFixedValueMapper.selectBatchIds(oids); + if(!CollectionUtils.isEmpty(tempDOList)){ + codeFixedValueDOList.addAll(tempDOList); + } + } + } + return codeFixedValueDOList; + } + + /** + * 鍙傜収鍥哄畾鐮佹鐨勭爜鍊煎垪琛� + * @param codeFixedValueVO 鏌ヨ鏉′欢 + * @param page 鍒嗛〉鍜屾帓搴� + * @return 鍥哄畾鐮佹鐨勭爜鍊兼樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹� + * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父 + */ + @Override + public IPage<CodeFixedValueVO> refDataGridCodeFixedValue(CodeFixedValueVO codeFixedValueVO,IPage<CodeFixedValueVO> page) throws VciBaseException{ + return gridCodeFixedValue(codeFixedValueVO,page); + } + + /** + * 浣跨敤鐮佹鐨勪富閿幏鍙栧浐瀹氱爜鐨勭爜鍊� + * + * @param secOidCollection 鐮佹鐨勪富閿� + * @return 鐮佸�兼樉绀哄璞� + * @throws VciBaseException 鏌ヨ鐨勬椂鍊欏嚭鐜颁簡閿欒浼氭姏鍑哄紓甯� + */ + @Override + public Map<String, List<CodeFixedValueVO>> listCodeFixedValueBySecOids(Collection<String> secOidCollection) throws VciBaseException { + if(CollectionUtils.isEmpty(secOidCollection)){ + return new HashMap<>(); + } + List<CodeFixedValueVO> voList = new ArrayList<>(); + VciBaseUtil.switchCollectionForOracleIn(secOidCollection).forEach(secOids->{ + Query query = new Query(); + query.setDescs("orderNum"); + query.setSize(-1); + query.setCurrent(1); + List<CodeFixedValue> valueDOS = this.codeFixedValueMapper.selectByPageByCodeFixedSecOid(secOids,Condition.getPage(query)); + voList.addAll(CodeFixedValueWrapper.build().listVO(Optional.ofNullable(valueDOS).orElseGet(() -> new ArrayList<>()))); + }); + return voList.stream().collect(Collectors.groupingBy(CodeFixedValueVO::getCodeFixedSecOid)); + } + + /** + * 鎵归噺娣诲姞鍥哄畾鐮佹鐨勭爜鍊硷紝濡傛灉淇濆瓨鐨勯泦鍚堜腑涓嶅瓨鍦ㄥ凡鍦ㄦ暟鎹簱涓殑鐮佸�煎垯鍒犻櫎銆備富瑕佹槸淇濆瓨鐮佸�肩殑搴忓彿 + * @param dtoList 鍥哄畾鐮佹鐨勭爜鍊煎垪琛� + * @param codefixedsecoid 鍥哄畾鐮佹鐨勪富閿� + * @return 鎵ц缁撴灉 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public R<CodeFixedValueVO> batchSave4Order(List<CodeFixedValueDTO> dtoList, String codefixedsecoid) { + VciBaseUtil.alertNotNull(codefixedsecoid,"鍥哄畾鐮佹涓婚敭"); + List<CodeFixedValue> doList = codeFixedValueMapper.selectList(Wrappers.<CodeFixedValue>query() + .lambda().eq(CodeFixedValue::getCodeFixedSecOid,codefixedsecoid) + ); + List<CodeFixedValue> updateList = new ArrayList<>(); + List<String> deleteOidList = new ArrayList<>(); + dtoList.forEach(dto -> { + if (StringUtils.isNotBlank(dto.getOid())){ + List<CodeFixedValue> valueDOList = doList.stream().filter(value -> { + return value.getOid().equals(dto.getOid()); + }).collect(Collectors.toList()); + valueDOList.forEach(valueDO -> { + valueDO.setId(dto.getId()); + valueDO.setName(dto.getName()); + valueDO.setOrderNum(dto.getOrderNum()); + updateList.add(valueDO); + }); + }else{ + throw new VciBaseException("鍥哄畾鐮佹涓婚敭涓嶈兘涓虹┖"); + } + }); + if (doList.size() != dtoList.size()){ + List<String> oidList = dtoList.stream().map(CodeFixedValueDTO::getOid).collect(Collectors.toList()); + List<CodeFixedValue> deleteList = new ArrayList<>(); + for (CodeFixedValue value : doList) { + if (!oidList.contains(value.getOid())){ + deleteList.add(value); + } + } + deleteOidList = deleteList.stream().map(CodeFixedValue::getOid).collect(Collectors.toList()); + } + boolean resBooleanUpdate = this.updateBatchById(updateList); + if (!CollectionUtils.isEmpty(deleteOidList)) { + codeFixedValueMapper.deleteBatchIds(deleteOidList); + } + return R.status(resBooleanUpdate); + } + + /** + * 鏍规嵁鐮佹涓婚敭鍒犻櫎鍏跺瓨鍦ㄧ殑鐮佸�煎璞� + * @param codefixedsecoid 鍥哄畾鐮佹鐨勪富閿� + * @return 鎵ц缁撴灉 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public boolean batchDeleteBySecOid(String codefixedsecoid) { + VciBaseUtil.alertNotNull(codefixedsecoid,"鍥哄畾鐮佹涓婚敭"); + List<CodeFixedValue> doList = codeFixedValueMapper.selectList(Wrappers.<CodeFixedValue>query() + .lambda().eq(CodeFixedValue::getCodeFixedSecOid,codefixedsecoid) + ); + boolean resBoolean = codeFixedValueMapper.deleteBatchIds(doList.stream().map(CodeFixedValue::getOid).collect(Collectors.toList())) > 0; + return resBoolean; + } } -- Gitblit v1.9.3