1、新增菜单功能-工艺路线齐套性检查

2、新增菜单功能-武汉工厂-工艺指派与投料
pull/6/head
李冬阳 1 year ago
parent 25a0a7e3c0
commit 1e2e6e1e7f

@ -34,6 +34,8 @@
<command name="成本单管理" id="com.connor.plm.CostListManagement"/> <command name="成本单管理" id="com.connor.plm.CostListManagement"/>
<command name="标准工序传递MOM" id="com.connor.plm.sendGXToMOM"/> <command name="标准工序传递MOM" id="com.connor.plm.sendGXToMOM"/>
<command name="工艺路线齐套性检查" id="com.connor.plm.process.ProcessCheckCommand"/>
<command name="工艺指派与投料" id="com.connor.plm.process.AssProcessAutoFeedingCommand"/>
</extension> </extension>
<extension <extension
point="org.eclipse.ui.handlers"> point="org.eclipse.ui.handlers">
@ -63,6 +65,9 @@
<handler commandId="com.connor.plm.CostListManagement" class="com.connor.plm.CostListManagement.CostListManagementHandler"/> <handler commandId="com.connor.plm.CostListManagement" class="com.connor.plm.CostListManagement.CostListManagementHandler"/>
<handler commandId="com.connor.plm.sendGXToMOM" class="com.connor.plm.SendGXToMOM.sendGXToMOMHandler"/> <handler commandId="com.connor.plm.sendGXToMOM" class="com.connor.plm.SendGXToMOM.sendGXToMOMHandler"/>
<handler commandId="com.connor.plm.GZXQHandler" class="com.connor.plm.GZXQ.GZXQHandler"/> <handler commandId="com.connor.plm.GZXQHandler" class="com.connor.plm.GZXQ.GZXQHandler"/>
<handler commandId="com.connor.plm.process.ProcessCheckCommand" class="com.connor.chint.yunpi.KHandler"/>
<handler commandId="com.connor.plm.process.AssProcessAutoFeedingCommand" class="com.connor.chint.yunpi.KHandler"/>
</extension> </extension>
<extension point="org.eclipse.ui.menus"> <extension point="org.eclipse.ui.menus">
@ -354,6 +359,41 @@
</visibleWhen> </visibleWhen>
</command> </command>
<command commandId = "com.connor.plm.process.AssProcessAutoFeedingCommand" id = "com.connor.plm.process.AssProcessAutoFeedingCommand">
<visibleWhen>
<and>
<with
variable="rac_command_suppression">
<not>
<iterate
operator="or">
<equals
value="com.connor.plm.process.AssProcessAutoFeedingCommand">
</equals>
</iterate>
</not>
</with>
</and>
</visibleWhen>
</command>
<command commandId = "com.connor.plm.process.ProcessCheckCommand" id = "com.connor.plm.process.ProcessCheckCommand">
<visibleWhen>
<and>
<with
variable="rac_command_suppression">
<not>
<iterate
operator="or">
<equals
value="com.connor.plm.process.ProcessCheckCommand">
</equals>
</iterate>
</not>
</with>
</and>
</visibleWhen>
</command>
<command commandId = "com.chint.plm.updateWorkTime.UpdateWorkCommand" id = "com.chint.plm.updateWorkTime.UpdateWorkCommand"> <command commandId = "com.chint.plm.updateWorkTime.UpdateWorkCommand" id = "com.chint.plm.updateWorkTime.UpdateWorkCommand">
<visibleWhen> <visibleWhen>

@ -2,4 +2,12 @@ package com.connor.chint.sap2.util;
public class TCUtil { public class TCUtil {
public static boolean contains(String[] array, String str) {
for(String s : array) {
// System.out.println("contains:"+s+"="+str);
if(s.equals(str))
return true;
}
return false;
}
} }

