新盛针纺
更新注意点
- 计划单报表追加字段要放到后面。开回修缸单时会选择所属原始缸单,弹出该报表将原计划单主键填充到回修单的外键字段上,如果新增的字段在计划单报表主键之前则会填充错误,导致回修缸单所属指向错误,进而导致折率表不对
计划单
工序工艺及发货备注
计划单开出的工序会通过表 G_FHProcessConvertEx 的映射打印到发货单上,本软件是最老版本的,成品仓库的逻辑是:打卷 > 仓库中手动批量入库 > 成品发货 在生成成品入库单时通过该表的映射关系将特殊工序说明写入备注中,生成发货单时会打印在备注中(其中并没有用到计划单要素 “助剂文本”)。所以要注意有新增工序的话是否需要在本表中填写映射关系打印到发货单备注上。
删除工序
删除以前的老工序是不影响产量的,下面是计划单中删除工序的逻辑

印染缸重量表
对象编号 = 190044 源码窗体 = frmModReportRS 数据源存储过程 = S_GetYRReportQtyGang
染缸刷卡触摸屏客户端
染缸缸号按钮自动构建,缸号名称来自表G_YRGang,ERP端修改缸号后 要记得立即重启触摸屏客户端,否则缸号没有及时更新导致保存产量 的缸号和ERP缸号表中不对应,那么产量表中就没有产量
成品仓库
外键关系
打卷数据入库后需要在ERP端做成品入库,然后才可以制作成品出库单
1. 成品入库单,单据对象编号=120007
2. 成品出库单,单据对象编号=120008
# 下面是 成品出库单 > 成品入库单 > 打卷正式表 的外键关系
成品出库单明细表.B_BelongItemID = 成品入库单明细表.B_ItemID
成品入库单明细表.B_BelongItemID = G_JRKBill.B_ItemID
统计成品入库数量
-- 统计成品入库数量
declare @sehao varchar(100)
set @sehao = '244305'
select a.b_id,a.B_CodeID,CONVERT(varchar(100), a.B_Date, 23) as b_date,
count(*) as ps,sum(b.b_qty) as b_qty
from G_BillCP a left outer join G_BillDetailCP b on a.b_id = b.B_ID
where a.B_ObjectID = '120007' and b.B_BelongItemID in (
select a.B_ItemID
from g_jrkbill a
left outer join (
select a1.*,b1.B_SeHao from G_CJFlowBill a1 left outer join G_CJBill b1 on a1.B_BIDCJBill = b1.B_ID
where B_BIDCJBill in (
select b_id from G_CJBill where b_client='晟尧' and B_SeHao=@sehao
)
) b on a.b_id = b.b_id
where a.b_id in (
select b_id from G_CJFlowBill where B_BIDCJBill in (
select b_id from G_CJBill where b_client='晟尧' and B_SeHao=@sehao
)
)
)
group by a.b_id,a.B_CodeID,CONVERT(varchar(100), a.B_Date, 23)
order by CONVERT(varchar(100), a.B_Date, 23)
按照色号统计成品入库数
-- 按照色号统计打卷入库数量
declare @sehao varchar(100)
set @sehao = '244305'
select b.B_BIDCJBill,CONVERT(varchar(100), a.B_DTRK, 23) as B_DTRK,
count(*) as ps,sum(a.B_GJ) as b_gj,b.B_SeHao
from g_jrkbill a
left outer join (
select a1.*,b1.B_SeHao from G_CJFlowBill a1 left outer join G_CJBill b1 on a1.B_BIDCJBill = b1.B_ID
where B_BIDCJBill in (
select b_id from G_CJBill where b_client='晟尧' and B_SeHao=@sehao
)
) b on a.b_id = b.b_id
where a.b_id in (
select b_id from G_CJFlowBill where B_BIDCJBill in (
select b_id from G_CJBill where b_client='晟尧' and B_SeHao=@sehao
)
)
group by b.B_BIDCJBill,CONVERT(varchar(100), a.B_DTRK, 23),b.B_SeHao
order by CONVERT(varchar(100), a.B_DTRK, 23)
成品折率表
业务逻辑:发货之后才能看到折率数字
对象编号 = 130056
打印报表 = 220065
存储过程 = S_GetCPZLDateEx
计划单对应的打卷、入库、发货数量
-- 查看指定计划单的打卷、入库、出库数量
-- 下面的变量 @JHDPK 赋值为计划单主键值
DECLARE @JHDPK INT
SET @JHDPK=169129
SELECT a.B_ID, a.B_Client, a.B_PinMing, a.B_MenFu,a.B_SeHao, a.B_Color, a.B_PiShu AS B_PS_JH,a.B_Qty AS B_GJ_JH,
b.B_PS AS B_PS_DJ, b.B_GJ AS B_GJ_DJ,
c.B_PS AS B_PS_RK, c.B_GJ AS B_GJ_RK,
d.B_PS AS B_PS_CK, d.B_GJ AS B_GJ_CK
FROM G_CJBill AS a
LEFT OUTER JOIN (-- 成品打卷数量
SELECT @JHDPK AS B_JHDPK,COUNT(*) AS B_PS,SUM(B_GJ) AS B_GJ
FROM G_JRKBill AS gj WHERE gj.B_ID IN ( SELECT B_ID FROM G_CJFlowBill AS gcb WHERE gcb.B_BIDCJBill =@JHDPK )
) b
ON a.B_ID = b.B_JHDPK
LEFT OUTER JOIN(-- 成品入库数量
SELECT @JHDPK AS B_JHDPK,COUNT(*) AS B_PS,SUM(B_Qty) AS B_GJ
FROM G_BillDetailCP AS gbdc WHERE gbdc.B_BelongItemID IN (
SELECT gj.B_ItemID FROM G_JRKBill AS gj WHERE gj.B_ID IN ( SELECT B_ID FROM G_CJFlowBill AS gcb WHERE gcb.B_BIDCJBill=@JHDPK )
)
) c
ON a.B_ID = c.B_JHDPK
LEFT OUTER JOIN ( -- 成品出库数量
SELECT @JHDPK AS B_JHDPK,COUNT(*) AS B_PS,SUM(B_Qty) AS B_GJ
FROM G_BillDetailCP AS gbdc WHERE gbdc.B_BelongItemID IN (
SELECT gbdc.B_ItemID
FROM G_BillDetailCP AS gbdc WHERE gbdc.B_BelongItemID IN (
SELECT gj.B_ItemID FROM G_JRKBill AS gj WHERE gj.B_ID IN ( SELECT B_ID FROM G_CJFlowBill AS gcb WHERE gcb.B_BIDCJBill=@JHDPK )
))
) d
ON a.B_ID=d.B_JHDPK
WHERE a.B_ID=@JHDPK
删除计划单对应的入库、发货数据
-- 根据计划单主键值删除对应的成品发货、入库单据
-- 下面的变量 @jhdpk 赋值计划单主键值
DECLARE @jhdpk INT
DECLARE @TableRK TABLE (B_ID INT)
DECLARE @TableCK TABLE (B_ID INT)
SET @jhdpk=169129
-- 保存对应成品入库单主表主键值
INSERT INTO @TableRK
SELECT DISTINCT gbdc.B_ID FROM G_BillDetailCP AS gbdc WHERE gbdc.B_BelongItemID IN(
SELECT B_ItemID FROM G_JRKBill AS gj WHERE gj.B_ID IN (
SELECT B_ID FROM G_CJFlowBill AS gcb WHERE gcb.B_BIDCJBill= @jhdpk
)
)
-- 保存对应成品出库单主表主键值
INSERT INTO @TableCK
SELECT DISTINCT gbdc.B_ID
FROM G_BillDetailCP AS gbdc WHERE gbdc.B_BelongItemID IN (
SELECT gbdc.B_ItemID FROM G_BillDetailCP AS gbdc WHERE gbdc.B_BelongItemID IN(
SELECT B_ItemID FROM G_JRKBill AS gj WHERE gj.B_ID IN (
SELECT B_ID FROM G_CJFlowBill AS gcb WHERE gcb.B_BIDCJBill= @jhdpk
)
))
-- 删除出库单据
DELETE FROM G_BillDetailCP WHERE B_ID IN (SELECT B_ID FROM @TableCK)
DELETE FROM G_BillCP WHERE B_ID IN (SELECT B_ID FROM @TableCK)
-- 删除入库单据
DELETE FROM G_BillDetailCP WHERE B_ID IN (SELECT B_ID FROM @TableRK)
DELETE FROM G_BillCP WHERE B_ID IN (SELECT B_ID FROM @TableRK)
成品入库单没有对应计划单主键值的记录
SELECT * FROM G_BillCP AS gbc WHERE gbc.B_BelongJHD IS NULL
AND gbc.B_ObjectID='120007'
修复没有对应计划单的成品入库单
--根据厂代号填充字段 B_BelongJHD
UPDATE G_BillCP SET B_BelongJHD =G_CJBill.B_ID
FROM G_BillCP
LEFT OUTER JOIN G_CJBill
ON G_BillCP.B_ChangDaiHao =G_CJBill.B_ChangDaiHao
WHERE G_BillCP.B_BelongJHD IS NULL AND G_BillCP.B_ObjectID='120007'
流量计
流量计触摸屏电脑和ERP不在一个局域网,该电脑长期连接外网,所以在本机上部署了 Java 环境以及项目 flux_trans ,同时远程桌面端口修改为19833并且将 server 关闭。
仓库VPN

