【脚本】修正单据错误记录计数时间,解决无法抄表问题
2018-08-27    易林江
1518 0
由于部分员工在错误的系统电脑时间下登记了工单设备计数,导致最终无法正常新建抄表单,利用此脚本可查询出错误时间记录的设备计数相关工单和计数项目,并可完成错误更新时间修正
  • 查询错误单据指令

    先从设备计数记录找出哪天有错误时间更新的单据
    select * from PPM_JobBillDetailNumericAssert  where Assertcode='设备编号' order by jobbillcode 

  • 查询错误计数项目指令

    先从设备的更新记录找出它们最后每台设备的更新时间

    select * from ASM_AssertNumberStatus  where sys4version>'636691461024427405'

  • 修正错误时间指令

    然后根据这一天的单据作为条件,更新这一天所有的设备计数更新时间
    update PPM_JobBillDetailNumericAssert set  sys4version='最后更新时间' where jobbillcode like '%GD-107-160429%' and Assertcode='设备编号'

    或者根据
    单个错误时间更新的设备计数ID来更新时间
    update PPM_JobBillDetailNumericAssert set  sys4version='最后更新时间' where id='F9F9E747-5CD6-423A-B414-2D6A1B68C7AB'

    通过将超出了当前时间的设备更新时间,统一调整为早于当前时间的时间

    update ASM_AssertNumberStatus set  sys4version='最后更新时间' where sys4version>'最后更新时间'


    ----------------------------2020-06-28--解决办法

    select sum(NumberProduce),sum(NumberWaste) from PPM_JobBillDetailNumericAssert  where assertcode='1003' and numberbillcode=''    /*查询设备编号“本轮生产数”和“本轮浪费数”的汇总数*/


    select sum(NumberProduce),sum(NumberWaste) from PPM_JobBillDetailNumericAssert  where assertcode='10031000' and numberbillcode=''    /*查询设备计数项目的“本轮生产数”和“本轮浪费数”的汇总数*/



    select * from ASM_AssertNumberStatus  where assertcode='100-1760'  /*查询设备计数中已记录的“本轮生产”和“本轮浪费”的数值*/


    update  ASM_AssertNumberStatus set Number4Product=''  where assertcode='1003'   /*修正设备计数中的“本轮生产数”与查询的本轮生产汇总数一致,即可*/


    update  ASM_AssertNumberStatus set Number4Product=''  where AssertNumberSpecCode='10031000'   /*如果设备存在多个计数项目,参考修正设备计数项目的“本轮生产数”与查询的本轮生产汇总数一致,即可*/

  • 附加说明

    附件说明:

    一、检查数据库中的表  PPM_JobBillDetailNumericAssert  ,查看该表中的列 sys4version ,看看这一列中,有哪一行的时间与其他行不一致,相差太大,可以将相差太大的那一行时间修改为和其他行一样。

    如:所有的最后更新时间函数为:

    636044612639621221

    636050431675605964

    636094599766923434

    前面的 63604 或 63605 都相差不大,但是突然中间穿插了一个为 636094599766923434,前5位是 63609 ,那么这一行的最后更新时间就不对了,可以将这一行的时间函数修改为:636050431675605964 ,那问题就解决了。

    如:636044612639621221 的时间转换,是利用 636044612639621221 - 621355968000000000 / 10000000 =‘Unix时间戳’

    最后拿“Unix时间戳” 复制到“http://tool.chinaz.com/tools/unixtime.aspx”网站中的‘Unix时间戳’位置上,就可以转换时间格式了


    二、检查表:

    ASM_AssertNumberStatus

    PPM_JobBillDetailNumericAssert

    中的Sys4Version换算后的时间是否为当前时间。
    epoch = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000

该文章对您有用吗?

非常感谢,您的反馈对我们很有价值!

客服电话

4006757966

微信公众号

联系我们

印特3系演示版

申请

印特5系演示版

申请

免费试用

印特软件标准演示版下载申请

请您填写您的一些信息,提交您的申请后,我们会在两个工作日内进行处理,并回复您一封邮件,内附下载链接,请您注意查收。
*
请输入正确的公司名称
*
请输入正确的联络人员
*
请输入正确的联络电话
提交申请
关闭