@ -0,0 +1,221 @@
package com.connor.plm.process;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.swing.JOptionPane;
import com.connor.chint.sap2.util.MyProgressBarCompent;
import com.connor.chint.sap2.util.SAPMessageUtilFram;
import com.connor.chint.sap2.util.SAPUtil;
import com.connor.chint.sap2.util.SqlUtil;
import com.connor.chint.yunpi.KCommand;
import com.teamcenter.rac.aif.AbstractAIFApplication;
import com.teamcenter.rac.aif.kernel.AIFComponentContext;
import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent;
import com.teamcenter.rac.aifrcp.AIFUtility;
import com.teamcenter.rac.kernel.TCComponent;
import com.teamcenter.rac.kernel.TCComponentBOMLine;
import com.teamcenter.rac.kernel.TCComponentItem;
import com.teamcenter.rac.kernel.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCPreferenceService;
import com.teamcenter.rac.kernel.TCSession;
import com.teamcenter.rac.kernel.TCUserService;
import com.teamcenter.rac.util.MessageBox;
/**
* : -线+
* :2024-04-18
* @author
*/
@SuppressWarnings("deprecation")
public class AssProcessAutoFeedingCommand extends KCommand {
public AssProcessAutoFeedingCommand(AbstractAIFApplication app, String commandId, String actionInfo) {
super(app, commandId, actionInfo);
try {
InterfaceAIFComponent targetComponent = app.getTargetComponent();
TCSession session = (TCSession)app.getSession();
String groupID = SAPUtil.getGroupID(session);
if(!groupID.equals("M060")) {
MessageBox.post(AIFUtility.getActiveDesktop(), PlmLocale.getString("info1"), "", MessageBox.ERROR);
return;
}
TCComponentItemRevision rev;
if(targetComponent instanceof TCComponentBOMLine) {
rev = ((TCComponentBOMLine)targetComponent).getItemRevision();
}else if(targetComponent instanceof TCComponentItemRevision) {
rev = (TCComponentItemRevision) targetComponent;
}else {
MessageBox.post(AIFUtility.getActiveDesktop(), PlmLocale.getString("info2"), "", MessageBox.ERROR);
return;
}
if(!rev.getType().equals("Part Revision")) {
MessageBox.post(AIFUtility.getActiveDesktop(), PlmLocale.getString("info3"), "", MessageBox.ERROR);
return;
}
new Thread() {
@Override
public void run() {
MyProgressBarCompent comp = null;
try {
// TCComponentItemRevision pRevision = getPRevision(rev);
TCComponentItemRevision topZzItem = getTopZzItem(rev);
String name = rev.getProperty("object_name");
String property = topZzItem.getProperty("zt2_ifpbom");
if(!property.equals("P") && topZzItem.getStringProperty("object_desc").contains("1ZDB300000P")) {
MessageBox.post(AIFUtility.getActiveDesktop(), PlmLocale.getString("info3"), "", MessageBox.ERROR);
return;
}
boolean isback = false;
TCPreferenceService service = session.getPreferenceService();
String[] rules = service.getStringValues("CHINT_PROCESS_RULE");
for(String rule : rules) {
String[] split = rule.split(":");
if(!split[0].equals(groupID))
continue;
String[] backs = split[1].split(";");
for(String back : backs) {
System.out.println(name + "==" + back + ">>" + name.contains(back));
if(name.contains(back)) {
isback = true;
break;
}
}
if(isback)
break;
}
TCComponentItemRevision desginRev = (TCComponentItemRevision) topZzItem.getRelatedComponent("TC_Is_Represented_By");
System.out.println("topZzItem==" + topZzItem.toString() + ">>" + isback);
if(isback) {
AIFComponentContext[] folders = topZzItem.getItem()
.whereReferencedByTypeRelation(new String[] { "ZT2_ProjectFolder" }, null);//new String[] { "contents" }
if(folders.length == 0) {
MessageBox.post(AIFUtility.getActiveDesktop(), PlmLocale.getString("info4"), "INFO", MessageBox.WARNING);
return;
}
AIFComponentContext[] ccps = folders[0].getComponent().getChildren();
System.out.println(folders[0].getComponent() + "==>" + ccps.length);
for(AIFComponentContext aifcc : ccps) {
TCComponentItem item = (TCComponentItem) aifcc.getComponent();
desginRev = (TCComponentItemRevision) item.getLatestItemRevision().getRelatedComponent("TC_Is_Represented_By");
System.out.println(item + "==>" + desginRev);
if(desginRev != null)
break;
}
}
if(desginRev == null) {
MessageBox.post(AIFUtility.getActiveDesktop(), PlmLocale.getString("info5"), "INFO", MessageBox.WARNING);
return;
}
Map<String, String> classificationAttributes = desginRev.getItem().getClassificationAttributes();
System.out.println(classificationAttributes.toString());
for(String key : classificationAttributes.keySet()) {
if(key.equals(PlmLocale.getString("cpxh"))) {
String cphx = classificationAttributes.get(key);
String sql = "SELECT \"ProductZu\" FROM \"CHINT_WORKHOUR_WhProductXH\" where \"ProductXH\" = '"+cphx+"'";
String[] prefs = service.getStringValues("database_tc");
SqlUtil.getTCDataConnection(prefs);
ResultSet read2 = SqlUtil.read(sql);
if(!read2.next()) {
String searchSql = "SELECT distinct \"ProductZu\" FROM \"CHINT_WORKHOUR_WhProductXH\" where \"COMPANYCODE\" = 'M060'";
ResultSet read = SqlUtil.read(searchSql);
List<String> productZuList = new ArrayList<String>();
while(read.next()){
productZuList.add(read.getString(1));
}
System.out.println(productZuList.toString());
String[] array = productZuList.toArray(new String[] {});
Object showInputDialog = JOptionPane.showInputDialog(null, PlmLocale.getString("info6"), "INFO",
JOptionPane.QUESTION_MESSAGE, null, array,array[0]);
if(showInputDialog == null) {
return;
}else {
System.out.println("showInputDialog:" + showInputDialog.toString());
String insertSql = "INSERT INTO \"CHINT_WORKHOUR_WhProductXH\" "
+ "(\"ProductXH\",\"ProductZu\",\"COMPANYCODE\") "
+ "VALUES (?,?,?)";
SqlUtil.write(insertSql, new Object[] { cphx, showInputDialog.toString(), "M060" });
}
}
break;
}
}
comp = new MyProgressBarCompent("", PlmLocale.getString("info7"));
TCUserService userService = (TCUserService) session.getUserService();
Object call = userService.call("CloneTempProcess", new Object[] { rev.getUid() });
String assignResult = call.toString();
System.out.println(assignResult);
if(!assignResult.equals("succ")) {
comp.setVisible(false);
new SAPMessageUtilFram("", PlmLocale.getString("info8") + assignResult);
return;
}
comp.setShowLabel(PlmLocale.getString("info9"));
call = userService.call("AutoFeeding", new Object[] { rev.getUid() });
comp.setVisible(false);
String feedResult = call.toString();
System.out.println(feedResult);
boolean succ = true;
if(!feedResult.equals("succ")) {
new SAPMessageUtilFram("", PlmLocale.getString("info10") + feedResult);
}else if(succ) {
MessageBox.post(PlmLocale.getString("info11"), "INFO", MessageBox.INFORMATION);
}
} catch (Exception e1) {
e1.printStackTrace();
MessageBox.post(AIFUtility.getActiveDesktop(), PlmLocale.getString("err") + e1.toString(), "", MessageBox.ERROR);
}finally {
SqlUtil.freeAll();
if(comp != null) {
comp.dispose();//.setVisible(false);
}
}
}
}.start();
}catch(Exception e) {
e.printStackTrace();
MessageBox.post(AIFUtility.getActiveDesktop(), PlmLocale.getString("err") + e.toString(), "", MessageBox.ERROR);
}
}
/**
* BOM
* @param rev
* @return BOM
*/
private TCComponentItemRevision getTopZzItem(TCComponentItemRevision rev) throws Exception {
TCComponent[] whereUsed = rev.whereUsed((short)0);
if(whereUsed.length==0) {
return rev;
}else {
List<TCComponentItemRevision> revPs = new ArrayList<TCComponentItemRevision>();
for(int i = 0; i < whereUsed.length; i++) {
TCComponentItemRevision revP = (TCComponentItemRevision)whereUsed[i];
if(revP.getType().contains("Part")) {
revPs.add(revP);
}
}
for(TCComponentItemRevision revP : revPs) {
if(revPs.size()>1) {
// TCComponentItemRevision revP = (TCComponentItemRevision)whereUsed[i];
String property = revP.getProperty("zt2_ifpbom");
if(property == null || !property.equals("P")) {
continue;
}
}
TCComponentItemRevision item = getTopZzItem(revP);
if(item != null) {
return item;
}
}
}
return null;
}
}

