祝我们2018新年快乐,

一、测试地点

日前察觉了一个新意的剧本JtSQL(java编写)

硅钢片业务测试数据库地址为:http://www.bonawifi.com,测试数据库名字为SiliconSteelSheet,测试账号:用户名demo ,密码demo

开源地址为:https://github.com/noear/JtSQL

 统计 1

JtSQL 特点:
*.结合了JS、SQL、模板理念;
*.保持了JS和SQL的语法高亮(利于DBA审核);
*.方便统一管理、部署、运行
*.像存储过程一样,提供当前上下文及变量补助;
*.像SQL客户端工具一样,即时编写即时运行;
*.像定制总括程序一样,提供经过和逻辑控制能力;
*.服务端运行(别误会成客户端运行啊…) 

二、业务验证

 

遵照客户提供的音讯,产品分类及业务经过大约如下:

统计 2

 统计 3

诚然在工作中总会赶上这么的题目

 生产过程中,每种不同尺度的窄卷,均由一组窄卷组合在相同母卷开料生成,本有的需要更加开发,以便实现机关的排料优化整合,和对母卷补货需求的集合操作。

不时去拉sql,有时候一句sql执行搞不定
就得分多次sql,

三、测试步骤

写sql写的心累。把JavaScript
和 sql 结合起来着实很赞。能化解平昔苦恼的题目

1、登陆系统

行使工作测试账号登陆系统后,将见到如下页面,此页面为库存操作仪表板,是任何ERP系统的事情为主:

 统计 4

 2、创立销售订单

具备事务的起点从录入销售报价单开首:

 统计 5

 点击页面中的销售,打开销售仪表板后,再打开2岗位的价码单:

 统计 6

 看到报价单列表页面。已经做了一个报价单,第一次测试,打开这多少个报价单,点击肯定销售

 统计 7

 重复测试时,快捷的创办报价单的不二法门,是从来复制这些报价单:

 统计 8

3、运行调度

按照产品本身特点,设置了出品和开料之后的毛坯执行MTO的补货策略,所有带卷(包括母料和窄圈)按库存补货的政策,所以肯定销售订单后执行的MRP运算,不会盘算出按库存补货的一对要求,所以需要实施库存中调度的操作: 

统计 9 

 4、执行进货事务

运行调度操作后,系统会按照实际订单需求和预订规则,总计这一次需要购置的物料,并扭转对应的采办报价单:

 统计 10

点开报价单并选择认同订单,接下来选用接过产品,做到采购下单工作。

 统计 11

 统计 12

 5、执行库存活动操作

Odoo绝大部分中坚业务,都会聚在库存操作仪表板中,按照该仪表板中显示的数字顺序,依次完成所有生产过程中物料移动的操作:

统计 13

统计 14

统计 15

统计 16

统计 17

统计 18

听从同等的操作,完成发货步骤。

统计 19 

成功一个单子的划转后,点上图的向右符号,直接打开下一个单据,重复操作即可完成同一个事情的多个单据。

6、完成制作任务

 当物料准备到位后,生产单上的生产按钮直接点亮,可以一直生产: 统计 20

 统计 21

统计 22

特意的,冲压车间的窄卷供应格局,是按库存补货,所以物料不会活动从库存活动到生育岗位,所以生产前要检查一下物料是否可用。 统计 23

7、按工单生产

平料生产由于选择了生产线和包装工序,所以设置了工艺路线,进行生产订单的首个步骤,要经过生产单上的开创工单按钮,创设工序的工单:

统计 24

点上图的工单,会打开该工艺路线的工单列表:

统计 25

先是道工序原料就位,处于就绪状态,打开后得以起来生产:

统计 26

点击起首工作后,系统伊始给这个工单计时,如果中间需要截止工作,点击暂停,然后可以继承工作,直到点击完成,系统会总结实际工作时长,用于实际工作中工时总结,可以将加工成本精确到每一个工单。

统计 27

形成第一道工序后,工单状态变成已完工,颜色变黑色,同时下道工序状态变为就绪,重复下面操作完成第二道工序。

成功有着工序的操作后,成立订单出现标志为成功按钮,点击按钮,就完了了按工单创设的装有操作。

遵照以上操作方法,遵照前边图中所示的一一,就能顺利完成从销售下单到产品出货的闭环业务流程,财务部分暂不做示范。

以这么些为创意点我也搞了一个工具 我取名为tabris脚本工具

开源地址为:https://github.com/yuzd/ClearScript.Manager

(ps:我们有指出虽然提)

特色:

1 包含JtSQL的装有特性

2 利用微软的
ClearScript V8 engine

详细请参考:https://microsoft.github.io/ClearScript/Tutorial/FAQtorial.html?from=timeline&isappinstalled=0

ClearScript很有力可以形成c# 与 JavaScript 互通

3 把成效模块化
近年来已兑现的3个至关首要的模块

  1. 履行http请求处理模块

  2. 日记输出处理模块

  3. 实施sql处理模块.

  4. js代码智能提示tabris模块

统计 28

统计 29

日后想用其他的效应都足以扩张其他模块

 

  1. 代码编写采纳CodeMirror
    ,写js代码智能提示

 

 

下边来一个动图感受下呢

以以下境况为示范

 

 统计 30

 

 

统计 31

 

 统计 32

 

包装的sql log http 三大组件 在编辑器上的不二法门能代码智能提示 

统计 33

 

统计 34

 

统计 35

 

//DB处理器
var db = this.tabris.create('SQL', {
  name:'testorm',
  type:'mysql'
});

//http处理器
var http = this.tabris.create('HTTP', {
  method:'GET'
});

//log处理器
var log = this.tabris.create('LOG', {
  trace:true
});

db.delete('delete from child_district');

//从district表里面获取所有城市的Code
var get_district_sql = "select Code from district";

var district_code_list = db.query(get_district_sql);

for (var index = 0; index < district_code_list.length; index++) {
    getChildDistrictAndInsertToDb(district_code_list[index].Code);
}


//远程获取
function getChildDistrictAndInsertToDb(parentCode){
  log.info(parentCode);
  var re = http.getJson({
    url:'https://fuwu.sf-express.com/service/address/newAddr/getNewSubAddress?parentCode=' + parentCode
  });
  if(!re.subAddressList || !re.subAddressList.length) return;
  for (var index = 0; index < re.subAddressList.length; index++) {
    var child = re.subAddressList[index];
    var insertSql = "insert into child_district (Name,Code,DataChange_LastTime) VALUES('"+ child.distCnName +"','"+ child.distCode +"',now())";
    var insertResult = db.insert(insertSql)
    if(insertResult!=1){
      log.error(child.distCnName + '插入db失败!');
    }else{
      log.info(child.distCnName + '插入db成功!')
    }
  }
}

 

客户端下载

最新版:https://github.com/yuzd/ClearScript.Manager/tree/master/src/Tabris.Winform/Release