package com.vci.ubcs.codeapply; import com.alibaba.cloud.commons.lang.StringUtils; import com.alibaba.fastjson.JSONObject; import com.vci.base.ui.swing.VCIOptionPane; import com.vci.base.ui.swing.components.VCIJComboBox; import com.vci.ubcs.code.dto.CodeOrderDTO; import com.vci.ubcs.code.dto.CodeOrderSecDTO; import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO; import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO; import com.vci.ubcs.codeapply.object.CodeClassify; import com.vci.ubcs.codeapply.object.R; import com.vci.ubcs.codeapply.utils.ConfigUtils; import com.vci.ubcs.codeapply.utils.HttpUtil; import com.vci.ubcs.starter.web.pagemodel.KeyValue; import org.apache.commons.collections4.CollectionUtils; import javax.swing.*; import javax.swing.text.JTextComponent; import javax.swing.tree.TreePath; import java.awt.event.ActionEvent; import java.util.*; public class CodeApplyPanelFor410ActionListener extends CommonActionListener { private CodeApplyPanelFor410 owner = null; private LinkedHashMap actionMaps = new LinkedHashMap(); boolean codeAlreadExist = false; private String url= ConfigUtils.getConfigValue("410.code.url","http://127.0.0.1:36014/codeApplySwingController"); public CodeApplyPanelFor410ActionListener(CodeApplyPanelFor410 owner){ this.owner = owner; this.initActionMap(); } @Override public void initActionMap(){ actionMaps.put("batchApply", new Runnable() { public void run() { //batchApply();//批量导入申请代码 }}); actionMaps.put("apply", new Runnable() { public void run() { apply();//码值申请 }}); actionMaps.put("btnSearch", new Runnable() { public void run() { search();//代码查询 }}); actionMaps.put("clear", new Runnable() { public void run() { clear();//清空属性 }}); } @Override public void actionPerformed(ActionEvent e) { String key = e.getActionCommand(); if(actionMaps.containsKey(key)){ actionMaps.get(key).run(); } } private void apply() { codeAlreadExist = false; if(null == this.owner.getTransmitTreeObject().getCurrentTreeNode()) { return; } CodeClassify codeClassify = (CodeClassify) this.owner.getTransmitTreeObject().getCurrentTreeNode().getObj(); if(codeClassify == null || "".equals(codeClassify.getOid())){ VCIOptionPane.showMessage(this.owner, "请选择编码项分类!"); return; } CodeClassifyTemplateVO codeClassifyTemplateVO = this.owner.getCurrentCodeClassifyTemplateVO(); if(codeClassifyTemplateVO!=null&&"".equals(codeClassifyTemplateVO.getOid())) { VCIOptionPane.showMessageDialog(this.owner, "代码项没有配置模板,不允许申请!"); return; } CodeRuleVO codeRuleVO= this.owner.getRightMainPanel().getCodeRuleVO(); /**选择的分类是否包含规则的校验**/ if(codeRuleVO==null||"".equals(codeRuleVO.getOid())) { VCIOptionPane.showMessage(this.owner, "分类:" + codeClassify.getName() + " 没有包含规则,无法申请!"); return; } //校验规则是否填写合格 if(!this.owner.getRightMainPanel().checkIsAllowed()) { return; } // 检查模板各属性的输入值是否满足要求 String[][] inputValues = this.owner.getRightMainPanel().checkInputValues(); //获取属性名称和值的集合 Map attrNameAndValMap = getAttrMap(inputValues); String[] fields = inputValues[0]; String[] values = inputValues[1]; String[] dataTypes = inputValues[2]; String[] outNames = inputValues[3]; Map dataMap=new HashMap<>(); for (int i=0;i keyValueList= this.owner.getRightMainPanel().getSectionValues(); if(CollectionUtils.isEmpty(keyValueList)){ VCIOptionPane.showMessage(this.owner, "分类:" + codeClassify.getName() + " 没有获取规则码段选择值信息,无法申请!"); return; } CodeOrderDTO codeOrderDTO=new CodeOrderDTO(); /**系统只加载代码项 如果libName不为空,直接获取对应的代码项**/ codeOrderDTO.setCodeClassifyOid(codeClassify.getOid()); codeOrderDTO.setTemplateOid(codeClassifyTemplateVO.getOid()); codeOrderDTO.setCodeRuleOid(codeRuleVO.getOid()); List secDTOList=new ArrayList<>(); keyValueList.stream().forEach(keyValue -> { CodeOrderSecDTO codeOrderSecDTO=new CodeOrderSecDTO(); codeOrderSecDTO.setSecOid(keyValue.getKey()); codeOrderSecDTO.setSecValue(keyValue.getValue()); secDTOList.add(codeOrderSecDTO); }); codeOrderDTO.setSecDTOList(secDTOList); codeOrderDTO.setData(dataMap); Object object = JSONObject.toJSON(codeOrderDTO); Map headerMap=new HashMap<>(); headerMap.put("content-type","application/json"); headerMap.put("Blade-Auth",this.owner.getTokenUserObject().getAccess_token()); R r= HttpUtil.sendPost(url+"/addSaveCode",object.toString(),headerMap); //R r= HttpUtil.sendPost(url+"/addSaveCode",object.toString(),headerMap); String code=""; if(r.isSuccess()){ code=r.getData().toString(); this.owner.setApplyCode(code); this.owner.getApplyTxt().requestFocusInWindow(); this.owner.getApplyTxt().selectAll(); this.owner.setAttrNameAndValMap(attrNameAndValMap); }else{ VCIOptionPane.showMessage(this.owner,r.getMsg()); } } private Map getAttrMap(String[][] inputValues) { Map attrNameAndValMap = new LinkedHashMap(); String[] fields = inputValues[0]; String[] values = inputValues[1]; String[] outNames = inputValues[3]; for(int k = 0;k < fields.length;k++) { attrNameAndValMap.put(fields[k], values[k]);//属性内部名称 attrNameAndValMap.put(outNames[k], values[k]);//属性外部名称 } return attrNameAndValMap; } /*** * 清空属性 */ private void clear(){ CodeApplyFor410MainPanel rightMainPanel2 = this.owner.getRightMainPanel(); LinkedHashMap attrInnerNameToCtrlMaps = rightMainPanel2.getAttrInnerNameToCtrlMaps(); if(attrInnerNameToCtrlMaps!=null&&attrInnerNameToCtrlMaps.size()>0){ attrInnerNameToCtrlMaps.forEach((key,component)->{ if(component instanceof JTextComponent){ if(((JTextComponent) component).isEnabled()) ((JTextComponent) component).setText(""); }else if(component instanceof VCIJComboBox){ if(((VCIJComboBox) component).isEnabled()) ((VCIJComboBox) component).setSelectedIndex(0); } }); } String applyCode = this.owner.getApplyCode(); if(StringUtils.isBlank(applyCode)) { this.owner.setApplyCode(""); } } /** * * 查询代码 */ private void search(){ if(null == this.owner.getRightMainPanel().getTransTreeObject().getCurrentTreeNode()) { return; } CodeClassify rmType = (CodeClassify) this.owner.getRightMainPanel().getTransTreeObject().getCurrentTreeNode().getObj(); if(rmType == null || "".equals(rmType.getId())){ VCIOptionPane.showMessage(this.owner, "请选择代码项分类!"); return; } CodeApplyFor410SearchDialog dialog = new CodeApplyFor410SearchDialog(this.owner); String str = dialog.getStr(); if (!str.equals("")) { owner.applyTxt.setText(str); } } }