年度结转
大约 9 分钟weberp开发手册
概述
- 没有成品库存的缸单都不会结转(即前一年度做好的订单、计划准备第二年开年做的都不会被结转到第二年) 结转时沟通好,将括号内的缸单也结转来,第二年就不用重新做了
- 已经结转到第二年的缸单不需要在“白坯领料”页面的中间表格显示,都隐藏掉
- 清空所有待处理数据
- 新达成品发货单中会显示“去年库存”的成品,是通过判断打卷表中的日期,那么要及时更新该日期
- 会将工序产量表的种子重置,导致染厂服务器上的后台服务 data_transmitter 记录的锚点超过当前工序产量表的最大值,从而不推送数据到云端,自然就没有工序推送到客户微信了,要执行下面的脚本和年度结转做同步重置就可以了,所有染厂的服务器上都要执行
# 先清空,再重置。保证可以推送数据到云端
DELETE FROM upload_record WHERE 1=1;
INSERT INTO upload_record
(upload_table, table_iid, update_count)
VALUES
('g_cjflowbilldetailprocess',0,1),('g_jrkbill',0,1)
# 清除两个上传日志表的数据
TRUNCATE TABLE upload_record;
TRUNCATE TABLE upload_process;
必读
- 华宇 - 不要结转染化料和五金仓库(结转工具中这两个仓库是一起结转的)
结转步骤
- 手动备份当前本年度账套的数据库并恢复为前一年账套,例如新一年是2025,新建数据库
pademisaccount(2024),备份数据库pademisaccount并恢复到pademisaccount(2024),并将pademisaccount的备份文件上传到公司NAS路径安装程序\客户资料下对应客户目录下 - 在客户厂内服务器上运行结转用的后台服务
carryout-v.0.0.1.jar,本项目在NAS的路径是安装程序\项目列表\染厂ERP结转后台(执行批处理文件start.bat启动项目),访问地址http://localhost:8085/carryout/,项目中页面年度结转页面可分仓库进行结转 - 修改ERP源码新增上年度账套,之后运行项目依次登录上年度和本年度账套在基础资料中新增、修改数据测试新建账套是否成功,测试打印是否已区分账套:打印计划单(缸单)、打印发货单。ERP源码修改点
// 文件 jdbc-pro.properties 以下一年份新增数据库连接,例如下面的2022修改为2024
#2022年度数据源
jdbc_last_2022_url=jdbc:mysql://localhost:3306/pademisaccount(2022)?userUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
jdbc_username_2022=root
jdbc_password_2022=chanchaw
// 文件 spring-MyBatis.xml 新增下面数据源代码,将2022修改为2024
<!-- 2022年度数据库 -->
<bean id="last2022DataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close" lazy-init="true">
<property name="driverClassName" value="${jdbc_driver}"/>
<property name="url" value="${jdbc_last_2022_url}"/>
<property name="username" value="${jdbc_username_2022}"/>
<property name="password" value="${jdbc_password_2022}"/>
<property name="minIdle" value="${jdbc_minIdle}"/>
<property name="initialSize" value="${jdbc_initialSize}"/>
<property name="maxActive" value="${jdbc_maxTotal}"/>
<property name="maxWait" value="${jdbc_maxWaitMillis}"/>
<property name="queryTimeout" value="${jdbc_defaultQueryTimeout}"/>
<property name="timeBetweenEvictionRunsMillis" value="${jdbc_timeBetweenEvictionRunsMillis}"/>
<property name="minEvictableIdleTimeMillis" value="${jdbc_minEvictableIdleTimeMillis}"/>
<property name="validationQuery" value="${jdbc_validationQuery}"/>
<property name="validationQueryTimeout" value="${jdbc_validationQueryTimeout}"/>
<property name="breakAfterAcquireFailure" value="${jdbc_breakAfterAcquireFailure}"/>
<property name="connectionErrorRetryAttempts" value="${jdbc_connectionErrorRetryAttempts}"/>
<property name="timeBetweenConnectErrorMillis" value="${jdbc_timeBetweenConnectErrorMillis}"/>
<property name="notFullTimeoutRetryCount" value="${jdbc_notFullTimeoutRetryCount}"/>
<property name="removeAbandoned" value="${jdbc_removeAbandoned}"/>
<property name="removeAbandonedTimeout" value="${jdbc_removeAbandonedTimeout}"/>
</bean>
<!-- 2022年度数据源,将2022修改为2024 -->
<entry key="last2022DataSource" value-ref="last2022DataSource"/>
<!-- 文件 AccountEnum.java 中新增去年账套,将2022修改为2024,注意下面代码的6要递增并保证唯一 -->
LASTYEAR_2022("6", "2022年度账套", "last2022DataSource"),
<!-- 使用下面SQL查询到的数据,修改字段 B_Value,在其后面追加上面新增的账套编号7 -->
select * from g_config_onevar where B_GroupName = 'WEB应用_当前账套编号'
<!-- 厂内服务器下面路径的目录 PADEMISimg 修改文件夹名称为 PADEMISimg2024,并新建文件夹 PADEMISimg -->
C:\Program Files\Apache Software Foundation\Tomcat 8.5\webapps\PADEMISimg
<!-- 执行下面SQL语句 -->
TRUNCATE TABLE craftdetail_order;
<!--
编译修改后的源码部署到厂内服务器
依次登录去年账套和新建的账套在:基础资料 > 车牌号 中新增不同的数据
验证在两个账套中的操作互不影响
测试两个账套的打印:计划单、发货单(发货单只要测试上年度账套即可,计划单要测试两个账套)
-->
源码修改点
设置网筒微信表统计打卷产量的主键桩点 天翼云网筒.wechatbarrel.mill.jrkid 设置为0,保证网筒后台项目从0开始统计打卷产量并推送到云端
// jdbc-pro.properties
#2022年度数据源
jdbc_last_2022_url=jdbc:mysql://localhost:3306/pademisaccount(2022)?userUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
jdbc_username_2022=root
jdbc_password_2022=chanchaw
// spring-MyBatis.xml
<!-- 2022年度数据库 -->
```xml
<bean id="last2022DataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close" lazy-init="true">
<property name="driverClassName" value="${jdbc_driver}"/>
<property name="url" value="${jdbc_last_2022_url}"/>
<property name="username" value="${jdbc_username_2022}"/>
<property name="password" value="${jdbc_password_2022}"/>
<property name="minIdle" value="${jdbc_minIdle}"/>
<property name="initialSize" value="${jdbc_initialSize}"/>
<property name="maxActive" value="${jdbc_maxTotal}"/>
<property name="maxWait" value="${jdbc_maxWaitMillis}"/>
<property name="queryTimeout" value="${jdbc_defaultQueryTimeout}"/>
<property name="timeBetweenEvictionRunsMillis" value="${jdbc_timeBetweenEvictionRunsMillis}"/>
<property name="minEvictableIdleTimeMillis" value="${jdbc_minEvictableIdleTimeMillis}"/>
<property name="validationQuery" value="${jdbc_validationQuery}"/>
<property name="validationQueryTimeout" value="${jdbc_validationQueryTimeout}"/>
<property name="breakAfterAcquireFailure" value="${jdbc_breakAfterAcquireFailure}"/>
<property name="connectionErrorRetryAttempts" value="${jdbc_connectionErrorRetryAttempts}"/>
<property name="timeBetweenConnectErrorMillis" value="${jdbc_timeBetweenConnectErrorMillis}"/>
<property name="notFullTimeoutRetryCount" value="${jdbc_notFullTimeoutRetryCount}"/>
<property name="removeAbandoned" value="${jdbc_removeAbandoned}"/>
<property name="removeAbandonedTimeout" value="${jdbc_removeAbandonedTimeout}"/>
</bean>
<!-- 2022年度数据源 -->
<entry key="last2022DataSource" value-ref="last2022DataSource"/>
<!-- 制作2022账套时添加 -->
<bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
<property name="transactionManager" ref="appTransactionManager"/>
</bean>
// 文件 AccountEnum.java 中新增去年账套
LASTYEAR_2022("6", "2022年度账套", "last2022DataSource"),
修改表 g_config_onevar 数据
# 查看数据
select * from g_config_onevar;
# 将上一步 AccountEnum.java 中新增的去年账套添加到待选择账套中
update g_config_onevar set B_Value = concat(B_Value,',7') where B_GroupName='WEB应用_当前账套编号';
1. 新年度账套数据库中清除表 craftdetail_order 中的数据,小张制作的结转工具中没有清除该表的数据,导致新年度账套数据库中该表有数据,新制作计划单时工序中混入上年的工序
2. 从银海染色开始在批量生成计划单页面有显示图片的功能,结转后要将 C:\Program Files\Apache Software Foundation\Tomcat 8.5\webapps\PADEMISimg 修改为 PADEMISimg2022 并为新年度账套制作新的空白的 PADEMISimg 目录,用于新年度保存图片,在开发该图片功能时没有制作进入上年度账套也可查看图片的功能
## 数据结构
## 称料单相关
```sql
SELECT * FROM goodsdye; -- 基础资料染料表
SELECT * FROM craftprintlog; -- 领料单主表
SELECT * FROM craftprintlog_dtl;-- 领料单明细
染色领料
craftprintlog,craftprintlog_dtl
清除数据
/**
2020年9月15日 清空所有数据
*/
USE pademisaccount;
SET foreign_key_checks = 0;
# 删除白坯单据
TRUNCATE bpbilldetail;
TRUNCATE bpbillmain;
# 删除客户订单
TRUNCATE billorderdetail;
TRUNCATE billordermain;
TRUNCATE billordercondition;
# 删除计划单数据
TRUNCATE detailbill_plan;
TRUNCATE craftdetail_plan;
TRUNCATE plan;
TRUNCATE plancondition;
TRUNCATE plan_dtl;
TRUNCATE plan_orderdtl_mapping;
# 删除计划单日志
TRUNCATE plan_daily_record;
# 删除成品发货
TRUNCATE cpbill_audited;
TRUNCATE cpbilldetail;
TRUNCATE cpbillmain;
# 删除打卷数据
TRUNCATE g_jrkbill;
# 删除打卷日志
TRUNCATE g_jrkbill_daily_record;
# 删除产量数据
TRUNCATE g_cjflowbilldetailpeople;
TRUNCATE g_cjflowbilldetailprocess;
TRUNCATE g_jrkbilldraft;
# 删除产量日志
TRUNCATE g_cjflowbilldetailprocess_daily_record;
# 删除废布
TRUNCATE wastecloth;
# 删除五金单据
TRUNCATE metalbilldetail;
TRUNCATE metalbillmain;
# 删除能源录入
TRUNCATE watch_reading_record;
# 处方
TRUNCATE registration_of_receipts;
TRUNCATE registration_of_makereceipts;
TRUNCATE process_mapping;
TRUNCATE specificationtype;
# 清空打卷人员
TRUNCATE g_djpeople;
# 基础资料清除
TRUNCATE contactcompany;
TRUNCATE raw;
# 清除工序
TRUNCATE process;
# 清除工艺
TRUNCATE craftdetail;
# 部门
TRUNCATE department;
INSERT INTO `department` (id, sId, name, pId, serialNO, remark, createDate, status, mark)
VALUES (1, '9999', '全部', NULL, NULL, NULL, NOW(), 1, 0);
INSERT INTO `department` (id, sId, name, pId, serialNO, remark, createDate, status, mark)
VALUES (2, '1001', '翻布', '9999', NULL, '', NOW(), 1, 0);
INSERT INTO `department` (id, sId, name, pId, serialNO, remark, createDate, status, mark)
VALUES (3, '1002', '染色', '9999', NULL, '', NOW(), 1, 0);
INSERT INTO `department` (id, sId, name, pId, serialNO, remark, createDate, status, mark)
VALUES (4, '1003', '定型', '9999', NULL, '', NOW(), 1, 0);
INSERT INTO `department` (id, sId, name, pId, serialNO, remark, createDate, status, mark)
VALUES (5, '1004', '印花', '9999', NULL, '', NOW(), 1, 0);
INSERT INTO `department` (id, sId, name, pId, serialNO, remark, createDate, status, mark)
VALUES (6, '1005', '后整', '9999', NULL, '', NOW(), 1, 0);
INSERT INTO `department` (id, sId, name, pId, serialNO, remark, createDate, status, mark)
VALUES (7, '8899', '质检', '9999', NULL, '', NOW(), 1, 0);
INSERT INTO `department` (id, sId, name, pId, serialNO, remark, createDate, status, mark)
VALUES (8, '007', '装卸', '9999', NULL, '', NOW(), 1, 0);
# 清空员工
TRUNCATE employee;
# 清空网格记忆配置
TRUNCATE deploy;
# 清空微信消息
TRUNCATE sys_wechatuserauth;
# 清空人员对应角色
TRUNCATE sys_role_user;
# 清空用户
TRUNCATE user;
# 建立超级管理员用户
INSERT INTO user (sId, name, nickName, password, address, remark)
VALUES (1000, '超级管理员', 'Administrator', 'xdf123456', '常熟市新东方', '管理员账户,此账户为开发人员使用');
# 为超级用户赋予权限
INSERT INTO sys_role_user (userSid, roleSid, remark)
VALUES (1000, 100, '自动添加超级管理员权限');
# 清空班组
TRUNCATE class;
# 清空班组工序与映射
TRUNCATE class_pro;
# 清空色布
TRUNCATE colorclothcategory;
# 清空单价套用
TRUNCATE editprice;
TRUNCATE editpricedetail;
# 清除机台
TRUNCATE machinetype;
TRUNCATE machine_category;
# 清空五金
TRUNCATE metaltype;
TRUNCATE metal_category;
# 清空责任部门
TRUNCATE dutydepartment;
# 清除工艺
TRUNCATE craftmain;
INSERT INTO craftmain (sid, name)
VALUES (1, '染色'),
(2, '圆网'),
(3, '平网'),
(4, '染色印花');
# 清空白坯
TRUNCATE greyfabric;
TRUNCATE greyfabrictype;
# 清空车牌号装卸工
TRUNCATE plate;
TRUNCATE zxg;
# 清除染料助剂
TRUNCATE goodsdye;
# 清除染料单据
TRUNCATE goodsdyebillmain;
TRUNCATE goodsdyebilldetail;
# 清除染色小工序
TRUNCATE g_yrprocess;
# 清除微信推送
TRUNCATE sys_wechatuserauth;
# 清除染色印花处方单领料单
TRUNCATE craftcolor;
TRUNCATE craftcolor_dtl;
TRUNCATE craftprintlog;
TRUNCATE craftprintlog_dtl;
TRUNCATE craft_printing;
TRUNCATE craft_printing_dtl;
TRUNCATE craft_printing_printlog;
TRUNCATE craft_printing_printlog_dtl;
SET FOREIGN_KEY_CHECKS = 1;
# 结束
清除所有单据数据
-- use pademisaccount;
SET foreign_key_checks = 0;
# 删除白坯数据
TRUNCATE bpbilldetail;
TRUNCATE bpbillmain;
# 删除订单数据
TRUNCATE billorderdetail;
TRUNCATE billorderdetail;
TRUNCATE billordercondition;
# 删除计划单数据
TRUNCATE detailbill_plan;
TRUNCATE craftdetail_plan;
TRUNCATE plan;
TRUNCATE plancondition;
TRUNCATE plan_dtl;
TRUNCATE plan_orderdtl_mapping;
# 删除成品数据
TRUNCATE cpbill_audited;
TRUNCATE cpbilldetail;
TRUNCATE cpbillmain;
# 删除打卷数据
TRUNCATE g_jrkbill;
# 删除产量数据
TRUNCATE g_cjflowbilldetailpeople;
TRUNCATE g_cjflowbilldetailprocess;
TRUNCATE g_jrkbilldraft;
TRUNCATE g_djpeople;
# 删除废布
TRUNCATE wastecloth;
# 配方
TRUNCATE craftcolor;
TRUNCATE craftcolor_dtl;
TRUNCATE craftprintlog;
TRUNCATE craftprintlog_dtl;
# 五金
TRUNCATE metalbilldetail;
TRUNCATE metalbillmain;
# 处方
TRUNCATE registration_of_receipts;
TRUNCATE registration_of_makereceipts;
# 染料
TRUNCATE craftcolor;
TRUNCATE craftcolor_dtl;
TRUNCATE craftprintlog;
TRUNCATE craftprintlog_dtl;
# 印花
TRUNCATE craft_printing;
TRUNCATE craft_printing_dtl;
TRUNCATE craft_printing_printlog;
TRUNCATE craft_printing_printlog_dtl;
# 色号登记
TRUNCATE color_register;
# 结束
成品与打卷
缸单工序表 craftdetail_plan,基础资料的工序表是 process,查询获取生产环境下所有缸单的最后一道工序的SQL
# 查看所有缸单最后一道工序
SELECT DISTINCT name
FROM (
SELECT a.*,b.processId,p.name
FROM (
select max(sId) AS sId,vatNum
from craftdetail_plan where 1=1
GROUP BY vatNum) a
LEFT JOIN craftdetail_plan b
ON a.sId = b.sId
LEFT JOIN process p ON b.processId = p.sId) a1;
- 打卷客户端中有“完工刷卡”,如果缸单工序中有不在车间管理触摸屏上刷卡的工序(此类工序一般为带有“打卷”属性的工序),那么需要在此处刷卡,每个缸单都要刷卡,微信服务号上的进度才能达到100%。如果缸单工序中最后一道是“成品定型”,即所有工序都在车间管理触摸屏上刷卡则可以不使用本功能。 原本的设计是上面的逻辑,后来在2021年初打卷客户端中追加制作了功能在入库时会向缸单的最后一道工序上写标记用来促使进度显示为100%。但仍然存在一个颜色下的多个缸单只有一张缸单进行打卷,其他缸单的进度显示就有问题了,所以“完工刷卡”功能还是要使用,以便让所有缸单的进度都可以走到100%
- 根据上面的情况最好的使用方案是工艺中不要开不在车间管理触摸屏刷卡的工序,即保证缸单的所有工序都在产量触摸屏上刷卡,就可以简化打卷触摸屏的操作 - 不用在“完工刷卡”上刷卡了。