@ -0,0 +1,29 @@
package com.connor.plm.process;
import com.teamcenter.rac.util.Registry;
/**
* :
* :2019-02-26
* @author
*
*
* 2019-01-24 XXXX
*/
public class PlmLocale {
public static final Registry reg = Registry.getRegistry(PlmLocale.class);
public static String getString(String title) {
if (isEmpty(title)) {
return "";
} else {
String res = reg.getString(title);
return isEmpty(res) ? title : res;
}
}
private static boolean isEmpty(String title) {
return title == null || "".equals(title.trim());
}
}

@ -0,0 +1,25 @@
package com.connor.plm.process;
import com.connor.chint.yunpi.KCommand;
import com.teamcenter.rac.aif.AbstractAIFApplication;
import com.teamcenter.rac.aifrcp.AIFUtility;
import com.teamcenter.rac.util.MessageBox;
/**
* : 线线线线
* :2024-04-18
* @author
*/
public class ProcessCheckCommand extends KCommand {
public ProcessCheckCommand(AbstractAIFApplication app, String commandId, String actionInfo) {
super(app, commandId, actionInfo);
try {
new ProcessCheckDialog(app);
}catch(Exception e) {
e.printStackTrace();
MessageBox.post(AIFUtility.getActiveDesktop(), PlmLocale.getString("err") + e.toString(), "", MessageBox.ERROR);
}
}
}

