package com.*.*.modules.webservice.service;
import gmcc.investmentBuget.service.InvestmentBudgetImplStub;
import java.io.IOException;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import com.*.*.database.DBUtil;
import com..fwk.base.APMSBOImpl;
import com.*.*.modules.system.system.dao.ParameterDAO;
import com.*.*.util.*CharTurn;
import com.*.exception.RecordNotFoundException;
public class ProjectSynPollingBO extends *BOImpl{
/**
* @param args
*/
public static void main(String[] args) throws IOException,
SQLException, RecordNotFoundException {
InvestmentBudgetImplStub stub =
new InvestmentBudgetImplStub
("http://192.*.*.*:8080/nmcsoa/services/InvestmentBudgetService");
stub._getServiceClient().getOptions().setTimeOutInMilliSeconds(1000*60*1500);
new ProjectSynPollingBO().polling(stub);
// List proList = getProjectList();
// List conList = getContractList();
// restoreRelation(proList,conList);
}
public void polling(InvestmentBudgetImplStub stub){
String ids_pro="";
HashSet ids_con= new HashSet();
Connection conn=null;
try{
//寫庫
conn = DBUtil.getConnection();
System.out.println("開始同步項目合同庫 "+Calendar.getInstance().getTime());
InvestmentBudgetImplStub.GetAllProjectResponse res =
stub.getAllProject();
InvestmentBudgetImplStub.InvestmentBudgetProject[] a = res.get_return();
System.out.println("項目數: "+a.length);
if(a!=null && a.length>0){
//往t_parameter插入同步時間
java.util.Date date = new java.util.Date();
ParameterDAO parameterDAO = new ParameterDAO(conn);
parameterDAO.storeParameterValueByName("Ltim_PROJECT_lastSynTime",APMSCharTurn.getLongDate(date),conn);
for(int i=0; i<a.length; i++){
if(i==0){
ids_pro =ids_pro+ a[i].getId();
}else{
ids_pro = ids_pro+","+ a[i].getId();
}
PreparedStatement pstmt=null;
InvestmentBudgetImplStub.GetAllContractByProjectId req = new InvestmentBudgetImplStub.GetAllContractByProjectId();
req.setProjectId(a[i].getId());
InvestmentBudgetImplStub.GetAllContractByProjectIdResponse res_c =
stub.getAllContractByProjectId(req);
InvestmentBudgetImplStub.InvestmentBudgetContract[] c = res_c.get_return();
int p_proID = Integer.parseInt(String.valueOf(a[i].getId()));
String p_proCode = a[i].getCode()==null?"": a[i].getCode();
String p_proName = a[i].getName() ==null?"":a[i].getName();
int p_proType = Integer.parseInt(String.valueOf(a[i].getProjectType()));
int p_proStatus = Integer.parseInt(String.valueOf(a[i].getStatus()));
String p_content = a[i].getContent()==null?"":a[i].getContent();
String p_networkDef = a[i].getNetworkDef()==null?"":a[i].getNetworkDef();
String p_details = a[i].getDetails()==null?"":a[i].getDetails();
String p_deadline = a[i].getDeadline()==null?"":a[i].getDeadline();
String p_approvedCode = a[i].getApprovedCode()==null?"":a[i].getApprovedCode();
String p_investedType = a[i].getInvestedType()==null?"":a[i].getInvestedType();
Date p_startDate = a[i].getStartDate()==null?null:(Date) a[i].getStartDate().getTime();
String p_startCode = a[i].getStartCode()==null?"":a[i].getStartCode();
Date p_endDate = a[i].getEndDate()==null?null:(Date) a[i].getEndDate().getTime();
String p_endCode = a[i].getEndCode()==null?"":a[i].getEndCode();
if(!ProjectSynPollingBO.isExist("t_project_syn", "id", String.valueOf( a[i].getId()))){
System.out.println("---正在添加id為: "+ a[i].getId() +" 的項目---");
/** 往項目表插入數據 */
pstmt = conn.prepareStatement("insert into t_project_syn(id, code,name,protype,prostatus,updatetime," +
"Content, NetworkDef,Details,Deadline,ApprovedCode,InvestedType,StartDate,StartCode,EndDate,EndCode) "
+ "values(?,?,?,?,?,sysdate, ?,?,?,?,?,?,?,?,?,?)");
pstmt.setInt(1,p_proID);
pstmt.setString(2,p_proCode);
pstmt.setString(3,p_proName);
pstmt.setInt(4,p_proType);
pstmt.setInt(5,p_proStatus);
pstmt.setString(6,p_content);
pstmt.setString(7,p_networkDef);
pstmt.setString(8,p_details);
pstmt.setString(9,p_deadline);
pstmt.setString(10,p_approvedCode);
pstmt.setString(11,p_investedType);
pstmt.setDate(12,p_startDate);
pstmt.setString(13,p_startCode);
pstmt.setDate(14,p_endDate);
pstmt.setString(15,p_endCode);
pstmt.executeUpdate();
}else{
//繼續判斷項目記錄是否被修改
String sql = "select id from t_project_syn where id = "+p_proID;
String condition = " and ( code!= '"+ p_proCode + "' or name!= '"+ p_proName+ "' or protype!= "+ p_proType
+ " or prostatus!= "+ p_proStatus+ " or Content!= '"+ p_content+ "' or Details!= '"+ p_details
+ "' or InvestedType!= '"+ p_investedType+"' )";
//System.out.println(sql+condition);
pstmt = conn.prepareStatement(sql+condition);
ResultSet rs = pstmt.executeQuery();
if(rs.next()){
System.out.println("---正在修改id為: "+ a[i].getId() +" 的項目---");
pstmt = conn.prepareStatement("update t_project_syn set code=?,name=?,protype=?,prostatus=?," +
" updatetime=sysdate,Content=?, NetworkDef=?,Details=?,Deadline=?,ApprovedCode=?,InvestedType=?, " +
" StartDate=?,StartCode=?,EndDate=?,EndCode=? where id = ? ");
pstmt.setInt(15,p_proID);
pstmt.setString(1,p_proCode);
pstmt.setString(2,p_proName);
pstmt.setInt(3,p_proType);
pstmt.setInt(4,p_proStatus);
pstmt.setString(5,p_content);
pstmt.setString(6,p_networkDef);
pstmt.setString(7,p_details);
pstmt.setString(8,p_deadline);
pstmt.setString(9,p_approvedCode);
pstmt.setString(10,p_investedType);
pstmt.setDate(11,p_startDate);
pstmt.setString(12,p_startCode);
pstmt.setDate(13,p_endDate);
pstmt.setString(14,p_endCode);
pstmt.executeUpdate();
}
}
for(int j=0; j<c.length; j++){
String str_id =String.valueOf(c[j].getId());
if(!ids_con.contains(str_id)){
ids_con.add(str_id);
}
Long v_ID = Long.valueOf((String.valueOf(c[j].getId())));
Long v_projectID = Long.valueOf((String.valueOf(c[j].getProjectId())));
String v_concode=c[j].getCode()==null?"":c[j].getCode();
String v_conname=c[j].getName()==null?"":c[j].getName();
String v_con_topics =c[j].getTopics()==null?"":c[j].getTopics();
String v_orgName=c[j].getOrgName()==null?"":c[j].getOrgName();
long v_orgID=c[j].getOrgId();
//v_userName=c[j].getUserName();
long v_userID=c[j].getUserId();
String v_planDate = c[j].getPlanDate()==null?"":c[j].getPlanDate();
java.sql.Date v_FactDate = null;
java.sql.Date v_SigningDate = null;
InvestmentBudgetImplStub.GetUserById req_user = new InvestmentBudgetImplStub.GetUserById();
req_user.setOrgId(v_orgID);
req_user.setUserId(v_userID);
InvestmentBudgetImplStub.GetUserByIdResponse res_user =stub.getUserById(req_user);
InvestmentBudgetImplStub.UserInfo uInfo = res_user.get_return();
String v_userName = uInfo.getUser_Account()==null?"":uInfo.getUser_Account();
String v_fullName = uInfo.getUser_Name();
String v_orgFullName = uInfo.getUser_FullName();
Long v_con_status = Long.valueOf((String.valueOf(c[j].getStatus())));
String v_deadline = c[j].getDeadline()==null?"":c[j].getDeadline();
String v_otherParty = c[j].getOtherParty()==null?"":c[j].getOtherParty();
if(c[j].getFactDate()!=null){
Calendar cal_FactDate = c[j].getFactDate();
String day=null;
String month=null;
String hour=null;
String minu=null;
//日
if(cal_FactDate.get(Calendar.DATE)<10){
day = "0"+String.valueOf(cal_FactDate.get(Calendar.DATE));
}else{
day = String.valueOf(cal_FactDate.get(Calendar.DATE));
}
//月
if((cal_FactDate.get(Calendar.MONTH) + 1)<10){
month = "0"+String.valueOf(cal_FactDate.get(Calendar.MONTH) + 1);
}else{
month =String.valueOf(cal_FactDate.get(Calendar.MONTH) + 1);
}
//年
String year = String.valueOf(cal_FactDate.get(Calendar.YEAR)) ;
//時
if(cal_FactDate.get(Calendar.HOUR_OF_DAY)<10){
hour = "0"+String.valueOf(cal_FactDate.get(Calendar.HOUR_OF_DAY));//不能用Calendar.HOUR,它是12進制的
}else{
hour = String.valueOf(cal_FactDate.get(Calendar.HOUR_OF_DAY));
}
//分
if(cal_FactDate.get(Calendar.MINUTE)<10){
minu = "0"+String.valueOf(cal_FactDate.get(Calendar.MINUTE));
}else{
minu = String.valueOf(cal_FactDate.get(Calendar.MINUTE));
}
String str_FactDate = year+"-"+month+"-"+day+" "+hour+":"+minu+":00";
SimpleDateFormat bartDateFormat =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",Locale.ENGLISH);
v_FactDate = new java.sql.Date(bartDateFormat.parse(str_FactDate).getTime());
}
if(c[j].getSigningDate()!=null){
Calendar cal_SigningDate = c[j].getSigningDate();
String day=null;
String month=null;
String hour=null;
String minu=null;
//日
if(cal_SigningDate.get(Calendar.DATE)<10){
day = "0"+String.valueOf(cal_SigningDate.get(Calendar.DATE));
}else{
day = String.valueOf(cal_SigningDate.get(Calendar.DATE));
}
//月
if((cal_SigningDate.get(Calendar.MONTH) + 1)<10){
month = "0"+String.valueOf(cal_SigningDate.get(Calendar.MONTH) + 1);
}else{
month =String.valueOf(cal_SigningDate.get(Calendar.MONTH) + 1);
}
//年
String year = String.valueOf(cal_SigningDate.get(Calendar.YEAR)) ;
//時
if(cal_SigningDate.get(Calendar.HOUR_OF_DAY)<10){
hour = "0"+String.valueOf(cal_SigningDate.get(Calendar.HOUR_OF_DAY));//不能用Calendar.HOUR,它是12進制的
}else{
hour = String.valueOf(cal_SigningDate.get(Calendar.HOUR_OF_DAY));
}
//分
if(cal_SigningDate.get(Calendar.MINUTE)<10){
minu = "0"+String.valueOf(cal_SigningDate.get(Calendar.MINUTE));
}else{
minu = String.valueOf(cal_SigningDate.get(Calendar.MINUTE));
}
String str_SigningDate = year+"-"+month+"-"+day+" "+hour+":"+minu+":00";
SimpleDateFormat bartDateFormat =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",Locale.ENGLISH);
v_SigningDate = new java.sql.Date(bartDateFormat.parse(str_SigningDate).getTime());
}
if(!ProjectSynPollingBO.isExist("t_contract_syn", "id", String.valueOf(v_ID))){
System.out.println("---正在添加id為: " + c[j].getId() +" 的合同---");
/** 往合同表插入數據 */
pstmt = conn.prepareStatement("insert into t_contract_syn(ID, concode,conname,contopics,orgname,username,constatus,updatetime,PROJECTID," +
"PlanDate,FactDate,OtherParty,SigningDate,Deadline,fullname,orgfullname) values(?,?,?,?,?,?,?,sysdate,?,?,?,?,?,?,?,?)");
pstmt.setInt(1,Integer.parseInt(String.valueOf(v_ID)));
pstmt.setString(2,v_concode);
pstmt.setString(3,v_conname);
pstmt.setString(4,v_con_topics);
pstmt.setString(5,v_orgName);
pstmt.setString(6,v_userName);
pstmt.setInt(7,Integer.parseInt(String.valueOf(v_con_status)));
pstmt.setInt(8,Integer.parseInt(String.valueOf(v_projectID)));
pstmt.setString(9,v_planDate);
pstmt.setDate(10,v_FactDate==null?null:v_FactDate);
pstmt.setString(11,v_otherParty);
pstmt.setDate(12,v_SigningDate==null?null:v_SigningDate);
pstmt.setString(13,v_deadline);
pstmt.setString(14,v_fullName);
pstmt.setString(15,v_orgFullName);
pstmt.executeUpdate();
}else{
//繼續判斷合同記錄是否被修改
String sql_c = "select id from t_contract_syn where id = "+v_ID;
String condition_c = " and ( concode!= '"+ v_concode + "' or conname!= '"+ v_conname+ "' or contopics!= '"+ v_con_topics
+ "' or orgname!= '"+ v_orgName+ "' or orgfullname!= '"+ v_orgFullName+ "' or username!= '"+ v_userName
+ "' or fullname!= '"+ v_fullName+ "' or constatus!= "+ v_con_status+" or projectid!= "+ v_projectID+
" or plandate!= '"+ v_planDate+"' or otherparty!= '"+ v_otherParty+
"' or deadline!= '"+ v_deadline+"')";
//System.out.println(sql_c+condition_c);
pstmt = conn.prepareStatement(sql_c+condition_c);
ResultSet rs_c = pstmt.executeQuery();
if(rs_c.next()){
System.out.println("---正在修改id為: "+c[j].getId() +" 的合同---");
pstmt = conn.prepareStatement("update t_contract_syn set concode=?,conname=?,contopics=?,orgname=?,username=?" +
",constatus=?,updatetime=sysdate,PROJECTID=?,PlanDate=?,FactDate=?,OtherParty=?,SigningDate=?,Deadline=?"+
",fullname=?,orgfullname=? where id= ? ");
pstmt.setInt(15,Integer.parseInt(String.valueOf(v_ID)));
pstmt.setString(1,v_concode);
pstmt.setString(2,v_conname);
pstmt.setString(3,v_con_topics);
pstmt.setString(4,v_orgName);
pstmt.setString(5,v_userName);
pstmt.setInt(6,Integer.parseInt(String.valueOf(v_con_status)));
pstmt.setInt(7,Integer.parseInt(String.valueOf(v_projectID)));
pstmt.setString(8,v_planDate);
pstmt.setDate(9,c[j].getFactDate()==null?null:v_FactDate);
pstmt.setString(10,v_otherParty);
pstmt.setDate(11,c[j].getSigningDate()==null?null:v_SigningDate);
pstmt.setString(12,v_deadline);
pstmt.setString(13,v_fullName);
pstmt.setString(14,v_orgFullName);
pstmt.executeUpdate();
}
}
}
if(pstmt!=null){
pstmt.close();
}
}
//刪除已不存在項目記錄
System.out.println("正在刪除已不存在項目記錄: "+ids_pro);
deleteProjectRecord("t_project_syn", "id" , ids_pro);
//刪除已不存在合同記錄
System.out.println("正在刪除已不存在合同記錄: "+ids_con);
deleteContractRecord("t_contract_syn", "id" , ids_con);
//恢復項目與合同的關系
System.out.println("正在恢復項目與合同關系");
List proList = getProjectList();
List conList = getContractList();
restoreRelation(proList,conList);
}
System.out.print("結束同步項目合同庫 "+Calendar.getInstance().getTime());
if(conn!=null){
conn.close();
}
} catch(Exception e){
e.printStackTrace();
}finally{
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
/** 通過關鍵字判斷記錄是否存在 */
public static boolean isExist(String tableName, String colName, String value){
Connection conn=null;
PreparedStatement pstmt=null;
try {
conn = DBUtil.getConnection();
pstmt = conn.prepareStatement("select "+colName +" from "+tableName + " where " + colName +" = " +value );
ResultSet rs= pstmt.executeQuery();
if(rs.next()){
return true;
}
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(pstmt!=null){
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return false;
}
/** 刪除已不存在的項目記錄 */
public static void deleteProjectRecord(String tableName, String colName, String value){
Connection conn=null;
PreparedStatement pstmt=null;
try {
conn = DBUtil.getConnection();
Statement sate = conn.createStatement();
System.out.println("目前遠程合同集合("+value.split(",").length+"): " +value);
ResultSet rs =sate.executeQuery("select id, code,name from t_project_syn where id not in ("+ value +") ");
while(rs.next()){
System.out.println("正在刪除已經不存在項目記錄! id: "+ rs.getInt("ID")+", code: "+rs.getString("CODE")+", name: "+rs.getString("NAME"));
}
//開始集體刪除
pstmt = conn.prepareStatement("delete from "+tableName +" where "+ colName + " not in ( "+value+" )" );
pstmt.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(pstmt!=null){
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
/** 刪除已不存在的合同記錄 */
public static void deleteContractRecord(String tableName, String colName, HashSet value){
String ids="";
if(value!=null && value.size()>0){
Iterator it = value.iterator();
int i=0;
while(it.hasNext()){
String id=String.valueOf(it.next());
if(i==0){
ids = ids + id;
}else{
ids = ids+ ","+ id;
}
i++;
}
}
Connection conn=null;
PreparedStatement pstmt=null;
try {
conn = DBUtil.getConnection();
Statement sate = conn.createStatement();
System.out.println("目前遠程合同集合("+ids.split(",").length+"): " +ids);
ResultSet rs =sate.executeQuery("select id, concode,conname from t_contract_syn where id not in ("+ ids +") ");
while(rs.next()){
System.out.println("正在刪除已經不存在合同記錄! id: "+ rs.getInt("ID")+", conCode: "+rs.getString("CONCODE")+", conName: "+rs.getString("CONNAME"));
}
//開始集體刪除
pstmt = conn.prepareStatement("delete from "+tableName +" where "+ colName + " not in ( "+ids+" )" );
pstmt.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(pstmt!=null){
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
/**
* 項目集合
*/
public static List getProjectList(){
Connection conn=null;
Statement proState =null;
ResultSet proRs=null;
List proList = new ArrayList();
try {
conn = DBUtil.getConnection();
proState = conn.createStatement();
proRs = proState.executeQuery(" select x.projectid, x.projectname, x.projectid_syn from t_project x where x.flag_syn=0 ");
while(proRs.next()){
//項目信息
Map proMap = new HashMap();
proMap.put(proRs.getObject("PROJECTID"), proRs.getObject("PROJECTID_SYN"));
//System.out.println(proRs.getObject("PROJECTID")+","+ proRs.getObject("PROJECTID_SYN"));
proList.add(proMap);
}
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(proState!=null){
try {
proState.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return proList;
}
/**
* 合同集合
*/
public static List getContractList(){
Connection conn=null;
Statement conState =null;
ResultSet conRs=null;
List proList = new ArrayList();
try {
conn = DBUtil.getConnection();
conState = conn.createStatement();
conRs = conState.executeQuery(" select y.id,y.conname, y.projectid, y.contractid_syn from t_contract y where y.flag_syn=0 ");
while(conRs.next()){
//項目信息
Map proMap = new HashMap();
proMap.put(conRs.getObject("ID"), conRs.getObject("PROJECTID"));
//System.out.println(conRs.getObject("ID")+","+ conRs.getObject("PROJECTID"));
proList.add(proMap);
}
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(conState!=null){
try {
conState.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return proList;
}
/**
* 恢復關系
*/
public static void restoreRelation(List projectList, List contractList){
Connection conn=null;
PreparedStatement pstmt=null;
if(projectList!=null && projectList.size()>0 && contractList!=null && contractList.size()>0){
//項目
for(int i=0; i< projectList.size(); i++){
Map proMap = (HashMap)projectList.get(i);
for(Iterator itPro = proMap.entrySet().iterator(); itPro.hasNext(); ){
Map.Entry ep = (Map.Entry)itPro.next();
int newProjectID = Integer.parseInt(ep.getKey().toString());
int projectid_syn =Integer.parseInt(ep.getValue().toString());
//合同
for(int j=0; j< contractList.size(); j++){
Map conMap = (HashMap)contractList.get(j);
for(Iterator itCon = conMap.entrySet().iterator(); itCon.hasNext(); ){
Map.Entry ec = (Map.Entry)itCon.next();
int contractID = Integer.parseInt(ec.getKey().toString());
int projectid =Integer.parseInt(ec.getValue().toString());
if(projectid==projectid_syn){
try {
conn = DBUtil.getConnection();
pstmt = conn.prepareStatement(" update t_contract set projectid = ? where id = ? ");
pstmt.setInt(1, newProjectID);
pstmt.setInt(2, contractID);
pstmt.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(pstmt!=null){
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
System.out.println("合同contract: "+contractID+"由原來的所屬項目"+projectid_syn+"恢復為: "+newProjectID);
}
}
}
}
}
}
}
}
//-------觸發器-----------
create or replace trigger tri_partener after insert or update or delete
on t_ap_partener_syn for each row
declare
integrity_error exception;
errno integer;
errmsg char(200);
dummy integer;
found boolean;
begin
if inserting then
insert into t_ap_partener(
PARTENERID ,
PARTENERNAME,
ADDRESS,
TELEPHONE,
FLAG,
MAILDOMAIN,
VISUAL,
SUP_ID,
SUP_CODE,
REPRESENTER,
BUSI_TYPE,
EMAIL,
SITE_URL,
FAX,
UPDATETIME,
syn_flag
)
values(SEQ_AP_PARTENER.Nextval,:new.name,:new.address,:new.phone,1,:new.mailDomain,
0, :new.SUP_ID,:new.SUP_CODE,:new.REPRESENTER,:new.BUSI_TYPE,:new.EMAIL,:new.SITE_URL,:new.FAX,sysdate,0);
elsif updating then
update t_ap_partener set PARTENERNAME=:new.name,ADDRESS=:new.ADDRESS,TELEPHONE=:new.phone,flag =1,MAILDOMAIN=:new.mailDomain,visual=0
,SUP_ID=:new.SUP_ID, SUP_CODE=:new.SUP_CODE,REPRESENTER=:new.REPRESENTER,BUSI_TYPE=:new.BUSI_TYPE,EMAIL=:new.EMAIL,SITE_URL=:new.SITE_URL,FAX=:new.FAX,UPDATETIME=sysdate,syn_flag=0
where SUP_ID=:OLD.SUP_ID;
elsif deleting then
delete from t_ap_partener where SUP_ID=:OLD.SUP_ID;
end if;
exception
when integrity_error then
raise_application_error(errno, errmsg);
end;
//--------------------表結構---------------------------
//項目
-- Create table
create table T_PROJECT
(
PROJECTID NUMBER,
PROJECTCODE VARCHAR2(50),
PROJECTNAME VARCHAR2(100),
PROTYPE NUMBER(2),
PROSTATUS NUMBER(2),
CONCODE VARCHAR2(50),
CONNAME VARCHAR2(100),
CONTOPICS VARCHAR2(200),
ORGNAME VARCHAR2(30),
USERNAME VARCHAR2(30),
CONSTATUS NUMBER(2),
UPDATETIME DATE,
TOPPROJECTID NUMBER(25),
PROJECTLEVEL NUMBER(2),
PRORESPERSONID NUMBER(15),
PRORESPERSONNAME VARCHAR2(15),
ACCEPT NUMBER(1),
FLAG NUMBER(1),
DESCRIPTION VARCHAR2(100),
PRORESPERSONDEPTID NUMBER(15),
PRORESPERSONDEPTNAME VARCHAR2(40),
CONTENT VARCHAR2(1024),
NETWORKDEF VARCHAR2(64),
DETAILS VARCHAR2(128),
DEADLINE VARCHAR2(255),
APPROVEDCODE VARCHAR2(255),
INVESTEDTYPE VARCHAR2(255),
STARTDATE DATE,
STARTCODE VARCHAR2(255),
ENDDATE DATE,
ENDCODE VARCHAR2(255),
FLAG_SYN NUMBER(1),
PROJECTID_SYN NUMBER
)
//合同
create table T_CONTRACT
(
ID NUMBER,
CONCODE VARCHAR2(50),
CONNAME VARCHAR2(150),
CONTOPICS VARCHAR2(300),
ORGNAME VARCHAR2(30),
ORGFULLNAME VARCHAR2(100),
USERNAME VARCHAR2(30),
FULLNAME VARCHAR2(10),
CONSTATUS NUMBER(2),
UPDATETIME DATE,
PROJECTID NUMBER,
PLANDATE VARCHAR2(10),
FACTDATE DATE,
OTHERPARTY VARCHAR2(255),
SIGNINGDATE DATE,
DEADLINE VARCHAR2(255),
FLAG_SYN NUMBER(1),
FLAG NUMBER(1),
CONTRACTID_SYN NUMBER
)
tablespace TBS_USERS
pctfree 10
pctused 40
initrans 1
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);
-- Create table
create table T_PROJECT_SYN
(
ID NUMBER,
CODE VARCHAR2(50),
NAME VARCHAR2(100),
PROTYPE NUMBER(2),
PROSTATUS NUMBER(2),
UPDATETIME DATE,
CONTENT VARCHAR2(1024),
NETWORKDEF VARCHAR2(64),
DETAILS VARCHAR2(128),
DEADLINE VARCHAR2(255),
APPROVEDCODE VARCHAR2(255),
INVESTEDTYPE VARCHAR2(255),
STARTDATE DATE,
STARTCODE VARCHAR2(255),
ENDDATE DATE,
ENDCODE VARCHAR2(255)
)
//中間合同表
-- Create table
create table T_CONTRACT_SYN
(
ID NUMBER,
CONCODE VARCHAR2(50),
CONNAME VARCHAR2(150),
CONTOPICS VARCHAR2(300),
ORGNAME VARCHAR2(30),
ORGFULLNAME VARCHAR2(100),
USERNAME VARCHAR2(20),
FULLNAME VARCHAR2(10),
CONSTATUS NUMBER(2),
UPDATETIME DATE,
PROJECTID NUMBER,
PLANDATE VARCHAR2(10),
FACTDATE DATE,
OTHERPARTY VARCHAR2(255),
SIGNINGDATE DATE,
DEADLINE VARCHAR2(255)
)