前端:
前端设计页面
前端代码
protected override void DoAdd()
{
if (ActiveRow != null)
{
if (MessageUtil.ShowYesNoAndQuestion("是否上料?") == DialogResult.No)
return;
var ccp = new CoreClientParam();
ccp.ServerName = "com.steering.mes.mcp.Mch.FrmMcpLoading";
ccp.MethodName = "DoAdd";
ccp.ServerParams = new object[]
{
ActiveRow.HeatPlanNo,
ActiveRow.HeatPlanSqe,
JSONFormat.Format(Value), Gx,
mchControlBase1.ScrappedList.Select(JSONFormat.Format).ToList(),
mchControlBase1.SuspiciousList.Select(JSONFormat.Format).ToList()
};
ccp = ExecuteNonQuery(ccp, CoreInvokeType.Internal);
if (ccp.ReturnCode != -1)
{
MessageUtil.ShowTips(ccp.ReturnInfo);
if (ccp.ReturnInfo.Equals("上料成功!"))
{
Query();
doOver();
}
}
}
}
可以看到
1、前后端的参数是魔法约定。
2、前端的主要工作是拼装sql。
我们再来看一条复杂一点的前端代码
private void QueryData()
{
List<MatGpMEntity> listSource = null;
if (chkStoveNo.Checked && string.IsNullOrEmpty(this.txtStoveNo.Text))
{
MessageUtil.ShowTips("请输入熔炼炉号!");
this.txtStoveNo.Focus();
return;
}
if (chkJudgeNo.Checked && string.IsNullOrEmpty(this.txtJudgeNo.Text))
{
MessageUtil.ShowTips("请输入判定炉号!");
this.txtJudgeNo.Focus();
return;
}
string stoveNo = "";
string judgeNo = "";
string orderNo = "";
string grade = "";
string dimter = "";
string sourceName = "";
ArrayList list = new ArrayList();
string strSql = "";
string strGroup = "";
string strOut = "";
if (chkStoveNo.Checked)
{
stoveNo = this.txtStoveNo.Text.Trim();
strOut += " AND T1.STOVE_NO = '" + stoveNo + "'";
}
if(chkJudgeNo.Checked)
{
judgeNo = this.txtJudgeNo.Text.Trim();
strOut += " AND T1.JUDGE_STOVE_NO = '" + judgeNo + "'";
}
if (chkOrder.Checked)
{
orderNo = this.txtOrder.Text.Trim();
strOut += " AND S1.ORDER_NO||'/'||S1.ORDER_SEQ LIKE '%" + orderNo + "'";
}
if(chkSource.Checked)
{
sourceName = this.txtSource.Text.Trim();
strOut += " AND T1.SOURE_NAME LIKE '%" + sourceName + "'";
}
if(chkDimter.Checked)
{
dimter = this.txtDimter.Text.Trim();
strOut += " AND T1.DIMATER LIKE '%" + dimter + "'";
}
if(chkGrade.Checked)
{
grade = this.txtGrade.Text.Trim();
strOut += " AND T1.GRADENAME LIKE '%" + grade + "'";
}
string strKey = "";
CheckBox item;
for (int i = 0; i < this.myCheckedListBox1.Controls.Count; i++)
{
try
{
item = this.myCheckedListBox1.Controls[i] as CheckBox;
if (item != null && item.Checked)
{
strKey = item.Name;
if (strKey.Equals("StoveNo"))
{
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "T1.STOVE_NO";
strGroup += (string.IsNullOrEmpty(strGroup) ? "" : ",") + "T1.STOVE_NO";
}
else if (strKey.Equals("PlanMemo"))
{
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "MAX(T1.PLAN_MEMO) PLAN_MEMO";
// strGroup += (string.IsNullOrEmpty(strGroup) ? "" : ",") + "MAX(T1.PLAN_MEMO) PLAN_MEMO";
}
else if (strKey.Equals("JudgeStoveNoLg"))
{
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "T1.JUDGE_STOVE_NO_LG";
strGroup += (string.IsNullOrEmpty(strGroup) ? "" : ",") + "T1.JUDGE_STOVE_NO_LG";
}
else if (strKey.Equals("JudgeStoveNo"))
{
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "T1.JUDGE_STOVE_NO";
strGroup += (string.IsNullOrEmpty(strGroup) ? "" : ",") + "T1.JUDGE_STOVE_NO";
}
else if (strKey.Equals("MaterialName"))
{
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "T1.MATERIAL_NAME";
strGroup += (string.IsNullOrEmpty(strGroup) ? "" : ",") + "T1.MATERIAL_NAME";
}
else if (strKey.Equals("Gradename"))
{
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "T1.GRADENAME";
strGroup += (string.IsNullOrEmpty(strGroup) ? "" : ",") + "T1.GRADENAME";
}
else if (strKey.Equals("StdName"))
{
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "T1.STD_NAME";
strGroup += (string.IsNullOrEmpty(strGroup) ? "" : ",") + "T1.STD_NAME";
}
else if (strKey.Equals("Dimater"))
{
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "T1.DIMATER";
strGroup += (string.IsNullOrEmpty(strGroup) ? "" : ",") + "T1.DIMATER";
}
else if (strKey.Equals("FixNum"))
{
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "T1.FIX_NUM";
strGroup += (string.IsNullOrEmpty(strGroup) ? "" : ",") + "T1.FIX_NUM";
}
else if (strKey.Equals("FixLen"))
{
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "T1.FIX_LEN";
strGroup += (string.IsNullOrEmpty(strGroup) ? "" : ",") + "T1.FIX_LEN";
}
else if (strKey.Equals("ActLen"))
{
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "T1.ACT_LEN";
strGroup += (string.IsNullOrEmpty(strGroup) ? "" : ",") + "T1.ACT_LEN";
}
else if (strKey.Equals("CutNum1"))
{
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "ROUND(T1.ACT_LEN/2,1)CUT_NUM1";
strGroup += (string.IsNullOrEmpty(strGroup) ? "" : ",") + "ROUND(T1.ACT_LEN/2,1)";
}
else if (strKey.Equals("CutNum2"))
{
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "ROUND(T1.ACT_LEN/3,1)CUT_NUM2";
strGroup += (string.IsNullOrEmpty(strGroup) ? "" : ",") + "ROUND(T1.ACT_LEN/3,1)";
}
else if (strKey.Equals("CutNum3"))
{
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "ROUND(T1.ACT_LEN/4,1)CUT_NUM3";
strGroup += (string.IsNullOrEmpty(strGroup) ? "" : ",") + "ROUND(T1.ACT_LEN/4,1)";
}
else if (strKey.Equals("CutNum4"))
{
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "ROUND(T1.ACT_LEN/5,1)CUT_NUM4";
strGroup += (string.IsNullOrEmpty(strGroup) ? "" : ",") + "ROUND(T1.ACT_LEN/5,1)";
}
else if (strKey.Equals("BelongName"))
{
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "T1.BELONG_NAME";
strGroup += (string.IsNullOrEmpty(strGroup) ? "" : ",") + "T1.BELONG_NAME";
}
else if (strKey.Equals("JudgeResultCode"))
{
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "(SELECT T2.BASENAME FROM COM_BASE_INFO T2 WHERE T2.BASECODE = T1.JUDGE_RESULT_CODE )JUDGE_RESULT_CODE";
strGroup += (string.IsNullOrEmpty(strGroup) ? "" : ",") + "T1.JUDGE_RESULT_CODE";
}
else if (strKey.Equals("InstockTime"))
{
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "MAX(TO_CHAR(T1.INSTOCK_TIME,'YYYY-MM-DD HH24:MI:SS'))INSTOCK_TIME";
//strGroup += (string.IsNullOrEmpty(strGroup) ? "" : ",") + "T1.JUDGE_RESULT_CODE";
}
else if (strKey.Equals("ProductFlag"))
{
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "T1.PRODUCT_FLAG";
strGroup += (string.IsNullOrEmpty(strGroup) ? "" : ",") + "T1.PRODUCT_FLAG";
}
else if (strKey.Equals("MatStatus"))
{
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "T1.MAT_STATUS";
strGroup += (string.IsNullOrEmpty(strGroup) ? "" : ",") + "T1.MAT_STATUS";
}
else if (strKey.Equals("PlineName"))
{
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "T1.PLINE_NAME";
strGroup += (string.IsNullOrEmpty(strGroup) ? "" : ",") + "T1.PLINE_NAME";
}
else if (strKey.Equals("QcmStaus"))
{
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "DECODE(T1.QCM_STAUS,'00','合格','11','待处理','22','废品')QCM_STAUS";
strGroup += (string.IsNullOrEmpty(strGroup) ? "" : ",") + "T1.QCM_STAUS";
}
else if (strKey.Equals("StorageName"))
{
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "(SELECT T3.STORAGE_NAME FROM YDM_BS_STORAGE T3 WHERE T3.STORAGE_NO = T2.STORAGE_NO)STORAGE_NAME";
strGroup += (string.IsNullOrEmpty(strGroup) ? "" : ",") + "T2.STORAGE_NO";
}
else if (strKey.Equals("LocationName"))
{
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "T2.LOCATION_NAME";
strGroup += (string.IsNullOrEmpty(strGroup) ? "" : ",") + "T2.LOCATION_NAME";
}
else if (strKey.Equals("LaryNo"))
{
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "T2.LARY_NO";
strGroup += (string.IsNullOrEmpty(strGroup) ? "" : ",") + "T2.LARY_NO";
}
else if (strKey.Equals("OrderNo"))
{
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "S1.ORDER_NO||'/'||S1.ORDER_SEQ AS ORDER_NO";
strGroup += (string.IsNullOrEmpty(strGroup) ? "" : ",") + "S1.ORDER_NO,S1.ORDER_SEQ";
}
//else if (strKey.Equals("QcmMemo"))
//{
// strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "MAX((SELECT T.MEMO FROM QCM_GP_JUDGE_APPLY T WHERE T.JUGDE_APPLY_CODE || T.JUGDE_APPLY_SQE = T1.JUGDE_APPLY_CODE GROUP BY T.JUGDE_APPLY_CODE,T.JUGDE_APPLY_SQE,T.MEMO))QCM_MEMO";
// //strGroup += (string.IsNullOrEmpty(strGroup) ? "" : ",") + "S1.ORDER_NO,S1.ORDER_SEQ";
//}
//else if (strKey.Equals("JudgeMemo"))
//{
// strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "MAX((SELECT T.JUDGE_MEMO FROM QCM_GP_JUDGE_APPLY T WHERE T.JUGDE_APPLY_CODE || T.JUGDE_APPLY_SQE = T1.JUGDE_APPLY_CODE GROUP BY T.JUGDE_APPLY_CODE,T.JUGDE_APPLY_SQE,T.JUDGE_MEMO))JUDGE_MEMO";
// //strGroup += (string.IsNullOrEmpty(strGroup) ? "" : ",") + "S1.ORDER_NO,S1.ORDER_SEQ";
//}
else if (strKey.Equals("PlineNameNext"))
{
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "MAX((SELECT S1.PLINE_NAME FROM PLN_ORDER_ZG_S S1 WHERE S1.PRO_PLAN_ID = T1.PRO_PLAN_ID_ZG AND S1.GX_PLAN_NO = T1.GX_PLAN_NO_ZG))PLINE_NAME_NEXT";
}
else if (strKey.Equals("PlanTimeB"))
{
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "MAX(S1.PLAN_TIME_B) PLAN_TIME_B";
}else if(strKey.Equals("Memo"))
{
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "T1.MEMO";
strGroup += (string.IsNullOrEmpty(strGroup) ? "" : ",") + "T1.MEMO";
}else if(strKey.Equals("SoureName"))
{
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "T1.SOURE_NAME";
strGroup += (string.IsNullOrEmpty(strGroup) ? "" : ",") + "T1.SOURE_NAME";
}
else if (strKey.Equals("IsDealer"))
{
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + "DECODE(T1.IS_DEALER,'0','自用','1','双经销','2','来料加工','3','定销订购')IS_DEALER";
strGroup += (string.IsNullOrEmpty(strGroup) ? "" : ",") + "T1.IS_DEALER";
}
else if(strKey.Equals("BackFlag"))
{
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",") + " DECODE(T1.BACK_FLAG,'0','正常坯','1','回炉坯','2','套尺坯','3','掉队坯')BACK_FLAG";
strGroup += (string.IsNullOrEmpty(strGroup) ? "" : ",") + "T1.BACK_FLAG";
}
else
{
strSql += (string.IsNullOrEmpty(strSql) ? "t." : ",t.") + strKey;
strGroup += (string.IsNullOrEmpty(strGroup) ? "t." : ",t.") + strKey;
}
}
}
catch { }
}
strSql += (string.IsNullOrEmpty(strSql) ? "" : ",");
strGroup = (string.IsNullOrEmpty(strGroup) ? "" : "group by ") + strGroup;
string _sql = strOut + strGroup;
list.Add(strSql);
list.Add(strOut);
list.Add(strGroup);
switch (this.CustomInfo)
{
case "STORAGE_NO":
listSource = EntityHelper.GetData<MatGpMEntity>(
"Core.LgMes.Server.Stuffmanage.Report.FrmStoreSummary.queryData", new object[] { list, arr }, this.ob);
break;
case "BELONG_CODE":
listSource = EntityHelper.GetData<MatGpMEntity>(
"Core.LgMes.Server.Stuffmanage.Report.FrmStoreSummary.queryDataBelong", new object[] { list, belongArr }, this.ob);
break;
case "120501":
listSource = EntityHelper.GetData<MatGpMEntity>(
"Core.LgMes.Server.Stuffmanage.Report.FrmStoreSummary.queryDataAll", new object[] { list,this.CustomInfo}, this.ob);
break;
case "120504":
listSource = EntityHelper.GetData<MatGpMEntity>(
"Core.LgMes.Server.Stuffmanage.Report.FrmStoreSummary.queryDataAll", new object[] { list, this.CustomInfo }, this.ob);
break;
}
MatGpMEntitybindingSource.DataSource = listSource;
bool bContains = false, bChecked = false;
for (int i = 0; i < this.ultraGrid1.DisplayLayout.Bands[0].Columns.Count; i++)
{
try
{
bContains = false;
strKey = this.ultraGrid1.DisplayLayout.Bands[0].Columns[i].Key;
for (int j = 0; j < this.myCheckedListBox1.Controls.Count; j++)
{
try
{
item = this.myCheckedListBox1.Controls[j] as CheckBox;
if (item.Name.Equals(strKey))
{
bContains = true;
bChecked = item.Checked;
break;
}
}
catch { }
}
if (bContains)
{
this.ultraGrid1.DisplayLayout.Bands[0].Columns[i].Hidden = !bChecked;
}
}
catch { }
}
this.SetStaticsInfo();
CommonMethod.SetGridSumArea(this.ultraGrid1);
}
前端不盘逻辑,全是拼装sql,难以理解,并且完全无法进行后端单元测试
后端代码
public CoreReturnObject DoAdd(String HeatPlanNo, String Sqe1, String load,
String gx, ArrayList<String> ScrappedList,
ArrayList<String> SuspiciousList) {
CoreReturnObject core = new CoreReturnObject();
Connection connection = this.getDao(CoreConstantData.sysbeanstr)
.getConnection();
// TZH 24.4.24 注销物流接口
// Connection connection2 = this.getDao("TmsDao").getConnection();
PreparedStatement psta = null;
Date now = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss", Locale.CHINA);
SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyyMMdd",
Locale.CHINA);
SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyyMM",
Locale.CHINA);
String systime = dateFormat.format(now);
String BalYearMothDay = dateFormat1.format(now);
String BalYearMoth = ""; //改25号结转
try {
connection.setAutoCommit(false); //
// TZH 24.4.24 注销物流接口
// connection2.setAutoCommit(false); // 取消自动提交事务
String addport = CoreXmlSqlParsersFactory
.getSql("FrmMcpLoading.AddPortNew");// 新增管号队列
PreparedStatement patsport = connection.prepareStatement(addport);
String addOut = CoreXmlSqlParsersFactory
.getSql("FrmMcpLoading.AddOutList");// 新增出库记录
PreparedStatement patsAddOut = connection.prepareStatement(addOut);
String addOutlist = CoreXmlSqlParsersFactory
.getSql("FrmMcpLoading.AddOutListQuan");// 新增产权出库
PreparedStatement patsAddOutlist = connection
.prepareStatement(addOutlist);
String sqlAdd = CoreXmlSqlParsersFactory
.getSql("FrmMcpLoading.AddLoadResult");// 新增上料实绩
PreparedStatement patAdd = connection.prepareStatement(sqlAdd);
String sqlupdate = CoreXmlSqlParsersFactory
.getSql("FrmMcpLoading.updatePlnZyRclM");// 修改加工计划表从表的实际上料支吨
PreparedStatement patupdate = connection
.prepareStatement(sqlupdate);
String sqlupdate2 = CoreXmlSqlParsersFactory
.getSql("FrmMcpLoading.updatePlnZyRclM2");// 修改加工计划表从表的实际上料支吨
PreparedStatement patupdate2 = connection
.prepareStatement(sqlupdate2);
String sqlupdatepln = CoreXmlSqlParsersFactory
.getSql("FrmMcpLoading.updatePlnZyRclMpln");// 修改加工计划表
PreparedStatement patupdatepln = connection
.prepareStatement(sqlupdatepln);
String addPlnInfo = CoreXmlSqlParsersFactory
.getSql("FrmMcpLoading.AddComInfoResult");// 新增公共信息
PreparedStatement patsPlan = connection
.prepareStatement(addPlnInfo);
String deleteButt = CoreXmlSqlParsersFactory
.getSql("FrmMcpLoading.deleteButter");// 删除位置表
PreparedStatement patsButt = connection
.prepareStatement(deleteButt);
String updateMat = CoreXmlSqlParsersFactory
.getSql("FrmMcpLoading.updateMatZcPlan");// 修改库存状态
PreparedStatement patsUpMat = connection
.prepareStatement(updateMat);
String updatePath = CoreXmlSqlParsersFactory
.getSql("FrmMcpLoading.UpdatePath");// 修改队列表工艺路径
PreparedStatement pastupdatePath = connection
.prepareStatement(updatePath);
String deleteMat = CoreXmlSqlParsersFactory
.getSql("FrmMcpLoading.CopyBcMat");// 复制物料主表到MAT_BC_BACKUP表
PreparedStatement patsMat = connection.prepareStatement(deleteMat);
String deteleBcMat = CoreXmlSqlParsersFactory
.getSql("FrmMcpLoading.DeteleBcMat");// 删除物料主表
PreparedStatement deteleBcMatPath = connection
.prepareStatement(deteleBcMat);
String addPlnInfo1 = CoreXmlSqlParsersFactory
.getSql("FrmMcpLoading.AddComInfoResult1");// 修改队列表材料,工序状态
PreparedStatement patsPlan1 = connection
.prepareStatement(addPlnInfo1);
String InsertIntoOrderGroupNo = CoreXmlSqlParsersFactory
.getSql("FrmMcpLoading.InsertIntoOrderGroupNo");// 修改队列表材料,工序状态
PreparedStatement patsInsertIntoOrderGroupNo = connection
.prepareStatement(InsertIntoOrderGroupNo);
// 获取加工计划实体了
PlnZyJgxMEntity pln = PlanService.getSendHttPlanCInfo3(connection,
HeatPlanNo);
BalYearMoth = com.steering.common.StringTool.GetBalYear(com.steering.common.StringTool.GetSupplyUnit(pln.getPlineCode())); //改25号结转
/*
* // 获取加工计划实体了 PlnZyJgxCEntity plnC =
* PlanService.getSendHttPlanCInfo3C(connection, HeatPlanNo,Sqe);
*/
MchLoadingResultEntity Result = EntityTool.getEntityByJSONStr(load,
MchLoadingResultEntity.class);
// region 检查
if (pln == null) {
core.setV_errMsg("找不到炉计划数据!");
return core;
}
// 计划关闭 或计划完成 继续上料 清除结炉状态
if (pln.getPlanstatus().equals("40")
|| pln.getPlanstatus().equals("30")) {
String sql = CoreXmlSqlParsersFactory
.getSql("FrmMcpLoading.CancelNodeFlag");
sql = EntityTool.fillSqlByEntity(sql, Result);
psta = connection.prepareStatement(sql);
psta.executeUpdate();
psta.close();
} else if (!pln.getPlanstatus().equals("10")
&& !pln.getPlanstatus().equals("20")) {
core.setV_errMsg("炉计划不处于下发或生产中状态!");
return core;
}
String cutFalg = "";
String sql = CoreXmlSqlParsersFactory
.getSql("MchComm.queryComInfo");// 查询 工序是否是结炉状态
psta = connection.prepareStatement(sql);
psta.setString(1, HeatPlanNo);
psta.setString(2, Result.getBatchNo());
psta.setString(3, gx);
ResultSet rs = psta.executeQuery();
if (rs.next()) {
cutFalg = rs.getString("STATION_STATUS");
}
if (cutFalg.equals("2")) {
core.setV_errMsg("已结炉,不允许此操作!");
return core;
}
rs.close();
psta.close();
// endregion
String resultNo = "";
int count = 0;
int detCount = 0;
double wt = 0d;
if (StringTool.isInteger(Result.getFailNum())) {
detCount = Integer.parseInt(Result.getFailNum());
}
if (StringTool.isInteger(Result.getProNum())) {
count = Integer.parseInt(Result.getProNum());
}
if (StringTool.isDouble(Result.getProWt())) {
wt = Double.parseDouble(Result.getProWt());
}
if (StringTool.isInteger(Result.getProWt())) {
wt = Double.parseDouble(Result.getProWt());
}
if (count <= 0) {
core.setV_errMsg("请输入正确的上料支!");
return core;
}
if (wt <= 0.000001) {
core.setV_errMsg("上料重量异常,,请重新查询再上料!");
return core;
}
if (count < detCount) {
core.setV_errMsg("废品支数不能大于上料支!");
return core;
}
// 获取最大实绩编号
sql = CoreXmlSqlParsersFactory
.getSql("MchComm.queryLoadNewResultNo");
psta = connection.prepareStatement(sql);
psta.setObject(1, pln.getPlineCode() + gx);
psta.setObject(2, pln.getPlineCode() + gx);
ResultSet rs1 = psta.executeQuery();
if (rs1.next()) {
resultNo = rs1.getString("RESULT_NO");
}
rs1.close();
psta.close();
String StorageNo = PlanService.GetStorageIn(pln.getPlineCode(),
connection);
String sqlMatNo = CoreXmlSqlParsersFactory
.getSql("FrmMcpLoading.queryMatZc");// 查询新增物料信息
psta = connection.prepareStatement(sqlMatNo);
psta.setObject(1, pln.getHeatPlanNo());
psta.setObject(2, Result.getBatchNo());
psta.setObject(3, Result.getBatchGroudNo());
psta.setObject(4, StorageNo);
psta.setObject(5, count + 1);
rs = psta.executeQuery();
List<MatBcMEntity> listMat = EntityTool.getEntitysByRs(rs,
MatBcMEntity.class);
rs.close();
psta.close();
if (listMat.size() != count) {
core.setV_errMsg("无足够的库存!");
return core;
}
String sendOut = querySendOut(connection, "800801", pln
.getPlineCode());
// 获取出库流水号
String butessMatNo = querySendOutList(connection, sendOut);
int outNo = Integer.parseInt(butessMatNo.substring(butessMatNo
.length() - 4, butessMatNo.length()));
String sendOutlist = querySendOut(connection, "800809", pln
.getPlineCode());
// 获取出库流水号
String butessMatNolist = querySendOutList(connection, sendOutlist);
int outNolist = Integer.parseInt(butessMatNolist.substring(
butessMatNolist.length() - 4, butessMatNolist.length()));
List<PlnZyJgxCEntity> plnCs = PlanService.getSendHttPlanCInfo3C(
connection, HeatPlanNo, Result.getBatchNo(), Result
.getBatchGroudNo());
if (pln.getSiglLen().equals("")
|| Double.parseDouble(pln.getSiglLen()) < 0.0001) {
String sqlGroup = CoreXmlSqlParsersFactory
.getSql("FrmMcpLoading.queryOrderGroupNo");//
psta = connection.prepareStatement(sqlGroup);
psta.setObject(1, pln.getOrderNo() + "/" + pln.getOrderSeq());
rs = psta.executeQuery();
if (!rs.next()) {
patsInsertIntoOrderGroupNo.setObject(1, pln.getOrderNo()
+ "/" + pln.getOrderSeq());
patsInsertIntoOrderGroupNo.setObject(2, pln.getLengthmax());
patsInsertIntoOrderGroupNo.setObject(3, pln.getLengthmin());
patsInsertIntoOrderGroupNo.setObject(4, "001");
patsInsertIntoOrderGroupNo.setObject(5, "<=");
patsInsertIntoOrderGroupNo.setObject(6, ">=");
patsInsertIntoOrderGroupNo.addBatch();
if (pln.getLengthdisc().trim().equals("R1")) {
patsInsertIntoOrderGroupNo.setObject(1, pln
.getOrderNo()
+ "/" + pln.getOrderSeq());
patsInsertIntoOrderGroupNo.setObject(2, pln
.getLengthmin());
patsInsertIntoOrderGroupNo.setObject(3, "4.88");
patsInsertIntoOrderGroupNo.setObject(4, "002");
patsInsertIntoOrderGroupNo.setObject(5, "<");
patsInsertIntoOrderGroupNo.setObject(6, ">=");
patsInsertIntoOrderGroupNo.addBatch();
} else if (pln.getLengthdisc().trim().equals("R2")) {
patsInsertIntoOrderGroupNo.setObject(1, pln
.getOrderNo()
+ "/" + pln.getOrderSeq());
patsInsertIntoOrderGroupNo.setObject(2, pln
.getLengthmin());
patsInsertIntoOrderGroupNo.setObject(3, "7.62");
patsInsertIntoOrderGroupNo.setObject(4, "002");
patsInsertIntoOrderGroupNo.setObject(5, "<");
patsInsertIntoOrderGroupNo.setObject(6, ">=");
patsInsertIntoOrderGroupNo.addBatch();
} else if (pln.getLengthdisc().trim().equals("R3")) {
patsInsertIntoOrderGroupNo.setObject(1, pln
.getOrderNo()
+ "/" + pln.getOrderSeq());
patsInsertIntoOrderGroupNo.setObject(2, pln
.getLengthmin());
patsInsertIntoOrderGroupNo.setObject(3, "10.36");
patsInsertIntoOrderGroupNo.setObject(4, "002");
patsInsertIntoOrderGroupNo.setObject(5, "<");
patsInsertIntoOrderGroupNo.setObject(6, ">=");
patsInsertIntoOrderGroupNo.addBatch();
} else if (!pln.getShortest().equals("")) {
patsInsertIntoOrderGroupNo.setObject(1, pln
.getOrderNo()
+ "/" + pln.getOrderSeq());
patsInsertIntoOrderGroupNo.setObject(2, pln
.getLengthmin());
patsInsertIntoOrderGroupNo.setObject(3, pln
.getShortest());
patsInsertIntoOrderGroupNo.setObject(4, "002");
patsInsertIntoOrderGroupNo.setObject(5, "<");
patsInsertIntoOrderGroupNo.setObject(6, ">=");
patsInsertIntoOrderGroupNo.addBatch();
}
patsInsertIntoOrderGroupNo.executeBatch();
}
rs.close();
psta.close();
}
Integer UsedNum = 0;
Double UsedWt = 0d;
Double TWt = 0d;
Integer CurrentCount = 0;
PlnZyJgxCEntity CurrentJgxC = plnCs.get(CurrentCount);
Integer CanLoadNum = Integer.parseInt(CurrentJgxC
.getPlanIndoubleNum().equals("") ? "0" : CurrentJgxC
.getPlanIndoubleNum())
- Integer.parseInt(CurrentJgxC.getRealIndoubleNum().equals(
"") ? "0" : CurrentJgxC.getRealIndoubleNum());
Double CanLoadWt = Double.parseDouble(CurrentJgxC
.getPlanIndoubleWt().equals("") ? "0" : CurrentJgxC
.getPlanIndoubleWt())
- Double
.parseDouble(CurrentJgxC.getRealIndoubleWt()
.equals("") ? "0" : CurrentJgxC
.getRealIndoubleWt());
int CountInstorage = 0;
for (MatBcMEntity lvMat : listMat) {
/*if (!"002023005".equals(lvMat.getBelongCode())
&& "C092".equals(pln.getPlineCode())) {
core.setV_errMsg("管所属权不属于天淮,不允许上料!清确认管是否倒运至天淮!");
return core;
}*/
if (lvMat.getStorageNo().equals("")) {
core.setV_errMsg("库存正在倒运中,无法上料!");
return core;
}
if (!lvMat.getStorageNo().equals(StorageNo)) {
if (pln.getIsLoadFlag().equals("1")) {
String deleteYdmBack = CoreXmlSqlParsersFactory
.getSql("FrmMcpLoading.deleteYdmBack");//
PreparedStatement patsdeleteYdmBack = connection
.prepareStatement(deleteYdmBack);
patsdeleteYdmBack.setObject(1, pln.getPlineCode());
patsdeleteYdmBack.setObject(2, lvMat.getMatNo());
patsdeleteYdmBack.executeUpdate();
patsdeleteYdmBack.close();
// 上料炉号和判定炉号不一致 改成保存判定炉号的位置信息
String insertYdmBack = CoreXmlSqlParsersFactory
.getSql("FrmMcpLoading.insertYdmBack");//
PreparedStatement patsinsertYdmBack = connection
.prepareStatement(insertYdmBack);
patsinsertYdmBack.setObject(1, pln.getPlineCode());
patsinsertYdmBack.setObject(2, lvMat.getMatNo());
patsinsertYdmBack.executeUpdate();
patsinsertYdmBack.close();
} else {
if (CountInstorage == 0) {
core.setV_errMsg("库存未在投料库,无法上料");
return core;
} else {
core.setV_errMsg("只有" + CountInstorage
+ "支在投料库 ,无法上足" + count + "支");
return core;
}
}
}
CountInstorage++;
if ("1".equals(lvMat.getLockFlag())) {
core.setV_errMsg("库存存在质量封锁料,无法上足" + count + "支");
return core;
}
if ("1".equals(lvMat.getMngLockFlag())) {
core.setV_errMsg("库存存在管理封锁料,无法上足" + count + "支");
return core;
}
while (UsedNum >= CanLoadNum) {
patupdate.setObject(1, UsedNum);
patupdate.setObject(2, UsedWt);
patupdate.setObject(3, pln.getHeatPlanNo());
patupdate.setObject(4, CurrentJgxC.getHeatPlanSqe());
patupdate.addBatch();
CurrentCount++;
if (CurrentCount >= plnCs.size()) {
core.setV_errMsg("上料支超过排产支!");
return core;
}
CurrentJgxC = plnCs.get(CurrentCount);
CanLoadNum = Integer.parseInt(CurrentJgxC
.getPlanIndoubleNum().equals("") ? "0"
: CurrentJgxC.getPlanIndoubleNum())
- Integer.parseInt(CurrentJgxC.getRealIndoubleNum()
.equals("") ? "0" : CurrentJgxC
.getRealIndoubleNum());
UsedNum = 0;
UsedWt = 0d;
}
patsport.setObject(1, Result.getCreatetUser());
patsport.setObject(2, Result.getLoadShift());
patsport.setObject(3, Result.getLoadGroup());
patsport.setObject(4, pln.getFeedHeatNo());
patsport.setObject(5, CurrentJgxC.getHeatPlanSqe());
patsport.setObject(6, BalYearMothDay);
patsport.setObject(7, BalYearMoth);
patsport.setObject(8, lvMat.getMatNo());
patsport.setObject(9, pln.getHeatPlanNo());
patsport.addBatch();
UsedNum++;
UsedWt = UsedWt + Double.parseDouble(lvMat.getActWeight());
TWt = TWt + Double.parseDouble(lvMat.getActWeight());
// 新增出库表
patsAddOut.setObject(1, sendOut
+ StringTool.formatDecimal(outNo, "0000"));
patsAddOut.setObject(2, HeatPlanNo);
patsAddOut.setObject(3, sendOut);
patsAddOut.setObject(4, "800801");
patsAddOut.setObject(5, "投料出库");
patsAddOut.setObject(6, lvMat.getMatNo());
patsAddOut.setObject(7, lvMat.getJudgeStoveNo());
patsAddOut.setObject(8, lvMat.getBatchNo());
patsAddOut.setObject(9, lvMat.getBatchGroudNo());
patsAddOut.setObject(10, lvMat.getMaterialNo());
patsAddOut.setObject(11, lvMat.getMaterialName());
patsAddOut.setObject(12, lvMat.getProduccode());
patsAddOut.setObject(13, lvMat.getProducname());
patsAddOut.setObject(14, lvMat.getStdCode());
patsAddOut.setObject(15, lvMat.getStdName());
patsAddOut.setObject(16, lvMat.getGradecode());
patsAddOut.setObject(17, lvMat.getGradename());
patsAddOut.setObject(18, lvMat.getSteelcode());
patsAddOut.setObject(19, lvMat.getSteelname());
patsAddOut.setObject(20, lvMat.getStdStyle());
patsAddOut.setObject(21, lvMat.getStdStyleDesc());
patsAddOut.setObject(22, lvMat.getSpecCode());
patsAddOut.setObject(23, lvMat.getSpecName());
patsAddOut.setObject(24, lvMat.getModelCode());
patsAddOut.setObject(25, lvMat.getModelDesc());
patsAddOut.setObject(26, (lvMat.getPlineCode().equals("100101")
|| lvMat.getPlineCode().equals("100102") || lvMat
.getPlineCode().equals("100103")) ? (lvMat
.getProcessCdoe().equals("D") ? "C008" : lvMat
.getProcessCdoe().equals("E") ? "C013" : lvMat
.getProcessCdoe().equals("F") ? "C022" : lvMat
.getProcessCdoe().equals("G") ? "C028" : "C041")
: lvMat.getPlineCode());
patsAddOut.setObject(27, (lvMat.getPlineCode().equals("100101")
|| lvMat.getPlineCode().equals("100102") || lvMat
.getPlineCode().equals("100103")) ? (lvMat
.getProcessCdoe().equals("D") ? "250机组" : lvMat
.getProcessCdoe().equals("E") ? "冷轧机组" : lvMat
.getProcessCdoe().equals("F") ? "热处理01#(管加工1号热)"
: lvMat.getProcessCdoe().equals("G") ? "加工线01#(管加工1#线)"
: "接箍1(美国PMC1077)") : lvMat.getPlineName());
patsAddOut.setObject(28, lvMat.getActDimater());
patsAddOut.setObject(29, lvMat.getActHeight());
patsAddOut.setObject(30, String.valueOf(lvMat.getActLen()));
patsAddOut.setObject(31, lvMat.getActLenMin());
patsAddOut.setObject(32, lvMat.getActLenMax());
patsAddOut.setObject(33, String.valueOf(lvMat.getActCount()));
patsAddOut.setObject(34, String.valueOf(lvMat.getActWeight()));
patsAddOut.setObject(35, String.valueOf(lvMat
.getActTheoryWeight()));
patsAddOut.setObject(36, lvMat.getBelongCode());
patsAddOut.setObject(37, lvMat.getBelongName());
patsAddOut.setObject(38, lvMat.getStorageNo());
patsAddOut.setObject(39, lvMat.getLocationNo());
patsAddOut.setObject(40, lvMat.getLaryNo());
patsAddOut.setObject(41, lvMat.getLocNo());
patsAddOut.setObject(42, lvMat.getStorageAttr());
patsAddOut.setObject(43, lvMat.getStorageAttrName());
patsAddOut.setObject(44, lvMat.getStorageTypeNo());
patsAddOut.setObject(45, lvMat.getStorageTypeName());
patsAddOut.setObject(46, lvMat.getManagementNo());
patsAddOut.setObject(47, lvMat.getManagementName());
patsAddOut.setObject(48, systime);
patsAddOut.setObject(49, lvMat.getProBc());
patsAddOut.setObject(50, lvMat.getProBz());
patsAddOut.setObject(51, systime);
patsAddOut.setObject(52, Result.getLoadShift());
patsAddOut.setObject(53, Result.getLoadGroup());
patsAddOut.setObject(54, Result.getCreatetUser());
patsAddOut.setObject(55, systime);
patsAddOut.setObject(56, lvMat.getOrdPk());
patsAddOut.setObject(57, lvMat.getOrdLnPk());
patsAddOut.setObject(58, lvMat.getOrdLnDlyPk());
patsAddOut.setObject(59, lvMat.getDepartmentCode());
patsAddOut.setObject(60, lvMat.getDepartmentDesc());
patsAddOut.setObject(61, lvMat.getOrderNo());
patsAddOut.setObject(62, lvMat.getOrderSeq());
patsAddOut.setObject(63, pln.getDeliveryNo());
patsAddOut.setObject(64, "801401");
patsAddOut.setObject(65, "80150105");
patsAddOut.setObject(66, lvMat.getJudgeStdCode());
patsAddOut.setObject(67, lvMat.getJudgeStdName());
patsAddOut.setObject(68, pln.getZyBatchId());
patsAddOut.setObject(69, lvMat.getStoveNo());
patsAddOut.setObject(70, Result.getPlineCode());
patsAddOut.setObject(71, Result.getPlineCode());
patsAddOut.setObject(72, pln.getOrderNo() + "/"
+ pln.getOrderSeq());
patsAddOut.setObject(73, BalYearMoth);
patsAddOut.setObject(74, lvMat.getProcessCdoe());
patsAddOut.setObject(75, lvMat.getProcessDesc());
patsAddOut.addBatch();
outNo++;
// 新增产权出库
patsAddOutlist.setObject(1, sendOutlist
+ StringTool.formatDecimal(outNolist, "0000"));
patsAddOutlist.setObject(2, HeatPlanNo);
patsAddOutlist.setObject(3, sendOutlist);
patsAddOutlist.setObject(4, "800809");
patsAddOutlist.setObject(5, "产权出库");
patsAddOutlist.setObject(6, lvMat.getMatNo());
patsAddOutlist.setObject(7, lvMat.getJudgeStoveNo());
patsAddOutlist.setObject(8, lvMat.getBatchNo());
patsAddOutlist.setObject(9, lvMat.getBatchGroudNo());
patsAddOutlist.setObject(10, lvMat.getMaterialNo());
patsAddOutlist.setObject(11, lvMat.getMaterialName());
patsAddOutlist.setObject(12, lvMat.getProduccode());
patsAddOutlist.setObject(13, lvMat.getProducname());
patsAddOutlist.setObject(14, lvMat.getStdCode());
patsAddOutlist.setObject(15, lvMat.getStdName());
patsAddOutlist.setObject(16, lvMat.getGradecode());
patsAddOutlist.setObject(17, lvMat.getGradename());
patsAddOutlist.setObject(18, lvMat.getSteelcode());
patsAddOutlist.setObject(19, lvMat.getSteelname());
patsAddOutlist.setObject(20, lvMat.getStdStyle());
patsAddOutlist.setObject(21, lvMat.getStdStyleDesc());
patsAddOutlist.setObject(22, lvMat.getSpecCode());
patsAddOutlist.setObject(23, lvMat.getSpecName());
patsAddOutlist.setObject(24, lvMat.getModelCode());
patsAddOutlist.setObject(25, lvMat.getModelDesc());
patsAddOutlist.setObject(26, (lvMat.getPlineCode().equals(
"100101")
|| lvMat.getPlineCode().equals("100102") || lvMat
.getPlineCode().equals("100103")) ? (lvMat
.getProcessCdoe().equals("D") ? "C008" : lvMat
.getProcessCdoe().equals("E") ? "C013" : lvMat
.getProcessCdoe().equals("F") ? "C022" : lvMat
.getProcessCdoe().equals("G") ? "C028" : "C041")
: lvMat.getPlineCode());
patsAddOutlist.setObject(27, (lvMat.getPlineCode().equals(
"100101")
|| lvMat.getPlineCode().equals("100102") || lvMat
.getPlineCode().equals("100103")) ? (lvMat
.getProcessCdoe().equals("D") ? "250机组" : lvMat
.getProcessCdoe().equals("E") ? "冷轧机组" : lvMat
.getProcessCdoe().equals("F") ? "热处理01#(管加工1号热)"
: lvMat.getProcessCdoe().equals("G") ? "加工线01#(管加工1#线)"
: "接箍1(美国PMC1077)") : lvMat.getPlineName());
patsAddOutlist.setObject(28, lvMat.getActDimater());
patsAddOutlist.setObject(29, lvMat.getActHeight());
patsAddOutlist.setObject(30, String.valueOf(lvMat.getActLen()));
patsAddOutlist.setObject(31, lvMat.getActLenMin());
patsAddOutlist.setObject(32, lvMat.getActLenMax());
patsAddOutlist.setObject(33, String
.valueOf(lvMat.getActCount()));
patsAddOutlist.setObject(34, String.valueOf(lvMat
.getActWeight()));
patsAddOutlist.setObject(35, String.valueOf(lvMat
.getActTheoryWeight()));
patsAddOutlist.setObject(36, lvMat.getBelongCode());
patsAddOutlist.setObject(37, lvMat.getBelongName());
patsAddOutlist.setObject(38, lvMat.getStorageNo());
patsAddOutlist.setObject(39, lvMat.getLocationNo());
patsAddOutlist.setObject(40, lvMat.getLaryNo());
patsAddOutlist.setObject(41, lvMat.getLocNo());
patsAddOutlist.setObject(42, lvMat.getStorageAttr());
patsAddOutlist.setObject(43, lvMat.getStorageAttrName());
patsAddOutlist.setObject(44, lvMat.getStorageTypeNo());
patsAddOutlist.setObject(45, lvMat.getStorageTypeName());
patsAddOutlist.setObject(46, lvMat.getManagementNo());
patsAddOutlist.setObject(47, lvMat.getManagementName());
patsAddOutlist.setObject(48, systime);
patsAddOutlist.setObject(49, lvMat.getProBc());
patsAddOutlist.setObject(50, lvMat.getProBz());
patsAddOutlist.setObject(51, systime);
patsAddOutlist.setObject(52, Result.getLoadShift());
patsAddOutlist.setObject(53, Result.getLoadGroup());
patsAddOutlist.setObject(54, Result.getCreatetUser());
patsAddOutlist.setObject(55, systime);
patsAddOutlist.setObject(56, lvMat.getOrdPk());
patsAddOutlist.setObject(57, lvMat.getOrdLnPk());
patsAddOutlist.setObject(58, lvMat.getOrdLnDlyPk());
patsAddOutlist.setObject(59, lvMat.getDepartmentCode());
patsAddOutlist.setObject(60, lvMat.getDepartmentDesc());
patsAddOutlist.setObject(61, lvMat.getOrderNo());
patsAddOutlist.setObject(62, lvMat.getOrderSeq());
patsAddOutlist.setObject(63, pln.getDeliveryNo());
patsAddOutlist.setObject(64, "801401");
patsAddOutlist.setObject(65, "80150105");
patsAddOutlist.setObject(66, lvMat.getJudgeStdCode());
patsAddOutlist.setObject(67, lvMat.getJudgeStdName());
patsAddOutlist.setObject(68, pln.getZyBatchId());
patsAddOutlist.setObject(69, lvMat.getStoveNo());
patsAddOutlist.setObject(70, Result.getPlineCode());
patsAddOutlist.setObject(71, Result.getPlineCode());
patsAddOutlist.setObject(72, pln.getOrderNo() + "/"
+ pln.getOrderSeq());
patsAddOutlist.setObject(73, BalYearMoth);
patsAddOutlist.setObject(74, lvMat.getProcessCdoe());
patsAddOutlist.setObject(75, lvMat.getProcessDesc());
if (!pln.getIfMatchOdd().equals("6"))
patsAddOutlist.addBatch();
outNolist++;
// 修改库存状态
patsUpMat.setObject(1, "80150105");
patsUpMat.setObject(2, lvMat.getMatNo());
patsUpMat.addBatch();
// 删除位置表
patsButt.setObject(1, lvMat.getMatNo());
patsButt.addBatch();
// 把物料主表复制到List表
patsMat.setObject(1, lvMat.getMatNo());
patsMat.addBatch();
// 删除物料主表
deteleBcMatPath.setObject(1, lvMat.getMatNo());
deteleBcMatPath.addBatch();
}
patupdate.setObject(1, UsedNum);
patupdate.setObject(2, UsedWt);
patupdate.setObject(3, pln.getHeatPlanNo());
patupdate.setObject(4, CurrentJgxC.getHeatPlanSqe());
patupdate.addBatch();
patsport.executeBatch();
patsAddOut.executeBatch();
patsAddOutlist.executeBatch();
patsUpMat.executeBatch();
patsButt.executeBatch();
patsMat.executeBatch();
deteleBcMatPath.executeBatch();
Result.setOutstockDoc(sendOut);
// 新增上料实绩
patAdd.setObject(1, resultNo);
patAdd.setObject(2, Result.getZyBatchId());
patAdd.setObject(3, pln.getProPlanId());
patAdd.setObject(4, pln.getGxPlanNo());
patAdd.setObject(5, Result.getProNum());
patAdd.setObject(6, TWt);
patAdd.setObject(7, Result.getFailNum());
patAdd.setObject(8, Result.getFailWt());
patAdd.setObject(9, "");
patAdd.setObject(10, "");
patAdd.setObject(11, "");
patAdd.setObject(12, "");
patAdd.setObject(13, Result.getLoadTime());
patAdd.setObject(14, Result.getLoadShift());
patAdd.setObject(15, Result.getLoadGroup());
patAdd.setObject(16, "1");
patAdd.setObject(17, Result.getPlineCode());
patAdd.setObject(18, Result.getPlineName());
patAdd.setObject(19, Result.getHeatPlanNo());
patAdd.setObject(20, systime);
patAdd.setObject(21, Result.getProducer());
if (Result.getProducer().equals("")) {
patAdd.setObject(22, "");
} else {
patAdd.setObject(22, Result.getProducerTime());
}
patAdd.setObject(23, Result.getCreatetUser());
patAdd.setObject(24, Result.getOutnumCut());
patAdd.setObject(25, Result.getLengthIn());
patAdd.setObject(26, Result.getLengthmaxIn());
patAdd.setObject(27, Result.getLengthminIn());
patAdd.setObject(28, sendOut);
patAdd.setObject(29, Result.getJudgeStoveNo());
patAdd.setObject(30, Result.getBatchNo());
patAdd.setObject(31, Result.getBatchGroudNo());
patAdd.setObject(32, Result.getHeatPlanSqe());
patAdd.setObject(33, Result.getMatSource());
patAdd.setObject(34, BalYearMothDay);
patAdd.setObject(35, BalYearMoth);
patAdd.addBatch();
// 新增加工公共信息
patsPlan.setObject(1, resultNo);
patsPlan.setObject(2, pln.getZyBatchId());
patsPlan.setObject(3, "");
patsPlan.setObject(4, pln.getProPlanId());
patsPlan.setObject(5, pln.getGxPlanNo());
patsPlan.setObject(6, pln.getOrderSource());
patsPlan.setObject(7, pln.getOrderNo());
patsPlan.setObject(8, pln.getOrderSeq());
patsPlan.setObject(9, pln.getReqBlId());
patsPlan.setObject(10, pln.getPlineCode());
patsPlan.setObject(11, pln.getPlineName());
patsPlan.setObject(12, gx);
patsPlan.setObject(13, gx);
patsPlan.setObject(14, "");
patsPlan.setObject(15, "");
patsPlan.setObject(16, pln.getSteelcode());
patsPlan.setObject(17, pln.getSteelname());
patsPlan.setObject(18, pln.getOutdiameter());
patsPlan.setObject(19, pln.getWallthick());
patsPlan.setObject(20, "");
patsPlan.setObject(21, "");
patsPlan.setObject(22, "");
patsPlan.setObject(23, "");
patsPlan.setObject(24, "");
patsPlan.setObject(25, "");
patsPlan.setObject(26, "");
patsPlan.setObject(27, "");
patsPlan.setObject(28, pln.getOutwlId());
patsPlan.setObject(29, pln.getOutwlDesc());
patsPlan.setObject(30, pln.getInwlId());
patsPlan.setObject(31, pln.getInwlDesc());
patsPlan.setObject(32, pln.getMonitorPoint());
patsPlan.setObject(33, Result.getIfMonitorRcl());
patsPlan.setObject(34, pln.getPrdcrNo());
patsPlan.setObject(35, Result.getProducer());
if (Result.getProducer().equals("")) {
patsPlan.setObject(36, "");
} else {
patsPlan.setObject(36, Result.getProducerTime());
}
patsPlan.setObject(37, pln.getStationRoad());
patsPlan.setObject(38, pln.getCraftFileNo());
patsPlan.setObject(39, pln.getCraftFileMan());
patsPlan.setObject(40, pln.getCraftSeq());
patsPlan.setObject(41, Result.getProNum());
patsPlan.setObject(42, TWt);
patsPlan.setObject(43, Result.getFailNum());
patsPlan.setObject(44, Result.getFailWt());
patsPlan.setObject(45, Result.getOfflineNum());
patsPlan.setObject(46, Result.getOfflineWt());
patsPlan.setObject(47, Result.getReNum());
patsPlan.setObject(48, Result.getReWt());
patsPlan.setObject(49, "1");
patsPlan.setObject(50, Result.getLoadTime());
patsPlan.setObject(51, "");
patsPlan.setObject(52, Result.getLoadShift());
patsPlan.setObject(53, Result.getLoadGroup());
patsPlan.setObject(54, "1");
patsPlan.setObject(55, Result.getCreateTime());
patsPlan.setObject(56, Result.getCreatetUser());
patsPlan.setObject(57, pln.getHeatPlanNo());
patsPlan.setObject(58, pln.getJudgeStoveNo());
patsPlan.setObject(59, Result.getBatchNo());
patsPlan.setObject(60, Result.getBatchGroudNo());
patsPlan.setObject(61, pln.getProduccode());
patsPlan.setObject(62, pln.getProducname());
patsPlan.setObject(63, Result.getOutnumCut());
patsPlan.setObject(64, pln.getSpecCode());
patsPlan.setObject(65, pln.getSpecName());
patsPlan.addBatch();
// 修改计划主表状态
patupdatepln.setObject(1, "20");
patupdatepln.setObject(2, "00");
patupdatepln.setObject(3, HeatPlanNo);
patupdatepln.addBatch();
patupdate2.setObject(1, "00");
patupdate2.setObject(2, pln.getHeatPlanNo());
patupdate2.setObject(3, Result.getBatchNo());
patupdate2.addBatch();
patAdd.executeBatch();
patsPlan.executeBatch();
patupdate.executeBatch();
patupdate2.executeBatch();
patupdatepln.executeBatch();
FrmMchBugD.AddMchWaste(connection, HeatPlanNo, resultNo, Result
.getPlineCode(), Result.getCreatetUser(), gx,
SuspiciousList, ScrappedList);
// 更新运输需求上料时间
FrmVrpInStore frmVrpInStore = new FrmVrpInStore();
// TZH 24.4.24 注销物流接口
// frmVrpInStore.updateTmsDemandMLoadTime(connection, connection2,
// core, HeatPlanNo, "G");
if (core.getV_errMsg().equals("")) {
core.setV_errMsg("上料成功!");
}
// 财务系统接口数据处理
// FmisTool.addBcOutList(connection,core,HeatPlanNo,resultNo,"G");
core.setResult(1);
connection.commit();
// TZH 24.4.24 注销物流接口
// connection2.commit();
} catch (Exception e) {
core.setV_errMsg(e.getMessage());
if (connection != null) {
try {
connection.rollback(); // 回滚事务
// TZH 24.4.24 注销物流接口
// connection2.rollback(); // 回滚事务
} catch (Exception e2) {
}
}
// TZH 24.4.24 注销物流接口
// if (connection2 != null) {
// try {
// connection.rollback(); // 回滚事务
// connection2.rollback(); // 回滚事务
// } catch (Exception e2) {
// }
// }
} finally {
try {
if (connection != null && !connection.isClosed()) {
connection.close();
}
// TZH 24.4.24 注销物流接口
// if (connection2 != null && !connection2.isClosed()) {
// connection2.close();
// }
} catch (Exception e2) {
}
}
return core;
}
先不忙说长度,我们聊聊滥用事务
core.setResult(1);
connection.commit();
// TZH 24.4.24 注销物流接口
// connection2.commit();
} catch (Exception e) {
core.setV_errMsg(e.getMessage());
if (connection != null) {
try {
connection.rollback(); // 回滚事务
// TZH 24.4.24 注销物流接口
// connection2.rollback(); // 回滚事务
} catch (Exception e2) {
}
}
// TZH 24.4.24 注销物流接口
// if (connection2 != null) {
// try {
// connection.rollback(); // 回滚事务
// connection2.rollback(); // 回滚事务
// } catch (Exception e2) {
// }
// }
} finally {
try {
if (connection != null && !connection.isClosed()) {
connection.close();
}
// TZH 24.4.24 注销物流接口
// if (connection2 != null && !connection2.isClosed()) {
// connection2.close();
// }
} catch (Exception e2) {
}
}
return core;
1、明显采取隐藏事务方式
2、也就是说,他们任意请求抬手就是事务
3、异常随意丢弃
我们再来聊聊魔法参数
String sqlupdate2 = CoreXmlSqlParsersFactory
.getSql("FrmMcpLoading.updatePlnZyRclM2");// 修改加工计划表从表的实际上料支吨
PreparedStatement patupdate2 = connection
.prepareStatement(sqlupdate2);
String sqlupdatepln = CoreXmlSqlParsersFactory
.getSql("FrmMcpLoading.updatePlnZyRclMpln");// 修改加工计划表
PreparedStatement patupdatepln = connection
.prepareStatement(sqlupdatepln);
String addPlnInfo = CoreXmlSqlParsersFactory
.getSql("FrmMcpLoading.AddComInfoResult");// 新增公共信息
PreparedStatement patsPlan = connection
.prepareStatement(addPlnInfo);
String deleteButt = CoreXmlSqlParsersFactory
.getSql("FrmMcpLoading.deleteButter");// 删除位置表
PreparedStatement patsButt = connection
.prepareStatement(deleteButt);
String updateMat = CoreXmlSqlParsersFactory
.getSql("FrmMcpLoading.updateMatZcPlan");// 修改库存状态
PreparedStatement patsUpMat = connection
.prepareStatement(updateMat);
其中
PreparedStatement patupdatepln = connection
.prepareStatement(sqlupdatepln);
就是定义一个带参数的请求的参数。
// 新增加工公共信息
patsPlan.setObject(1, resultNo);
patsPlan.setObject(2, pln.getZyBatchId());
patsPlan.setObject(3, "");
patsPlan.setObject(4, pln.getProPlanId());
patsPlan.setObject(5, pln.getGxPlanNo());
patsPlan.setObject(6, pln.getOrderSource());
patsPlan.setObject(7, pln.getOrderNo());
patsPlan.setObject(8, pln.getOrderSeq());
patsPlan.setObject(9, pln.getReqBlId());
patsPlan.setObject(10, pln.getPlineCode());
patsPlan.setObject(11, pln.getPlineName());
patsPlan.setObject(12, gx);
patsPlan.setObject(13, gx);
patsPlan.setObject(14, "");
patsPlan.setObject(15, "");
patsPlan.setObject(16, pln.getSteelcode());
patsPlan.setObject(17, pln.getSteelname());
patsPlan.setObject(18, pln.getOutdiameter());
patsPlan.setObject(19, pln.getWallthick());
patsPlan.setObject(20, "");
patsPlan.setObject(21, "");
patsPlan.setObject(22, "");
patsPlan.setObject(23, "");
patsPlan.setObject(24, "");
patsPlan.setObject(25, "");
patsPlan.setObject(26, "");
patsPlan.setObject(27, "");
patsPlan.setObject(28, pln.getOutwlId());
patsPlan.setObject(29, pln.getOutwlDesc());
patsPlan.setObject(30, pln.getInwlId());
patsPlan.setObject(31, pln.getInwlDesc());
patsPlan.setObject(32, pln.getMonitorPoint());
patsPlan.setObject(33, Result.getIfMonitorRcl());
patsPlan.setObject(34, pln.getPrdcrNo());
patsPlan.setObject(35, Result.getProducer());
if (Result.getProducer().equals("")) {
patsPlan.setObject(36, "");
} else {
patsPlan.setObject(36, Result.getProducerTime());
}
patsPlan.setObject(37, pln.getStationRoad());
patsPlan.setObject(38, pln.getCraftFileNo());
patsPlan.setObject(39, pln.getCraftFileMan());
patsPlan.setObject(40, pln.getCraftSeq());
patsPlan.setObject(41, Result.getProNum());
patsPlan.setObject(42, TWt);
patsPlan.setObject(43, Result.getFailNum());
patsPlan.setObject(44, Result.getFailWt());
patsPlan.setObject(45, Result.getOfflineNum());
patsPlan.setObject(46, Result.getOfflineWt());
patsPlan.setObject(47, Result.getReNum());
patsPlan.setObject(48, Result.getReWt());
patsPlan.setObject(49, "1");
patsPlan.setObject(50, Result.getLoadTime());
patsPlan.setObject(51, "");
patsPlan.setObject(52, Result.getLoadShift());
patsPlan.setObject(53, Result.getLoadGroup());
patsPlan.setObject(54, "1");
patsPlan.setObject(55, Result.getCreateTime());
patsPlan.setObject(56, Result.getCreatetUser());
patsPlan.setObject(57, pln.getHeatPlanNo());
patsPlan.setObject(58, pln.getJudgeStoveNo());
patsPlan.setObject(59, Result.getBatchNo());
patsPlan.setObject(60, Result.getBatchGroudNo());
patsPlan.setObject(61, pln.getProduccode());
patsPlan.setObject(62, pln.getProducname());
patsPlan.setObject(63, Result.getOutnumCut());
patsPlan.setObject(64, pln.getSpecCode());
patsPlan.setObject(65, pln.getSpecName());
patsPlan.addBatch();
魔法赋值,如果错一个位置,整个sql无效
<query id="FrmMcpLoading.AddComInfoResult" desc=" 新增公共信息">
<![CDATA[
INSERT INTO MCH_COM_INFO (RESULT_NO, ZY_BATCH_ID,PROD_INDEX,PRO_PLAN_ID,
GX_PLAN_NO, ORDER_SOURCE, ORDER_NO, ORDER_SEQ, REQ_BL_ID, PLINE_CODE,
PLINE_NAME, STATION_CODE, STATION_DESC, GRADECODE, GRADENAME, STEELCODE,
STEELNAME, DIMATER, HEIGHT, ACT_DIMATER, ACT_SPEC_CODE, ACT_SPEC_NAME, LEN, ACT_LEN_MIN,
ACT_LEN_MAX, LEN_CUT_HEAD, LEN_CUT_END, ACT_MATERIAL_NO, ACT_MATERIAL_NAME, INWL_ID, INWL_DESC,
MONITOR_POINT, IF_MONITOR_MCH, PRDCR_NO, PRODUCER, PRODUCER_TIME, STATION_ROAD,
CRAFT_FILE_NO, CRAFT_FILE_MAN, CRAFT_SEQ, PRO_NUM, PRO_WT, FAIL_NUM, FAIL_WT,
OFFLINE_NUM, OFFLINE_WT, RE_NUM, RE_WT, STATION_STATUS, RRO_TIME, RRO_TIME_NU,
PRO_SHIFT, PRO_GROUP, VALIDFLAG, CREATE_TIME, COL_OPERATOR,
HEAT_PLAN_NO,JUDGE_STOVE_NO,BATCH_NO,BATCH_GROUD_NO,
PRODUCCODE,PRODUCNAME,OUTNUM_CUT,SPEC_CODE,SPEC_NAME) VALUES (?, ?, ?, ?, ?,?, ?, ?, ?, ?, ?, ?, (SELECT T.BASENAME FROM COM_BASE_INFO T WHERE T.BASECODE = ?), ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, TO_DATE(?,'YYYY-MM-DD HH24:MI:SS'),
?, ?, ?, ?, ?, ?,?, ?, ?, ?, ?, ?, ?, TO_DATE(?,'YYYY-MM-DD HH24:MI:SS'),
?, ?, ?, ?, TO_DATE(?,'YYYY-MM-DD HH24:MI:SS'), ?, ?, ?, ?, ?, ?, ?,?,?,?)
]]>
</query>
1、query标签里放insert就是常规操作
2、并非mybatis框架
3、sql里满是问号。随便动几个问号就会引起维护不走
以上只是该系统里最简单的插入业务