@ -0,0 +1,182 @@
package com.connor.plm.process;
import java.awt.Dimension;
import java.util.HashMap;
import java.util.HashSet;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import com.connor.chint.sap2.util.BomToSapUtil;
import com.connor.chint.sap2.util.TCUtil;
import com.teamcenter.rac.aif.AbstractAIFApplication;
import com.teamcenter.rac.aif.AbstractAIFDialog;
import com.teamcenter.rac.aif.kernel.AIFComponentContext;
import com.teamcenter.rac.aif.kernel.InterfaceAIFComponent;
import com.teamcenter.rac.aifrcp.AIFUtility;
import com.teamcenter.rac.kernel.TCComponentBOMLine;
import com.teamcenter.rac.kernel.TCComponentBOMWindow;
import com.teamcenter.rac.kernel.TCComponentBOMWindowType;
import com.teamcenter.rac.kernel.TCComponentItem;
import com.teamcenter.rac.kernel.TCComponentItemRevision;
import com.teamcenter.rac.kernel.TCSession;
import com.teamcenter.rac.util.MessageBox;
import com.teamcenter.services.rac.cad._2007_01.StructureManagement.ExpandPSData;
/**
* : 线线线线
* :2024-04-18
* @author
*/
public class ProcessCheckDialog extends AbstractAIFDialog {
/**
*
*/
private static final long serialVersionUID = 1L;
private TCSession session;
private JTable table;
private DefaultTableModel model;
private String[] names;
private HashSet<String> bomSet;
public ProcessCheckDialog(AbstractAIFApplication app) throws Exception {
super(AIFUtility.getActiveDesktop());
TCComponentItem design = checkData(app);
setTitle(PlmLocale.getString("title"));
// String[] tableHeader = new String[] { "序号", "物料编码", "物料名称", "是否关联工艺路线" };
String[] tableHeader = PlmLocale.getString("cols").split(";");
model = new DefaultTableModel(tableHeader, 0);
table = new JTable() {
private static final long serialVersionUID = 1L;
@Override
public boolean isCellEditable(int row, int col) {
return false;
}
};
table.setFillsViewportHeight(true);
table.setEnabled(true);
// impTable.setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
table.setModel(model);
table.getColumnModel().getColumn(0).setPreferredWidth(50);
for (int i = 1; i < table.getColumnCount(); i++) {
table.getColumnModel().getColumn(i).setPreferredWidth(150);
}
table.getTableHeader().setReorderingAllowed(false);
loadData(design);
setSize(new Dimension(700, 700));
Dimension screen = getToolkit().getScreenSize();
setLocation((screen.width - getSize().width) / 2, (screen.height - getSize().height) / 2);
// this.setAlwaysOnTop(true);
setVisible(true);
}
/**
*
* @param app AbstractAIFApplication
* @return
*/
private TCComponentItem checkData(AbstractAIFApplication app) throws Exception {
session = (TCSession) app.getSession();
String option = session.getPreferenceService().getStringValue("CHINT_Check_Process");
if(option == null || option.isEmpty()) {
throw new Exception("CHINT_Check_Process" + PlmLocale.getString("preferr"));
}
names = option.split(";");
InterfaceAIFComponent target = app.getTargetComponent();
if(!target.getType().equals("ZT2_ProjectItem")) {
throw new Exception(PlmLocale.getString("msg1"));
}
TCComponentItem design = null;
for(AIFComponentContext c : target.getChildren()) {
InterfaceAIFComponent projectChild = c.getComponent();
if(!projectChild.getProperty("object_name").equals(PlmLocale.getString("xmzx")))//项目执行文件夹
continue;
for(AIFComponentContext c2 : projectChild.getChildren()) {
InterfaceAIFComponent xmzxChild = c2.getComponent();
if(!xmzxChild.getProperty("object_name").equals(PlmLocale.getString("zztz")))//13-总装图纸文件夹
continue;
for(AIFComponentContext c3 : xmzxChild.getChildren()) {
InterfaceAIFComponent zztzChild = c3.getComponent();
if(!zztzChild.getType().equals("ZT2_Design3D"))
continue;
design = (TCComponentItem) zztzChild;
break;
}
break;
}
break;
}
if(design == null) {
throw new Exception(PlmLocale.getString("msg2"));
}
return design;
}
/**
* P
* @param design
*/
private void loadData(TCComponentItem design) {
try {
bomSet = new HashSet<>();
TCComponentItemRevision drev = design.getLatestItemRevision();
AIFComponentContext[] parts = drev.getChildren("representation_for")[0].getComponent().getChildren();
TCComponentBOMWindowType bomWinType = (TCComponentBOMWindowType) session.getTypeComponent("BOMWindow");
TCComponentBOMWindow win = bomWinType.create(null);
for(AIFComponentContext c : parts) {
TCComponentItemRevision part = (TCComponentItemRevision) c.getComponent();
if(!part.getProperty("zt2_ifpbom").equals("P"))
continue;
part = part.getItem().getLatestItemRevision();
String cuid = part.getUid();
if(bomSet.contains(cuid))
continue;
bomSet.add(cuid);
TCComponentBOMLine topLine = win.setWindowTopLine(part.getItem(), part, null, null);
HashMap<String, ExpandPSData[]> bomLineTree = BomToSapUtil.getBomLineTreeNodeSOA(topLine);
recycleBOM(bomLineTree, topLine.getUid());
}
win.close();
} catch(Exception e) {
e.printStackTrace();
MessageBox.post(this, PlmLocale.getString("err") + e.toString(), "", MessageBox.ERROR);
}
}
/**
* PBOM
* @param bomLineTree PBOM
* @param puid BOMuid
*/
private void recycleBOM(HashMap<String, ExpandPSData[]> bomLineTree, String puid) throws Exception {
for(ExpandPSData data : bomLineTree.get(puid)) {
TCComponentItemRevision rev = data.itemRevOfBOMLine;
String cuid = rev.getUid();
if(bomSet.contains(cuid))
continue;
bomSet.add(cuid);
TCComponentBOMLine line = data.bomLine;
//只获取其中包含首选项定义的物料名称的物料版本(精确匹配)
if(TCUtil.contains(names, line.getProperty("bl_item_object_name")))
continue;
AIFComponentContext[] meops = rev.whereReferencedByTypeRelation(new String[] { "MEProcessRevision" },
new String[] { "IMAN_METarget" });
Object[] value = new Object[4];
value[0] = model.getRowCount() + 1;//序号
value[1] = rev.getProperty("zt2_MaterialNo");//物料编码
value[2] = rev.getProperty("object_name");//物料名称
if(meops == null || meops.length == 0)//是否关联工艺路线
value[3] = PlmLocale.getString("no");
else
value[3] = PlmLocale.getString("yes");
model.addRow(value);
recycleBOM(bomLineTree, line.getUid());
}
}
}