创建了3个账号:xszfserver,vpnadmin,vpnuser,密码都一样是最近一直使用的公司名+数字,配置的IP地址按照前面的顺序依次是:172.100.1.101,172.100.1.102,172.100.1.103,第一个用于新盛针纺服务器,第二个备用,第三个是仓库新电脑使用。自然VPN路由器的IP是 172.100.1.100,即仓库的电信专线的路由器在VPN中的IP地址 VPN用户列表: 
智能硬件
电表
概述
仪表通讯资料在180的阿里云盘 客户资料 -> 新盛针纺 -> 智能硬件 -> 电表 下的 “2.13 SE96Y-SE72Y用户手册” 材料中给出的读取寄存器数据的指令中校验码是错误的,完整的读取指令是:01030006000625C9。测试时只接受到了响应信息0,由于表没有走字,无法确认是否正确读取。 下面是电表的寄存器地址:

要查询的用电量寄存器的起始地址是 0x2E - 正向有功电能 - 从电网流到用户使用的电量 反向有功电能是用户发送到电网的电量。“数据长度”是从起始地址读取的数据长度,文档中使用的 word 描述不准确,实际是2个字节而不是2个WORD,二进制中2个WORD相当于4个字节了。 响应来的数据 010304404AF1AA0BCA 01 - 该地址码的设备响应来的数据 03 - 发送指令使用的03这里就是03,如果发送时用了04这里就是04 04 - 从该字节往后的多少长度为数据的长度,该数据是16进制 404AF1AA - 两个字符表示一个字节,根据前面的04,这里的8个字符表示4个字节,即是从设备收到的数据 0BCA - CRC校验码 解析数据 404AF1AA 要使用 IEEE 754 浮点数转换规则
部署说明
解析数据的 dll 项目是 https://gitee.com/chanchaw/vbProjTools/tree/master/xszfdb 2022年5月9日 09:31:57测试后 dll 文件的版本号是:1.0.0.4 在目录 vbProjTools/xszfdb/source 下找到该文件 使用方法:
Private xszfdb1 As New xszfdb
'获取请求用电量的指令,用于发送到指定地址码的设备
'com控件发送该指令获取数据
dim instru as string
instru = xszfdb1.getInstruction([16进制地址码字符串])
'解析数据
xszfdb1.resolveData [com组件响应来的数据(字符串)]
'获取数据
dim ydl as single
ydl = xszfdb1.forwardEnergy
蒸汽表
2022年5月9日 13:13:10 新买的蒸汽表 - 上海恒业自控阀门制造有限公司的型号是 LUGB-125。型号图片:

