本帖最后由 xuming 于 2016-6-12 10:39 编辑
功能概述 根据染色卡来进行开处方,生成处方单和上传处方单的功能页面 操作流程 操作流程说明: 1、用户打开界面 2、用户点击新建,会在当前染色卡下的处方列表里新建一条处方。 3、系统自动根据用户操作进行保存处理。 4、UI原型图
参数说明 1、参数功能说明 参数分为两种一个为染绒和脱色,染纱。根据不同的参数来进行对form的分类 Ref参照 1、单据状态:从常量明细表pbConstDtl里面查询出可用的并且常量值为292的信息 2、处方类型:从常量明细表pcConstDtl里面查询出可用的并且常量值为1355的信息 3、辅助染程:从染程主表tmDyeingCurveHdr里面查询出可用的辅助染程编号,辅助染程名称和ID 4、染程:从染程主表tmDyeingCurveHdr里面查询出可用的染程编号,染程名称和ID 5、物料名称;从染化料物料表mmMaterialChemical里面查询出可用的染化料ID,染化料编号和染化料名称。 6、用量类型:从常量明细表pbConstDtl里面查询出可用的并且常量值为1444的信息。 7、来源:从常量明细表pbConstDtl里面查询出可用的并且常量值为1493的信息。 查询业务逻辑 1、染色卡列表:从染色工卡表里面查询出当前参数值的所有染色卡 2、处方列表:根据选中的染色卡查询出对应的处方列表 3、染色处方明细:根据选中的处方列表查询出对应的染色处方明细
单点功能说明 1、生成处方单: IIf(EntitySet.IsNotEmpty(dtlEntitySet),HS.Success,HS.Default); 如果dtl实体集不为空,则执行HS.Success,否则执行HS.Default HS.Default=EntitySet.AddNew.BySql(dtlEntitySet,38788 ,mainEntitySet+IndexEntitySet); RefreshUI(); HS.Default=通过sql38788来新建数据,参数取自main实体集和index实体集。 刷新UI HS.Success=Ask(当前已有处方单,新增则会删除原有的处方单,是否继续?);
EntitySet.Clear(dtlEntitySet);
EntitySet.AddNew.BySql(dtlEntitySet,38788 ,mainEntitySet+IndexEntitySet);
RefreshUI();
HS.Success=询问‘当前已有处方单,新增则会删除原有的处方单,是否继续?’
是则执行清空实体集dtl,否则不做修改。
清空后执行新增sql38788来新建数据,参数取自main实体集和Index实体集。
刷新UI
SQL--38788=SELECT a.iIden,a.iMaterialId,nDosage=CAST(A.nDosage AS DECIMAL(18,4))
,c.iStepNo,e.sMaterialNo,e.sMaterialName
,sDyeingCurveName=c.sRemark
,iDyeingCurveId=c.iIden
,sDyeingCurveNo=c.sBillNo
,iSourceType=CONVERT(INT,0)
,iCalcType=CONVERT(INT,3)
FROM dbo.tmDyeingColorTemplateRecipe a WITH(NOLOCK)
JOIN dbo.tmColor b WITH(NOLOCK) ON a.iHdrId=b.iIden
JOIN dbo.tmDyeingCurveHdr c WITH(NOLOCK) ON b.iDyeingCurveId=c.iIden
LEFT JOIN dbo.pbUnit d WITH(NOLOCK) ON a.iUseUnitId=d.iIden
LEFT JOIN dbo.mmMaterial e ON a.iMaterialId=e.iIden
WHERE a.iHdrId=:iColorId
查询出信息定义来源类型为0配方燃料,并且用量类型为3缸卡百分比的所有处方单
UNION ALL
SELECT A.iIden,A.iMaterialId,nDosage=CAST(A.nDosage AS DECIMAL(18,4))
,A.iStepNo,B.sMaterialNo,B.sMaterialName
,sDyeingCurveName=C.sRemark
,iDyeingCurveId=A.iHdrId
,sDyeingCurveNo=C.sBillNo
,iSourceType=CONVERT(INT,1)
,iCalcType=CONVERT(INT,1)
FROM dbo.tmDyeingArtRouteChemicalDtl A WITH(NOLOCK)
LEFT JOIN dbo.mmMaterial B WITH(NOLOCK) ON A.iMaterialId=B.iIden
LEFT JOIN dbo.tmDyeingCurveHdr C WITH(NOLOCK) ON A.iHdrId=C.iIden
WHERE A.iHdrId=:iDyeingCurveId AND A.iDyeingCardType=:iDyeingCardType
UNION ALL
SELECT A.iIden,A.iMaterialId,nDosage=CAST(A.nDosage AS DECIMAL(18,4))
,A.iStepNo,B.sMaterialNo,B.sMaterialName
,sDyeingCurveName=C.sRemark
,iDyeingCurveId=A.iHdrId
,sDyeingCurveNo=C.sBillNo
,iSourceType=CONVERT(INT,2)
,iCalcType=CONVERT(INT,2)
FROM dbo.tmDyeingArtRouteChemicalDtl A WITH(NOLOCK)
LEFT JOIN dbo.mmMaterial B WITH(NOLOCK) ON A.iMaterialId=B.iIden
LEFT JOIN dbo.tmDyeingCurveHdr C WITH(NOLOCK) ON A.iHdrId=C.iIden
WHERE A.iHdrId=:iDyeingCurveExId AND A.iDyeingCardType=:iDyeingCardType
2、上传处方单: 3、删除处方单: 4、批量开处方: EntitySet.ValidateEmpty(mainEntitySet,您未指定任何行!); --判断是否选中一行main实体集的数据。 EntitySet.JoinText(outParam.sCardNos,indexEntitySet,sCardNo);--将index实体集的sCardNo串联起来,默认‘,’间隔,传给外部参数sCardNos ExecSql(38722);--执行sql38722 DoLastQuery();--速查 sql执行脚本321_BatchPrescription --需要开处方单的卡 --查询卡信息,合卡的要汇总产量,写入临时表 --循环生成处方单 --计算染色水位 --写入处方头 --先写入配方染料 --再写入染程助剂 --辅助染程助剂 --更新染料百分比处方单位用量 --更新处方用量 --加此变量是为了抛出错误显示小色号 --写入处方明细 5、计算用量: GridView.GetSelectedRowsXML(grvDtl,nDosage+nCustomerDosage+iSourceType+iCalcType,outParam.sXML,,true);--将选中行的数据转化为临时表,写入选择的列。 EntitySet.RetriveBySql(dtlEntitySet,38831,outParam+indexEntitySet,,false,iIden,3);--刷新实体类行的数据。 --计算过程 UPDATE A SET @nDosage=Round(@nDosageSum * A.nOriginalRate,4) ,@nDosage=CASE WHEN @nDosage<0.4 THEN 0.4 WHEN @nDosage>1.5 THEN 1.5 ELSE @nDosage END ,nDosage=@nDosage ,nQty=CASE WHEN iSourceType IN (0,2) THEN ROUND(@nQty * A.nDosage * 10,3)--配方和手工加的都是缸卡比例算 WHEN iCalcType=1 THEN A.nDosage --固定用量 WHEN iCalcType=3 THEN Round(@nQty * A.nDosage * 10, 3) --缸卡百分比 WHEN iCalcType=2 THEN --染料百分比 CASE WHEN nCustomerDosage<0 THEN ROUND(@nQty * @nDosage * 10, 3) ELSE Round(@nQty * A.nCustomerDosage * 10, 3) END ELSE -1 --错误情况 END FROM #Dtl A WHERE iSourceType NOT IN (0,2) AND A.iCalcType=2
|