@ -0,0 +1,24 @@
preferr=\u9996\u9009\u9879\u914D\u7F6E\u4E0D\u6B63\u786E
err=\u9519\u8BEF\uFF1A
#ProcessCheckDialog
title=\u5DE5\u827A\u8DEF\u7EBF\u9F50\u5957\u6027\u68C0\u67E5
cols=\u5E8F\u53F7;\u7269\u6599\u7F16\u7801;\u7269\u6599\u540D\u79F0;\u662F\u5426\u5173\u8054\u5DE5\u827A\u8DEF\u7EBF
xmzx=\u9879\u76EE\u6267\u884C
zztz=13-\u603B\u88C5\u56FE\u7EB8
msg1=\u8BF7\u9009\u62E9\u9879\u76EE\u5BF9\u8C61
msg2=\u672A\u627E\u5230\u603B\u88C5\u56FE\u7EB8
yes=\u662F
no=\u5426
#AssProcessAutoFeedingCommand
cpxh=\u4EA7\u54C1\u578B\u53F7
info1=\u8BF7\u767B\u5F55\u6B63\u786E\u7EC4
info2=\u8BF7\u9009\u62E9BOM\u884C\u6216\u8005\u7248\u672C\u5BF9\u8C61
info3=\u8BF7\u9009\u62E9PBOM\u5BF9\u8C61
info4=\u672A\u627E\u5230\u4EA7\u6210\u54C1\u6587\u4EF6\u5939\uFF0C\u8BF7\u68C0\u67E5
info5=\u5B58\u5728\u9876\u5C42P\u7269\u6599\u6CA1\u6709\u5173\u8054\u56FE\u7EB8\uFF0C\u8BF7\u68C0\u67E5
info6=\u5F53\u524D\u4EA7\u54C1\u578B\u53F7\u672A\u7EF4\u62A4\uFF0C\u8BF7\u9009\u62E9\u5BF9\u5E94\u4EA7\u54C1\u65CF
info7=\u6B63\u5728\u8FDB\u884C\u4E00\u952E\u6307\u6D3E\u5DE5\u827A\u8DEF\u7EBF......
info8=\u6307\u6D3E\u5DE5\u827A\u8DEF\u7EBF\u5B58\u5728\u5F02\u5E38\uFF0C\u8BF7\u68C0\u67E5\uFF1A\n
info9=\u6B63\u5728\u8FDB\u884C\u81EA\u52A8\u6295\u6599......
info10=\u81EA\u52A8\u6295\u6599\u5B58\u5728\u5F02\u5E38\uFF0C\u8BF7\u68C0\u67E5\uFF1A\n
info11=\u6307\u6D3E\u5DE5\u827A\u8DEF\u7EBF\u4E0E\u81EA\u52A8\u6295\u6599\u5B8C\u6210

