我MM在财务部里头作小会计,每个月回有一张CT发过来的话费清单.每个号码一行.
公司里头有很多个部门,每个部门还有若干电话,有些还有宽带的费用.
现在要做的是将CT的话费单按部门分类好,然后统计出每个部门每个月的话费,网路费.
原来这个工具是用cakephp做的,现在改用GOG 试试
更新:
1-19: 输出界面用的是jqgrid,补一个图
需要Excel的 java库 :
JXL
3个域模型
Dept:部门
Phone:电话
Bill:单行的话费
class Dept {
String name
static hasMany = [phones:Phone]
}
class Phone {
String name
String number
String type
static belongsTo = [dept:Dept]
static hasMany = [bills:Bill]
}
class Bill {
float price
Date date = new Date()
static belongsTo = [phone:Phone]
}
处理excel的服务
class ExcelService {
boolean transactional = true
def errors =[]
def save(FileInputStream file) throws RuntimeException{
//数据起始行号
def start_row = 5
//电话号码列
def phone_offset=0
//默认话费列
def total_offset = 16
//取数据列的列名 实收,实际要入库的帐单列; 业务号码,帐单上面的号码列名. 用来确认列的序列(有时候电信给的这个帐单列数会有变动,有时17列,有时候又18列)
static final String TOTAL_COL_NAME = '实收'
static final String NUMBER_COL_NAME = '业务号码'
//记录行错误
def out_errors = []
//获取第一个sheet
Workbook workbook = Workbook.getWorkbook(file)
Sheet sheet = workbook.getSheet(0)
//获取日期,精确到月即可,在A3格中.表格数据:计费帐期:2008/12/01--2008/12/31
def date_m = sheet.getCell("A3").getContents()=~ /:(\d{4}\/\d{2}\/\d{2})--/
def date =(new SimpleDateFormat('yyyy/MM/dd').parse(date_m[0][1]))
//获取业务号码,实收栏位置
sheet.getRow(4).each{
if(it.getContents()==NUMBER_COL_NAME){
phone_offset = it.getColumn()
}
if(it.getContents()==TOTAL_COL_NAME){
total_offset = it.getColumn()
return
}
}
//遍历所有行
(start_row..<sheet.getRows()).each{
println it
def cells = sheet.getRow(it);
def number = cells[phone_offset].getContents()
def price =Float.parseFloat(cells[total_offset].getContents())
def phone= Phone.findByNumber(number)
println number
if(phone){
println phone.name+"[${it}]:number=${number},price=${price}"
phone.addToBills(price:price,date:date).save()
}else{
this.errors.add("行[${it}]:没有找到对应的号码[${number}]")
}
}
if(this.errors.size()){
throw new RuntimeException("多行没有找到对应的号码!")
}
}
}
- 大小: 50.9 KB
分享到:
相关推荐
迷你银河系 适用于Linux的简单GOG...启用在游戏中显示FPS 使用系统的Scummvm或Dosbox安装 使用Wine安装Windows游戏 支持的语言 当前,Minigalaxy可以用以下语言显示: 巴西葡萄牙语 英语 荷兰语 法文 德语 挪威语B
ClearGOG是一个简单的工具,可以从开始菜单中删除GOG游戏。 GOG Galaxy默认情况下会在您的“开始”菜单中放置快捷方式,并且无法禁用此功能。 此工具用于清除GOG Galaxy在其中放置的不需要的游戏快捷方式的开始菜单...
LS-DB.rar_GOG_mir.db_nowtm是一个与游戏相关的压缩包文件,主要涉及GOG平台、mir数据库和nowtm元素。从标题来看,我们可以推测这可能与游戏数据存储、更新或追踪有关。GOG(Good Old Games)是一个提供经典和现代...
戈多 GODO引擎的GOG模块 适用于Windows和Mac平台的Godot游戏引擎(版本3.x)的GOG API。 目前,GOG api不支持Linux,但... 从Galaxy SDK将“库”和“包含”文件夹复制到godotgog / sdk文件夹中。 现在,将godotgog目录
bid0-lid0-steam游戏管家_steambdth01_1.0.0.1487@1prw2r@gog.exe
从您的GOG库中列出所有游戏及其说明 从GOG Connect获得可用的认领游戏 安装游戏(下面的候选。) 使用下载并进行GOG Connect 使用提取游戏 兼容性 DOSBox游戏 ScummVM游戏 ResidualVM游戏从猴岛逃生 Amiga游戏可能...
如果您想在不同的工具中使用 CSV,例如,您可以默认使用-a参数来导出所有内容。 当不同的语言环境需要不同的 CSV 分隔符(例如意大利语)时,您可以手动指定要使用的字符 ( -D <character> )。 此外,您可以手动...
gog-galaxy-itch.io itch.io的集成 很大程度上基于和 请通过发布页面使用下载,因为存储库本身不包含任何依赖项。 请注意,Itch上的许多游戏未在IGDB中列出,因此将显示为“未知游戏”。 您可以通过在上添加它们来...
集成GOG Galaxy 2.0。 特征 图书馆: 从HumbleBundle免费下载DRM 第三方游戏键 谦卑的游戏 安装:通过webbrowser轻松下载 已安装游戏检测: 扫描Windows注册表(仅适用于可以通过“ Control Panel\Programs\...
GOG_Galaxy_2.0.exe.cab
当前显示为“ Newegg”,因为Galaxy API中没有osu id安装从和upack下载资产osu_v{}.zip到: Windows: %localappdata%\GOG.com\Galaxy\plugins\installed MacOS: ~/Library/Application Support/GOG....
您可以通过我们的Docker脚本在您的环境中试用GOG系统。 GOG Docker项目为您提供了系统的功能映像,该映像将由Docker容器管理器进行组装。 如果愿意,可以通过执行以下步骤来手动设置GOG系统开发环境: 系统架构 访问...
GOG星系 这是GOG Galaxy的快照, “ GOG.com的游戏库。无DRM游戏”。... 某些游戏可能需要您在终端中运行snap connect gog-galaxy-wine:hardware-observe和/或snap connect gog-galaxy-wine:process-c
签名检查 检查 GOG 游戏和好东西的完整性。 文件类型:7Z、APK、AVI、BIN、BR、BZ2、DEB、EXE、GZ、JPG、MKV、MP4、PDF、PNG、RAR、XZ、ZIP、ZST。 用法 sigchk [OPTION]... [FILE]... 选项 --dry-run 仅查找不可...
GOG下载器 从链接保存GOG媒体。 用法 gog-dl [选项] ... [URL] ... 选项 -b [ NAME ]将此标签用于存档 -o [ DIR ]将档案或媒体移至 -w [ DIR ]仅在此目录中工作 -i,-img仅下载图像 -n,-no-ytdl不要使用YouTube-DL...
Galaxy2steam - 自动添加和更新 GOG Galaxy 安装的游戏作为 Steam 快捷方式 什么? 随着 GOG Galaxy 的发布,现在可以轻松跟踪 GOG 游戏安装。 此实用程序使用该信息来生成和/或更新 Steam 用户的快捷方式.vdf 文件...
0,关闭Gog Galaxy 2.0 1,确保在设置中激活了Dark(黑暗)主题,否则它将无法正常工作。 2,将findFriendsWindow.css放在此路径C:\ Program Files(x86)\ GOG Galaxy \ web \ styles \ app \ findFriendsWindow...
GOG数据库收集GOG游戏数据的网站。部署说明命令是否以$或#开头,取决于它们可以作为普通用户运行还是必须作为root用户运行。 它们特定于Debian / Ubuntu,Apache2和uWSGI。 如果要使用其他Web或应用程序服务器,请...
失眠刮板 GOG.com 双重失眠交易刮板 GOG.com 2015 年 3 月 Double Insomnia 促销活动的新优惠提醒 敬请关注《荒原》和《魔石传说 2》的优惠! 用法: npm start
GOG俄罗斯价格一个WebApp,您可以在西班牙和俄罗斯地区的GOG平台上查看给定游戏的价格,因此您可以比较价格差异并选择在何处购买游戏。它是如何工作的?使用GitHub动作和cron作业,它可以获取西班牙和俄罗斯地区所有...