배포 프로그램에서 프로그래머는 배포를 요청하고 실재 업로드 하는 사람이 별도로 있다는 가정 하에
Table을 간단하게 만들어 봤다.
그리고 배포 하는 웹서버관리와 파일 백업은 db에 하기로 했다.
logical
Physical
이렇게 구성해봤다.
아래에서 er 파일을 다운로드 할 수 있음.
대략 이정도 기능으로 시작 할 듯 하다.
현재 1차 버젼은 완료가 되어 가는 중이다.
이프로그램 이름을 뭐라고 하쥐..
OK 배포 프로그램 이름은 withzemi-Deploy 로 결정
Asp.net에서 작업 도중 한글 사이즈를 구할 때
숫자와 영문은 1byte 한글은 2byte로 길이를 체크해야 할때가 있다.
그때 사용할 수 있는 코드
System.Text.Encoding encoding = System.Text.Encoding.GetEncoding("ks_c_5601-1987");
byte[] HanByte = encoding.GetBytes("한글 문자열");
HanByte.length 하면 길이를 가져올 수 있다.
2차원 바코드 만드는 부분.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Runtime.InteropServices;
using System.IO;
namespace ConnectionSystem
{
public sealed class DzQREncoder
{
[DllImport("DzQREncoder.dll")]
private static extern int MakeQR(string a_pszFileName, int a_nMulti);
[DllImport("DzQREncoder.dll")]
private static extern IntPtr GetLastErr();
[DllImport("DzQREncoder.dll")]
private static extern int SetNumber_CityCodeW(string a_pszCode);
[DllImport("DzQREncoder.dll")]
private static extern int SetNumber_OrgCodeW(string a_pszCode);
[DllImport("DzQREncoder.dll")]
private static extern int SetNumber_AdminCodeW(string a_pszCode);
[DllImport("DzQREncoder.dll")]
private static extern int SetNumber_NULLCodeW(string a_pszCode);
[DllImport("DzQREncoder.dll")]
private static extern int SetNumber_AccountCodeW(string a_pszDate);
[DllImport("DzQREncoder.dll")]
private static extern int SetNumber_TaxDateW(string a_pszCode);
[DllImport("DzQREncoder.dll")]
private static extern int SetNumber_TaxTypeW(string a_pszData);
[DllImport("DzQREncoder.dll")]
private static extern int SetNumber_TaxDate2W(string a_pszData);
[DllImport("DzQREncoder.dll")]
private static extern int SetTaxInfo_TimeLimitOfPaymentW(string a_pszData);
[DllImport("DzQREncoder.dll")]
private static extern int SetTaxInfo_TaxAmountW(string a_pszData);
[DllImport("DzQREncoder.dll")]
private static extern int SetTaxInfo_SocialNumberW(string a_pszData);
[DllImport("DzQREncoder.dll")]
private static extern int SetTaxInfo_NameW(string a_pszData);
[DllImport("DzQREncoder.dll")]
private static extern int SetInfomation_EtcW(string a_pszData);
[DllImport("DzQREncoder.dll")]
private static extern int SetNumber_CityCode(string a_pszCode);
[DllImport("DzQREncoder.dll")]
private static extern int SetNumber_OrgCode(string a_pszCode);
[DllImport("DzQREncoder.dll")]
private static extern int SetNumber_AdminCode(string a_pszCode);
[DllImport("DzQREncoder.dll")]
private static extern int SetNumber_NULLCode(string a_pszCode);
[DllImport("DzQREncoder.dll")]
private static extern int SetNumber_AccountCode(string a_pszDate);
[DllImport("DzQREncoder.dll")]
private static extern int SetNumber_TaxDate(string a_pszCode);
[DllImport("DzQREncoder.dll")]
private static extern int SetNumber_TaxType(string a_pszData);
[DllImport("DzQREncoder.dll")]
private static extern int SetNumber_TaxDate2(string a_pszData);
[DllImport("DzQREncoder.dll")]
private static extern int SetTaxInfo_TimeLimitOfPayment(string a_pszData);
[DllImport("DzQREncoder.dll")]
private static extern int SetTaxInfo_TaxAmount(string a_pszData);
[DllImport("DzQREncoder.dll")]
private static extern int SetTaxInfo_SocialNumber(string a_pszData);
[DllImport("DzQREncoder.dll")]
private static extern int SetTaxInfo_Name(string a_pszData);
[DllImport("DzQREncoder.dll")]
private static extern int SetInfomation_Etc(string a_pszData);
/// <summary>
/// 이미지 저장
/// </summary>
/// <param name="m_strCityCode">서울시 코드</param>
/// <param name="m_strOrgCode">기관코드</param>
/// <param name="m_strAdminCode">행정동</param>
/// <param name="m_strNULL">빈칸</param>
/// <param name="m_strTaxCode">회계</param>
/// <param name="m_strDate">과세년월</param>
/// <param name="m_strTaxType">수기고지구분</param>
/// <param name="m_strTaxNum">신고일시</param>
/// <param name="m_strTimeLimitDate">납부기한</param>
/// <param name="m_strTaxAmount">납부세액</param>
/// <param name="m_strSocialCode">주민번호(법인번호)</param>
/// <param name="m_strName">성명(법인명)</param>
/// <param name="szData">기타</param>
/// <param name="strComCd">회사코드</param>
/// <returns>저장된 이미지 full path</returns>
public string Print(string m_strCityCode, string m_strOrgCode,
string m_strAdminCode,
string m_strNULL,
string m_strTaxCode,
string m_strDate,
string m_strTaxType,
string m_strTaxNum,
string m_strTimeLimitDate,
string m_strTaxAmount,
string m_strSocialCode,
string m_strName,
string szData,string strComCd)
{
try
{
string strData = string.Empty;
for (int nCount = 0; nCount < 244; ++nCount)
{
strData += "0";
}
if (SetNumber_CityCode(m_strCityCode) == 0) { throw new Exception("서울시 코드 길이 오류."); }
if (SetNumber_OrgCode(m_strOrgCode) == 0) { throw new Exception("기관코드 길이 오류"); }
if (SetNumber_AdminCode(m_strAdminCode) == 0) { throw new Exception("행정동 길이 오류"); }
if (SetNumber_NULLCode(m_strNULL) == 0) { throw new Exception("빈칸 길이 오류"); }
if (SetNumber_AccountCode(m_strTaxCode) == 0) { throw new Exception("회계 길이 길이 오류"); }
if (SetNumber_TaxDate(m_strDate) == 0) { throw new Exception("과세년월 길이 오류11"); }
if (SetNumber_TaxType(m_strTaxType) == 0) { throw new Exception("수기고지구분 길이 오류"); }
if (SetNumber_TaxDate2(m_strTaxNum) == 0) { throw new Exception("신고일시 길이 오류"); }
if (SetTaxInfo_TimeLimitOfPayment(m_strTimeLimitDate) == 0) { throw new Exception("납부기한 길이 오류"); }
if (SetTaxInfo_TaxAmount(m_strTaxAmount) == 0) { throw new Exception("납부세액 길이 오류"); }
if (SetTaxInfo_SocialNumber(m_strSocialCode) == 0) { throw new Exception("주민번호(법인번호) 길이 오류"); }
if (SetTaxInfo_Name(m_strName) == 0) { throw new Exception("성명(법인명) 길이 오류"); }
if (SetInfomation_Etc(strData) == 0) { throw new Exception("기타"); }
string strPath = string.Format(@"{0}{1}",ECount.Framework.Configuration.ConfigManager.GetString("BarCodePath"), strComCd);
string strUncPath = HttpContext.Current.Server.MapPath(strPath);
//해당 폴더가 없을시 생성한다.
if (!Directory.Exists(strPath))
{
Directory.CreateDirectory(strUncPath);
}
string strImgPath = string.Format(@"{0}/{1}.bmp", strPath, System.Guid.NewGuid().ToString());
string strImgUncPath = HttpContext.Current.Server.MapPath(strImgPath);
MakeQR(strImgUncPath, 1);
return strImgPath;
}
catch (DllNotFoundException e)
{
throw e;
}
}
}
}
2차원 바코드를 구현 해야 된다고 한다.
바코드 만드는 샘플을 보내달라고 했더니..
C++로 응용프로그램 샘플이 날라오다니…
이걸 참조해서 웹으로 구현 해야 한다.
개발 환경은 .net3.5 웹기반..
응용프로그램을 만든 회사는 더존으로 되어 있군.. 전화해서 물어봐야 되나.. 고민..
걍 하기로 했다..
먼저 더존에서 개발한 DzQREncoder.dll 을 bin폴더에 넣었다.
그리구서 class를 생성.
public sealed class DzQREncoder
{
[DllImport("DzQREncoder.dll")]
private static extern int MakeQR(string a_pszFileName, int a_nMulti);
[DllImport("DzQREncoder.dll")]
private static extern IntPtr GetLastErr();
[DllImport("DzQREncoder.dll")]
private static extern int SetNumber_CityCodeW(string a_pszCode);
[DllImport("DzQREncoder.dll")]
private static extern int SetNumber_OrgCodeW(string a_pszCode);
[DllImport("DzQREncoder.dll")]
private static extern int SetNumber_AdminCodeW(string a_pszCode);
[DllImport("DzQREncoder.dll")]
private static extern int SetNumber_NULLCodeW(string a_pszCode);
[DllImport("DzQREncoder.dll")]
private static extern int SetNumber_AccountCodeW(string a_pszDate);
[DllImport("DzQREncoder.dll")]
private static extern int SetNumber_TaxDateW(string a_pszCode);
[DllImport("DzQREncoder.dll")]
private static extern int SetNumber_TaxTypeW(string a_pszData);
[DllImport("DzQREncoder.dll")]
private static extern int SetNumber_TaxDate2W(string a_pszData);
[DllImport("DzQREncoder.dll")]
private static extern int SetTaxInfo_TimeLimitOfPaymentW(string a_pszData);
[DllImport("DzQREncoder.dll")]
private static extern int SetTaxInfo_TaxAmountW(string a_pszData);
[DllImport("DzQREncoder.dll")]
private static extern int SetTaxInfo_SocialNumberW(string a_pszData);
[DllImport("DzQREncoder.dll")]
private static extern int SetTaxInfo_NameW(string a_pszData);
[DllImport("DzQREncoder.dll")]
private static extern int SetInfomation_EtcW(string a_pszData);
[DllImport("DzQREncoder.dll")]
private static extern int SetNumber_CityCode(string a_pszCode);
[DllImport("DzQREncoder.dll")]
private static extern int SetNumber_OrgCode(string a_pszCode);
[DllImport("DzQREncoder.dll")]
private static extern int SetNumber_AdminCode(string a_pszCode);
[DllImport("DzQREncoder.dll")]
private static extern int SetNumber_NULLCode(string a_pszCode);
[DllImport("DzQREncoder.dll")]
private static extern int SetNumber_AccountCode(string a_pszDate);
[DllImport("DzQREncoder.dll")]
private static extern int SetNumber_TaxDate(string a_pszCode);
[DllImport("DzQREncoder.dll")]
private static extern int SetNumber_TaxType(string a_pszData);
[DllImport("DzQREncoder.dll")]
private static extern int SetNumber_TaxDate2(string a_pszData);
[DllImport("DzQREncoder.dll")]
private static extern int SetTaxInfo_TimeLimitOfPayment(string a_pszData);
[DllImport("DzQREncoder.dll")]
private static extern int SetTaxInfo_TaxAmount(string a_pszData);
[DllImport("DzQREncoder.dll")]
private static extern int SetTaxInfo_SocialNumber(string a_pszData);
[DllImport("DzQREncoder.dll")]
private static extern int SetTaxInfo_Name(string a_pszData);
[DllImport("DzQREncoder.dll")]
private static extern int SetInfomation_Etc(string a_pszData);
}
만든 김에
호출하면 생성된 이미지 url을 return 해주도록 처리해보자..