说明书上的通讯协议如下图


之前买的蒸汽表,已经做好的协议解析,接收到的数据高低错位顺序是 1032.即之前是的高低错位,今日新的蒸汽表是寄存器错位。
更新日志
2021年7月13日 17:36:09
从东芝移动硬盘拷贝到本地虚拟机编译客户端“新盛针纺织(印花查询系统).exe”,此前已经在厂里服务器制作对应的子系统,其他没有业务逻辑上的修改。
业务疑难
- 每缸一张缸单,4车中1车回修,从第三道工序开始要按照3车的重量计算产量
- 白坯入库手动输入品名
- 之前习惯了一车一张,现在更换为一缸一张需要拉车子,场地小不好拉车子
错误与提示
硬件标识与允许工序名不匹配
车间触摸屏刷卡时提示如下:
需要在表 [G_CJHardWarePerProcess] 中注册计算机名和工序的映射关系,然后触摸屏刷卡客户端要重启
产量触摸屏
中间重量车号
select * from G_CJCHZJZLSet
实际公斤
刷卡客户端启动时候查找数据库中的数据 Select * From G_CJProcess Where isnull(B_QtyStandard,0)=1 找到要求录入实际公斤数的工序名称,这里要保证只有一个该类型的工序。当客户端上保存该工序的产量时右边的录入实际公斤数的按钮会亮起(可用),相反,其他工序都不可用。
员工产量表中优先取实际公斤数,如果没有则以计划公斤数为产量 - 流程卡产量表的逻辑
触摸屏新增工序