@ -0,0 +1,24 @@
preferr=\u9996\u9009\u9879\u914D\u7F6E\u4E0D\u6B63\u786E
#ProcessCheckDialog
err=\u9519\u8BEF\uFF1A
title=\u5DE5\u827A\u8DEF\u7EBF\u9F50\u5957\u6027\u68C0\u67E5
cols=\u5E8F\u53F7;\u7269\u6599\u7F16\u7801;\u7269\u6599\u540D\u79F0;\u662F\u5426\u5173\u8054\u5DE5\u827A\u8DEF\u7EBF
xmzx=\u9879\u76EE\u6267\u884C
zztz=13-\u603B\u88C5\u56FE\u7EB8
msg1=\u8BF7\u9009\u62E9\u9879\u76EE\u5BF9\u8C61
msg2=\u672A\u627E\u5230\u603B\u88C5\u56FE\u7EB8
yes=\u662F
no=\u5426
#AssProcessAutoFeedingCommand
cpxh=\u4EA7\u54C1\u578B\u53F7
info1=\u8BF7\u767B\u5F55\u6B63\u786E\u7EC4
info2=\u8BF7\u9009\u62E9BOM\u884C\u6216\u8005\u7248\u672C\u5BF9\u8C61
info3=\u8BF7\u9009\u62E9PBOM\u5BF9\u8C61
info4=\u672A\u627E\u5230\u4EA7\u6210\u54C1\u6587\u4EF6\u5939\uFF0C\u8BF7\u68C0\u67E5
info5=\u5B58\u5728\u9876\u5C42P\u7269\u6599\u6CA1\u6709\u5173\u8054\u56FE\u7EB8\uFF0C\u8BF7\u68C0\u67E5
info6=\u5F53\u524D\u4EA7\u54C1\u578B\u53F7\u672A\u7EF4\u62A4\uFF0C\u8BF7\u9009\u62E9\u5BF9\u5E94\u4EA7\u54C1\u65CF
info7=\u6B63\u5728\u8FDB\u884C\u4E00\u952E\u6307\u6D3E\u5DE5\u827A\u8DEF\u7EBF......
info8=\u6307\u6D3E\u5DE5\u827A\u8DEF\u7EBF\u5B58\u5728\u5F02\u5E38\uFF0C\u8BF7\u68C0\u67E5\uFF1A\n
info9=\u6B63\u5728\u8FDB\u884C\u81EA\u52A8\u6295\u6599......
info10=\u81EA\u52A8\u6295\u6599\u5B58\u5728\u5F02\u5E38\uFF0C\u8BF7\u68C0\u67E5\uFF1A\n
info11=\u6307\u6D3E\u5DE5\u827A\u8DEF\u7EBF\u4E0E\u81EA\u52A8\u6295\u6599\u5B8C\u6210
Loading…
Cancel
Save