生产报告回写接口

This commit is contained in:
lihao 2025-11-27 10:07:49 +08:00
parent 111cc0399b
commit 3dadb084f3
3 changed files with 1158 additions and 0 deletions

View File

@ -0,0 +1,602 @@
package nccloud.web.mmpac.pwr.action;
import nc.bs.dao.BaseDAO;
import nc.bs.dao.DAOException;
import nc.bs.framework.common.NCLocator;
import nc.bs.mmpac.pmo.pac0002.bp.query.PMOAggVOQueryBP;
import nc.bs.mmpac.pmo.pac0002.bp.service.PMOBPService;
import nc.bs.mmpac.pmo.pac0002.bp.util.PMOBPCalUtil;
import nc.bs.mmpac.pmo.pac0002.bp.util.PMOBPUtil;
import nc.bs.pubapp.AppBsContext;
import nc.bs.uapbd.util.MyHelper;
import nc.impl.pubapp.pattern.data.vo.tool.VOConcurrentTool;
import nc.itf.mmpac.pickm.IPickmQueryService;
import nc.itf.uap.IUAPQueryBS;
import nc.jdbc.framework.processor.ColumnListProcessor;
import nc.jdbc.framework.processor.ColumnProcessor;
import nc.jdbc.framework.processor.MapListProcessor;
import nc.mmbd.utils.factoryparam.MMBDFactoryParameter;
import nc.util.mmf.busi.measure.NumScaleUtil;
import nc.util.mmf.framework.base.MMArrayUtil;
import nc.util.mmf.framework.base.MMMapUtil;
import nc.util.mmf.framework.base.MMNumberUtil;
import nc.util.mmf.framework.base.MMValueCheck;
import nc.util.mmf.framework.db.MMTempTable;
import nc.util.mmf.framework.gc.GCBillTransferTool;
import nc.util.mmf.framework.gc.GCBillUpdate;
import nc.vo.bd.material.MaterialVO;
import nc.vo.mmpac.pickm.entity.AggPickmVO;
import nc.vo.mmpac.pickm.entity.PickmHeadVO;
import nc.vo.mmpac.pickm.entity.PickmItemVO;
import nc.vo.mmpac.pmo.pac0002.constant.PMOConstLang;
import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
import nc.vo.mmpac.pmo.pac0002.entity.PMOHeadVO;
import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO;
import nc.vo.mmpac.pmo.pac0002.entity.PMOPlanOutputVO;
import nc.vo.mmpac.pmo.pac0002.enumeration.PMOFItemStatusEnum;
import nc.vo.mmpac.pmo.parameter.PMORewriteParaVO;
import nc.vo.pub.BusinessException;
import nc.vo.pub.lang.UFBoolean;
import nc.vo.pub.lang.UFDateTime;
import nc.vo.pub.lang.UFDouble;
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
import nc.vo.pubapp.pattern.pub.MapList;
import nc.vo.util.BDPKLockUtil;
import nccloud.dto.mmpac.pickm.pub.entity.PickmQueryInfoDTO;
import nccloud.framework.core.json.IJson;
import nccloud.framework.service.ServiceLocator;
import nccloud.framework.web.action.itf.ICommonAction;
import nccloud.framework.web.container.IRequest;
import nccloud.framework.web.json.JsonFactory;
import java.util.*;
public class PwrCheckRewriteAction implements ICommonAction {
@Override
public Object doAction(IRequest iRequest) {
String read = iRequest.read();
IJson json = JsonFactory.create();
// 获取请求查询信息
try {
Map map2 = json.fromJson(read, Map.class);
MapList<String, PMORewriteParaVO> paraMapList = new MapList();
List<String> hidList = new ArrayList();
hidList.add((String) map2.get("Cpmohid"));
PMOAggVO[] aggvos = (new PMOAggVOQueryBP()).getPMOAggVOsByIds((String[])hidList.toArray(new String[0]));
if (MMValueCheck.isEmpty(aggvos)) {
ExceptionUtils.wrappBusinessException(PMOConstLang.getMSG_REWRITE_WRNUM_AUTOERROR());
}
Set<String> originbidSet = new HashSet();
Set<String> bidSet = paraMapList.keySet();
Map<String, PMOHeadVO> headMap = new HashMap();
Map<String, PMOItemVO> itemMap = new HashMap();
for(PMOAggVO aggvo : aggvos) {
PMOHeadVO headvo = aggvo.getParentVO();
if (hidList.contains(headvo.getCpmohid())) {
headMap.put(headvo.getCpmohid(), headvo);
}
PMOItemVO[] items = aggvo.getChildrenVO();
if (!MMArrayUtil.isEmpty(items)) {
for(PMOItemVO item : items) {
originbidSet.add(item.getCmoid());
if (bidSet.contains(item.getCmoid())) {
itemMap.put(item.getCmoid(), item);
}
}
}
}
if (MMMapUtil.isEmpty(itemMap)) {
return null;
}
PMOItemVO[] items = (PMOItemVO[])itemMap.values().toArray(new PMOItemVO[0]);
List<String> bids = (List<String>) map2.get("bids");
for(String para : bids) {
if (!originbidSet.contains(para)) {
ExceptionUtils.wrappBusinessException(PMOConstLang.getMSG_PMO_DeleteLine());
}
}
BDPKLockUtil.lockSuperVO(items);
this.checkMOstatus(items, headMap);
Set<String> cmaterials = new HashSet();
Set<String> ctrantypes = new HashSet();
Set<String> pk_orgs = new HashSet();
MapList<String, String> sortOrgMarMap = new MapList();
for(PMOItemVO item : items) {
if (!cmaterials.contains(item.getCmaterialvid())) {
cmaterials.add(item.getCmaterialvid());
}
PMOHeadVO head = (PMOHeadVO)headMap.get(item.getCpmohid());
if (!MMValueCheck.isEmpty(head) && !ctrantypes.contains(head.getCtrantypeid())) {
ctrantypes.add(head.getCtrantypeid());
}
if (!pk_orgs.contains(item.getPk_org())) {
pk_orgs.add(item.getPk_org());
}
sortOrgMarMap.put(item.getPk_org(), item.getCmaterialvid());
}
Map<String, UFDouble> prodtolerance = new HashMap();
for(Map.Entry<String, List<String>> entry : sortOrgMarMap.entrySet()) {
Map<String, UFDouble> tempdowntolerance = PMOBPCalUtil.getProdtolerance((String)entry.getKey(), (String[])((List)entry.getValue()).toArray(new String[0]));
if (MMMapUtil.isNotEmpty(tempdowntolerance)) {
prodtolerance.putAll(tempdowntolerance);
}
}
Map<String, UFDouble> intolerance = PMOBPCalUtil.getInStockControlScope((String[])cmaterials.toArray(new String[0]));
Map<String, UFBoolean> autodonepara = PMOBPService.getIPMOTransTypeQueryService().getBAutoFinishByTranTypeIDs((String[])ctrantypes.toArray(new String[0]));
Map<String, UFBoolean> bpara = MMBDFactoryParameter.getPAC012BatchParaBoolean((String[])pk_orgs.toArray(new String[0]));
this.checkWrts(paraMapList, items);
List<PMOPlanOutputVO> planoutputList = new ArrayList();
for(int i = 0; i < items.length; ++i) {
List<PMORewriteParaVO> paraList = paraMapList.get(items[i].getCmoid());
PMOPlanOutputVO[] moPlanOutVOS = items[i].getPlanoutputs();
if (!MMArrayUtil.isEmpty(moPlanOutVOS)) {
for(PMOPlanOutputVO planOutVO : moPlanOutVOS) {
boolean isupd = false;
for(PMORewriteParaVO paravo : paraList) {
if (!MMMapUtil.isEmpty(paravo.getPoutMap())) {
UFDouble delNum = MMNumberUtil.toNotNullValue((UFDouble)paravo.getPoutMap().get(planOutVO.getCplanoutputid()));
if (MMNumberUtil.isNotNullAndNotZero(delNum)) {
(new NumScaleUtil()).checkNumberScale(new UFDouble[]{delNum}, planOutVO.getCunitid());
}
if (MMNumberUtil.isNotNullAndNotZero(delNum)) {
UFDouble wrNum = MMNumberUtil.add(new UFDouble[]{delNum, MMNumberUtil.toNotNullValue(planOutVO.getNwrnum())});
planOutVO.setNwrnum(wrNum);
planOutVO.setStatus(1);
PMOBPCalUtil.fillReAssNumber("nplanoutputnum", "nastplanoutputnum", planOutVO, "vchangerate", "nwrnum", "nwrastnum");
isupd = true;
}
}
}
if (isupd) {
planoutputList.add(planOutVO);
}
}
}
for(PMORewriteParaVO paravo : paraList) {
UFDouble delNum = MMNumberUtil.toNotNullValue(paravo.getDelNum());
if (MMNumberUtil.isNotNullAndNotZero(delNum)) {
(new NumScaleUtil()).checkNumberScale(new UFDouble[]{delNum}, items[i].getCunitid());
}
UFDouble wrNum = MMNumberUtil.add(new UFDouble[]{delNum, MMNumberUtil.toNotNullValue(items[i].getNwrnum())});
items[i].setNwrnum(wrNum);
PMOBPCalUtil.fillReAssNumber("nplanputnum", "nplanputastnum", items[i], "vchangerate", "nwrnum", "nwrastnum");
items[i].setStatus(1);
}
}
List<PMOItemVO> filterList = new ArrayList();
List<String> putplanfinishList = new ArrayList();
for(PMOItemVO item : items) {
String var10001 = item.getPk_org();
UFDouble downPara = (UFDouble)prodtolerance.get(var10001 + "#" + item.getCmaterialvid());
UFDouble compareplanputnum = item.getNplanputnum();
if (MMNumberUtil.isGtZero(downPara)) {
compareplanputnum = MMNumberUtil.multiply(new UFDouble[]{item.getNplanputnum(), MMNumberUtil.sub(UFDouble.ONE_DBL, new UFDouble[]{downPara.div((double)100.0F)})});
}
UFBoolean flag = UFBoolean.FALSE;
if (!MMMapUtil.isEmpty(bpara)) {
flag = (UFBoolean)bpara.get(item.getPk_org());
if (null == flag) {
flag = UFBoolean.FALSE;
}
}
if (flag.booleanValue()) {
UFDouble dpara = (UFDouble)intolerance.get(item.getCmaterialvid());
UFDouble dparabl = UFDouble.ONE_DBL;
if (!MMValueCheck.isEmpty(bpara)) {
dparabl = MMNumberUtil.add(new UFDouble[]{UFDouble.ONE_DBL, dpara.div((double)100.0F)});
}
UFDouble totalputnum = MMNumberUtil.add(new UFDouble[]{item.getNplanputnum(), item.getNrejectnum()});
if (MMNumberUtil.isLsEqual(item.getNwrnum(), MMNumberUtil.multiply(new UFDouble[]{totalputnum, dparabl}))) {
filterList.add(item);
}
if (MMNumberUtil.isGtEqual(item.getNwrnum(), compareplanputnum) && !MMMapUtil.isEmpty(autodonepara)) {
PMOHeadVO head = (PMOHeadVO)headMap.get(item.getCpmohid());
UFBoolean autoFlag = (UFBoolean)autodonepara.get(head.getCtrantypeid());
if (autoFlag.booleanValue()) {
BaseDAO dao = new BaseDAO();
// 查询备料计划 如果下游备料计划未出库数量计划出库-累计出库小于0生产订单自动完工取消 naccoutnum 累计出库数量 nplanoutnum计划出库
String pickmsql = "select cbmaterialvid,vrowno,nplanoutnum,naccoutnum from mm_pickm_b where cpickmid in ( select cpickmid from mm_pickm where csourcebillrowid='" + item.getCmoid() + "' and dr=0) and dr = 0";
List<Map<String,Object>> hmateral = (List<Map<String,Object>>) dao.executeQuery(pickmsql, new MapListProcessor());
List<String> vrownos = new ArrayList();
List<Map<String,Object>> maps = new ArrayList();
Boolean l=false;
for (Map<String,Object> map : hmateral) {
String material = MaterialVO.CODE+","+MaterialVO.NAME+","+MaterialVO.OUTTOLERANCE;
// 物料出库容差 % 0.0000
Map<String, Object> goodsMap = MyHelper.transferFields(MaterialVO.getDefaultTableName(), material, MaterialVO.PK_MATERIAL, item.getCmaterialvid());
String Outtolerance= null !=goodsMap.get("outtolerance") ? goodsMap.get("outtolerance").toString() : "0";
if(null != map.get("nplanoutnum") && null != map.get("naccoutnum") && (new UFDouble(String.valueOf(map.get("nplanoutnum").toString())).sub(new UFDouble(String.valueOf(map.get("naccoutnum").toString()))).abs()).compareTo(new UFDouble(String.valueOf(map.get("nplanoutnum").toString())).multiply(new UFDouble(String.valueOf(Outtolerance.toString())))) > 0) {
l=true;
Map<String, Object> map1 =new HashMap<>();
map1.put("vrowno",map.get("vrowno").toString());
map1.put("mrlname",goodsMap.get("name").toString());
map1.put("mrlcode",goodsMap.get("code").toString());
maps.add(map1);
}
}
if(l){
// String pickm = " select vbillcode,cpickmid from mm_pickm where csourcebillrowid='" + item.getCmoid() + "' and dr=0";
// List<Map<String,Object>> pickms = (List<Map<String,Object>>) dao.executeQuery(pickm, new MapListProcessor());
String err="";
for (Map<String,Object> vrowno : maps) {
String pmobillcode= head.getVbillcode();
String pmovrowno= item.getVrowno();
// String pickmbillcode= pickms.get(0).get("vbillcode").toString();
String pickmvrowno= vrowno.get("vrowno").toString();
String mrlname= vrowno.get("mrlname").toString();
String mrlcode= vrowno.get("mrlcode").toString();
err=err+"生产订单"+pmobillcode+""+pmovrowno+"的备料计划行"+pickmvrowno+"物料【"+mrlcode+","+mrlname+"】检查不通过\n";
}
return err;
}
}
}
} else {
UFDouble divNum = MMNumberUtil.add(new UFDouble[]{item.getNzcgnum(), item.getNzwwnum()});
divNum = MMNumberUtil.add(new UFDouble[]{divNum, item.getNzdbnum()});
UFDouble totalWRnum = MMNumberUtil.add(new UFDouble[]{divNum, item.getNwrnum()});
if (!MMNumberUtil.isLsZero(item.getNwrnum())) {
filterList.add(item);
}
if (totalWRnum.doubleValue() >= compareplanputnum.doubleValue() && !MMMapUtil.isEmpty(autodonepara)) {
PMOHeadVO head = (PMOHeadVO)headMap.get(item.getCpmohid());
UFBoolean autoFlag = (UFBoolean)autodonepara.get(head.getCtrantypeid());
if (autoFlag.booleanValue()) {
BaseDAO dao = new BaseDAO();
// 查询备料计划 如果下游备料计划未出库数量计划出库-累计出库小于0生产订单自动完工取消 naccoutnum 累计出库数量 nplanoutnum计划出库
String pickmsql = "select cbmaterialvid,vrowno,nplanoutnum,naccoutnum from mm_pickm_b where cpickmid in ( select cpickmid from mm_pickm where csourcebillrowid='" + item.getCmoid() + "' and dr=0) and dr = 0";
List<Map<String,Object>> hmateral = (List<Map<String,Object>>) dao.executeQuery(pickmsql, new MapListProcessor());
List<String> vrownos = new ArrayList();
List<Map<String,Object>> maps = new ArrayList();
Boolean l=false;
for (Map<String,Object> map : hmateral) {
String material =MaterialVO.CODE+","+MaterialVO.NAME+","+MaterialVO.OUTTOLERANCE;
// 物料出库容差 % 0.0000
Map<String, Object> goodsMap = MyHelper.transferFields(MaterialVO.getDefaultTableName(), material, MaterialVO.PK_MATERIAL, item.getCmaterialvid());
String Outtolerance= null !=goodsMap.get("outtolerance") ? goodsMap.get("outtolerance").toString() : "0";
if(null != map.get("nplanoutnum") && null != map.get("naccoutnum") && (new UFDouble(map.get("nplanoutnum").toString()).sub(new UFDouble(String.valueOf(map.get("naccoutnum").toString()))).abs()).compareTo(new UFDouble(String.valueOf(map.get("nplanoutnum").toString())).multiply(new UFDouble(String.valueOf(Outtolerance.toString())))) > 0) {
UFDouble num1 = new UFDouble(map.get("nplanoutnum").toString()).sub(new UFDouble(String.valueOf(map.get("naccoutnum").toString()))).abs();
l=true;
Map<String, Object> map1 =new HashMap<>();
map1.put("vrowno",map.get("vrowno").toString());
map1.put("mrlname",goodsMap.get("name").toString());
map1.put("mrlcode",goodsMap.get("code").toString());
maps.add(map1);
}
}
if(l){
// String pickm = " select vbillcode,cpickmid from mm_pickm where csourcebillrowid='" + item.getCmoid() + "' and dr=0";
// List<Map<String,Object>> pickms = (List<Map<String,Object>>) dao.executeQuery(pickm, new MapListProcessor());
String err="";
for (Map<String,Object> vrowno : maps) {
String pmobillcode= head.getVbillcode();
String pmovrowno= item.getVrowno();
// String pickmbillcode= pickms.get(0).get("vbillcode").toString();
String pickmvrowno= vrowno.get("vrowno").toString();
String mrlname= vrowno.get("mrlname").toString();
String mrlcode= vrowno.get("mrlcode").toString();
err=err+"生产订单"+pmobillcode+""+pmovrowno+"的备料计划行"+pickmvrowno+"物料【"+mrlcode+","+mrlname+"】检查不通过\n";
}
return err;
}
item.setFitemstatus(Integer.valueOf(PMOFItemStatusEnum.FINISH.getEnumValue().getValue()));
item.setTactendtime(new UFDateTime(AppBsContext.getInstance().getBusiDate().toPersisted()));
item.setStatus(1);
putplanfinishList.add(item.getCmoid());
}
}
}
}
return null;
} catch (BusinessException e) {
throw new RuntimeException(e);
}
}
private void checkMOstatus(PMOItemVO[] items, Map<String, PMOHeadVO> headMap) {
if (!MMArrayUtil.isEmpty(items)) {
StringBuilder msg = new StringBuilder("");
for(PMOItemVO item : items) {
if (PMOFItemStatusEnum.PLAN.equalsValue(item.getFitemstatus()) || PMOFItemStatusEnum.AUDIT.equalsValue(item.getFitemstatus())) {
PMOHeadVO head = (PMOHeadVO)headMap.get(item.getCpmohid());
String vbillcode = "";
String vrowno = "";
if (!MMValueCheck.isEmpty(head)) {
vbillcode = head.getVbillcode();
vrowno = item.getVrowno();
}
msg.append(PMOConstLang.getMSG_REWRITE_WRNUM_AUTOERROR(vbillcode, vrowno)).append("\n");
}
if (PMOFItemStatusEnum.CLOSE.equalsValue(item.getFitemstatus())) {
PMOHeadVO head = (PMOHeadVO)headMap.get(item.getCpmohid());
String vbillcode = "";
String vrowno = "";
if (!MMValueCheck.isEmpty(head)) {
vbillcode = head.getVbillcode();
vrowno = item.getVrowno();
}
msg.append(PMOConstLang.getMSG_REWRITE_WRNUM_CLOSEERROR(vbillcode, vrowno)).append("\n");
}
}
if (msg.length() > 0) {
ExceptionUtils.wrappBusinessException(msg.toString());
}
}
}
private void checkWrts(MapList<String, PMORewriteParaVO> mapList, PMOItemVO[] vos) {
if (MMValueCheck.isEmpty(mapList) || MMArrayUtil.isEmpty(vos)) {
ExceptionUtils.wrappBusinessException(PMOConstLang.getMSG_REWRITE_PARAERROR());
}
MapList<String, PMORewriteParaVO> paraList = new MapList();
List<PMOItemVO> itemList = new ArrayList();
for(int i = 0; i < vos.length; ++i) {
List<PMORewriteParaVO> paraListByid = mapList.get(vos[i].getCmoid());
if (2 == ((PMORewriteParaVO)paraListByid.get(0)).getBillStatus() && !MMValueCheck.isEmpty(((PMORewriteParaVO)paraListByid.get(0)).getBillTs())) {
paraList.putAll(vos[i].getCmoid(), paraListByid);
itemList.add(vos[i]);
}
}
if (paraList.size() > 0) {
PMOItemVO[] newvos = (PMOItemVO[])itemList.toArray(new PMOItemVO[0]);
PMOItemVO[] originalVOs = this.construcnVOs(paraList, newvos);
(new VOConcurrentTool()).checkTS(newvos, originalVOs);
}
}
private PMOItemVO[] construcnVOs(MapList<String, PMORewriteParaVO> paraMapList, PMOItemVO[] vos) {
List<PMOItemVO> itemList = new ArrayList();
for(int i = 0; i < vos.length; ++i) {
List<PMORewriteParaVO> paraListByid = paraMapList.get(vos[i].getCmoid());
PMOItemVO vo = new PMOItemVO();
vo.setTs(((PMORewriteParaVO)paraListByid.get(0)).getBillTs());
vo.setPrimaryKey(vos[i].getPrimaryKey());
itemList.add(vo);
}
return (PMOItemVO[])itemList.toArray(new PMOItemVO[itemList.size()]);
}
public Map<String, UFBoolean> filterDelieveredMo(String[] moids) throws BusinessException {
try {
IUAPQueryBS service = (IUAPQueryBS) NCLocator.getInstance().lookup(IUAPQueryBS.class);
StringBuilder sql = new StringBuilder();
sql.append(" select ").append("csourcebillid").append(" from ").append(PickmHeadVO.getDefaultTableName()).append(" inner join ").append(PickmItemVO.getDefaultTableName()).append(" on ").append(PickmHeadVO.getDefaultTableName()).append(".").append("cpickmid").append("=").append(PickmItemVO.getDefaultTableName()).append(".").append("cpickmid").append(" where ").append("vsourcebilltype").append("='55A2'").append(" and ").append(MMTempTable.getWhereInSQL("tmp_mm_srcbid", moids, "csourcebillid"));
StringBuilder sql1 = sql.append(" and ").append(PickmItemVO.getDefaultTableName()).append(".").append("naccoutnum").append(">0").append(" and ").append(PickmItemVO.getDefaultTableName()).append(".").append("bbackflush").append("='N'");
List<String> doutMoids = (List)service.executeQuery(sql1.toString(), new ColumnListProcessor());
StringBuilder sql2 = sql.append(" and ").append(PickmItemVO.getDefaultTableName()).append(".").append("bbackflush").append("='Y'");
List<String> transMoids = (List)service.executeQuery(sql2.toString(), new ColumnListProcessor());
doutMoids.addAll(transMoids);
Map<String, UFBoolean> returnmap = new HashMap();
for(String moid : moids) {
if (doutMoids.contains(moid)) {
returnmap.put(moid, UFBoolean.TRUE);
} else {
returnmap.put(moid, UFBoolean.FALSE);
}
}
return returnmap;
} catch (Exception e) {
ExceptionUtils.marsh(e);
return null;
}
}
/**
* 处理聚合VO根据订单类型获取不符合条件的数据
* @param aggVOs 聚合VO数组
* @param type 订单类型1-请购单2-生产订单
* @return 不符合条件的聚合VO数组
*/
public AggPickmVO[] processAggVOs(AggPickmVO[] aggVOs, String type) throws DAOException {
List<AggPickmVO> invalidList = new ArrayList<>();
BaseDAO dao = new BaseDAO(); // 保持DAO实例优化
for (AggPickmVO vo : aggVOs) {
PickmItemVO[] items = (PickmItemVO[]) vo.getChildren(PickmItemVO.class);
if (items != null) {
for (PickmItemVO child : items) {
boolean isValid = true; // 标识是否符合条件符合则不收集
// 物料类型过滤逻辑仅当不是来自cpickmbids时才执行判断
String materalType = child.getVbdef14();
if (null == materalType) {
// 查询物料信息
String sql = "select cmaterialvid from mm_pickm where cpickmid = '" + child.getCpickmid() + "' and dr = 0";
String hmateral = (String) dao.executeQuery(sql, new ColumnProcessor());
// 根据订单类型执行不同的BOM查询逻辑
String bomcode = null;
if ("1".equals(type)) { // 请购单查询逻辑
sql="SELECT bd_defdoc.code FROM bd_bom_b " +
"LEFT JOIN bd_defdoc ON bd_bom_b.vdef14 = bd_defdoc.pk_defdoc " +
"WHERE bd_bom_b.cbomid in (select distinct bd_bom.cbomid from bd_bom bd_bom " +
"where ( bd_bom.pk_org = '"+child.getPk_org()+"' AND bd_bom.hcmaterialid = '"+hmateral+"' " +
"AND bd_bom.hfbomcategory = 1 AND bd_bom.hbcustomized = 'N' ) " +
"and bd_bom.dr = 0 and bd_bom.hbcustomized = 'N' and bd_bom.fbomtype != 3 ) " +
"AND bd_bom_b.dr = 0 and bd_bom_b.cmaterialvid='" + child.getCbmaterialvid() + "'";
bomcode = (String) dao.executeQuery(sql, new ColumnProcessor());
} else if ("2".equals(type)) { // 生产订单查询逻辑
sql="SELECT bd_defdoc.code FROM bd_bom_b " +
"LEFT JOIN bd_defdoc ON bd_bom_b.vdef14 = bd_defdoc.pk_defdoc " +
"WHERE bd_bom_b.cbomid in (select distinct bd_bom.cbomid from bd_bom bd_bom " +
"where ( bd_bom.pk_org = '"+child.getPk_org()+"' AND bd_bom.hcmaterialid = '"+hmateral+"' " +
"AND bd_bom.hfbomcategory = 1 AND bd_bom.hbcustomized = 'N' ) " +
"and bd_bom.dr = 0 and bd_bom.hbcustomized = 'N' and bd_bom.fbomtype != 3 ) " +
"AND bd_bom_b.dr = 0 and bd_bom_b.cmaterialvid='" + child.getCbmaterialvid() + "'";
bomcode = (String) dao.executeQuery(sql, new ColumnProcessor());
}
// 如果初始查询无结果执行二次查询根据类型区分
if (null == bomcode) {
if ("1".equals(type)) { // 请购单二次查询
String secondsql=" SELECT bd_defdoc.code FROM bd_bom_b " +
"LEFT JOIN bd_defdoc ON bd_bom_b.vdef14 = bd_defdoc.pk_defdoc " +
"WHERE bd_bom_b.cbomid in (select bd_bom.cbomid from bd_bom bd_bom " +
"WHERE bd_bom.pk_org = '"+child.getPk_org()+"' and bd_bom.hcmaterialid in " +
"(SELECT bd_bom_b.cmaterialvid FROM bd_bom_b " +
"LEFT JOIN bd_defdoc ON bd_bom_b.vdef14 = bd_defdoc.pk_defdoc " +
"WHERE bd_bom_b.cbomid in (select distinct bd_bom.cbomid from bd_bom bd_bom " +
"where ( bd_bom.pk_org = '"+child.getPk_org()+"' AND bd_bom.hcmaterialid = '"+hmateral+"' " +
"AND bd_bom.hfbomcategory = 1 AND bd_bom.hbcustomized = 'N' ) " +
"and bd_bom.dr = 0 and bd_bom.hbcustomized = 'N' and bd_bom.fbomtype != 3 ) " +
"AND bisvirtual='Y') AND bd_bom.hfbomcategory = 1 AND bd_bom.hbcustomized = 'N' " +
"and bd_bom.dr = 0 and bd_bom.hbcustomized = 'N' and bd_bom.fbomtype != 3 ) " +
"AND bd_bom_b.dr = 0 and bd_bom_b.cmaterialvid='"+child.getCbmaterialvid()+"'";
bomcode = (String) dao.executeQuery(secondsql, new ColumnProcessor());
} else if ("2".equals(type)) { // 生产订单二次查询
String secondsql=" SELECT bd_defdoc.code FROM bd_bom_b " +
"LEFT JOIN bd_defdoc ON bd_bom_b.vdef14 = bd_defdoc.pk_defdoc " +
"WHERE bd_bom_b.cbomid in (select bd_bom.cbomid from bd_bom bd_bom " +
"WHERE bd_bom.pk_org = '"+child.getPk_org()+"' and bd_bom.hcmaterialid in " +
"(SELECT bd_bom_b.cmaterialvid FROM bd_bom_b " +
"LEFT JOIN bd_defdoc ON bd_bom_b.vdef14 = bd_defdoc.pk_defdoc " +
"WHERE bd_bom_b.cbomid in (select distinct bd_bom.cbomid from bd_bom bd_bom " +
"where ( bd_bom.pk_org = '"+child.getPk_org()+"' AND bd_bom.hcmaterialid = '"+hmateral+"' " +
"AND bd_bom.hfbomcategory = 1 AND bd_bom.hbcustomized = 'N' ) " +
"and bd_bom.dr = 0 and bd_bom.hbcustomized = 'N' and bd_bom.fbomtype != 3 ) " +
"AND bisvirtual='Y') AND bd_bom.hfbomcategory = 1 AND bd_bom.hbcustomized = 'N' " +
"and bd_bom.dr = 0 and bd_bom.hbcustomized = 'N' and bd_bom.fbomtype != 3 ) " +
"AND bd_bom_b.dr = 0 and bd_bom_b.cmaterialvid='"+child.getCbmaterialvid()+"'";
bomcode = (String) dao.executeQuery(secondsql, new ColumnProcessor());
}
}
if(bomcode != null && !bomcode.equals("")) {
if(bomcode.equals(type)){
isValid = false; // 不符合条件
}
}else{
// 检查物料中的物料类型可根据订单类型添加不同判断
sql = "select martype from bd_materialstock where pk_material = '" + child.getCbmaterialvid() + "' and pk_org = '" + child.getPk_org() + "' and dr = 0";
String matType = (String) dao.executeQuery(sql, new ColumnProcessor());
// 请购单和生产订单可能有不同的物料类型过滤标准
if ("2".equals(type)) {
// 请购单非制造件或PR类型不符合
if (null == matType || "PR".equals(matType) || "".equals(matType)) {
isValid = false;
}
} else if ("1".equals(type)) {
// 生产订单可能有更严格的过滤条件
if (null == matType || "MR".equals(matType) || "".equals(matType)) {
isValid = false;
}
}
}
// // 判断是否为不符合条件的数据根据类型可能有不同判断标准
// if (null != bomcode && "2".equals(bomcode)) {
// isValid = false; // 采购件不符合
// } else if (!(null != bomcode && "1".equals(bomcode))) {
// // 检查物料类型可根据订单类型添加不同判断
// sql = "select martype from bd_materialstock where pk_material = '" + child.getCbmaterialvid() + "' and pk_org = '" + child.getPk_org() + "' and dr = 0";
// String matType = (String) dao.executeQuery(sql, new ColumnProcessor());
//
// // 请购单和生产订单可能有不同的物料类型过滤标准
// if ("2".equals(type)) {
// // 请购单非制造件或PR类型不符合
// if (null == matType || "PR".equals(matType) || "".equals(matType)) {
// isValid = false;
// }
// } else if ("1".equals(type)) {
// // 生产订单可能有更严格的过滤条件
// if (null == matType || "MR".equals(matType) || "".equals(matType)) {
// isValid = false;
// }
// }
// }
} else {
// 有物料类型时的判断
String sql = "SELECT bd_defdoc.code FROM bd_defdoc where bd_defdoc.pk_defdoc = '" + materalType + "'";
String bomcode = (String) dao.executeQuery(sql, new ColumnProcessor());
// 1 制造件
// 2 采购件
// 根据订单类型判断不符合条件
if ("1".equals(type)) {
// 请购单采购件或未知类型不符合
if (null == bomcode || "1".equals(bomcode) || "".equals(bomcode)) {
isValid = false;
}
} else if ("2".equals(type)) {
// 生产订单可能有不同的判断标准
if (null == bomcode || "1".equals(bomcode)|| "".equals(bomcode)) {
isValid = false;
}
}
}
// 检查是否为项目专用料可根据订单类型调整判断逻辑
if (!child.getBprojectmaterial().booleanValue()) {
// 生产订单可能对项目专用料有更严格要求
if ("2".equals(type) || "1".equals(type)) {
isValid = false;
}
}
// 收集不符合条件的数据
if (!isValid) {
List<PickmItemVO> pickmItemVOList = new ArrayList<>();
pickmItemVOList.add(child);
AggPickmVO newVO = new AggPickmVO();
newVO.setParent(vo.getParent());
newVO.setChildren(PickmItemVO.class, pickmItemVOList.toArray(new PickmItemVO[0]));
invalidList.add(newVO);
}
}
}
}
return invalidList.toArray(new AggPickmVO[0]);
}
}

View File

@ -402,6 +402,7 @@
<action>mmpac.applytask.opreqpushtotask</action>
<action>mmpac.applytask.bodyAfterEdit</action>
<action>mmpac.applytask.queryByCond</action>
<action>mmpac.pwr.checkRewrite</action>
</actions>
</authorize>
<authorize><!-- 生产订单工作台 -->

View File

@ -0,0 +1,555 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<actions>
<action>
<name>mmpac.pwr.queryPmos</name>
<label>流程生产订单拉单查询</label>
<clazz>nccloud.web.mmpac.pwr.action.QueryPmoAction</clazz>
</action>
<action>
<name>mmpac.pwr.transfromPmo</name>
<label>流程生产订单拉单</label>
<clazz>nccloud.web.mmpac.pwr.action.TransFromPmoAction</clazz>
</action>
<action>
<name>mmpac.pwr.queryDmos</name>
<label>流程生产订单拉单查询</label>
<clazz>nccloud.web.mmpac.pwr.action.QueryDmoAction</clazz>
</action>
<action>
<name>mmpac.pwr.transfromDmo</name>
<label>流程生产订单拉单</label>
<clazz>nccloud.web.mmpac.pwr.action.TransFromDmoAction</clazz>
</action>
<action>
<name>mmpac.pwr.queryPputplan</name>
<label>流程投放计划拉单查询</label>
<clazz>nccloud.web.mmpac.pwr.pull.action.QueryPPutPlanAction</clazz>
</action>
<action>
<name>mmpac.pwr.transfromPputplan</name>
<label>流程投放计划拉单</label>
<clazz>nccloud.web.mmpac.pwr.pull.action.TransFromPPutPlanAction
</clazz>
</action>
<action>
<name>mmpac.pwr.queryDputplan</name>
<label>离散投放计划拉单查询</label>
<clazz>nccloud.web.mmpac.pwr.pull.action.QueryDPutPlanAction</clazz>
</action>
<action>
<name>mmpac.pwr.transfromDputplan</name>
<label>离散投放计划拉单</label>
<clazz>nccloud.web.mmpac.pwr.pull.action.TransFromDPutPlanAction
</clazz>
</action>
<action>
<name>mmpac.pwr.queryList</name>
<label>流程生产报告列表查询</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrQueryAction</clazz>
</action>
<action>
<name>mmpac.pwr.queryPage</name>
<label>分页查询</label>
<clazz>nccloud.web.mmpac.pwr.action.QueryPageAction</clazz>
</action>
<action>
<name>mmpac.pwr.queryPwrCard</name>
<label>流程生产报告卡片数据查询</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrCardQueryAction</clazz>
</action>
<action>
<name>mmpac.pwr.edit</name>
<label>流程生产报告修改</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrEditAction</clazz>
</action>
<action>
<name>mmpac.pwr.copyPwrCard</name>
<label>流程生产报告卡片数据复制</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrCopyAction</clazz>
</action>
<action>
<name>mmpac.pwr.queryPwrPick</name>
<label>流程生产报告卡片耗用查询</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrPickQueryAction</clazz>
</action>
<action>
<name>mmpac.pwr.queryPwrQuality</name>
<label>流程生产报告卡片质量查询</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrQualityQueryAction</clazz>
</action>
<action>
<name>mmpac.pwr.newSave</name>
<label>流程生产报告卡片数据查询</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrNewSaveAction</clazz>
</action>
<action>
<name>mmpac.pwr.editSave</name>
<label>流程生产报告卡片数据查询</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrEditSaveAction</clazz>
</action>
<action>
<name>mmpac.pwr.SaveCommit</name>
<label>流程生产报告保存提交</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrSaveCommitAction</clazz>
</action>
<action>
<name>mmpac.pwr.delete</name>
<label>流程生产报告卡片数据查询</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrDeleteAction</clazz>
</action>
<action>
<name>mmpac.pwr.batchdelete</name>
<label>流程生产报告卡片数据查询</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrBatchDeleteAction</clazz>
</action>
<action>
<name>mmpac.pwr.headAfterEdit</name>
<label>流程生产报告表头编辑后事件</label>
<clazz>nccloud.web.mmpac.pwr.event.HeadAfterEditAction</clazz>
</action>
<action>
<name>mmpac.pwr.headBeforeEdit</name>
<label>流程生产报告表头编辑前事件</label>
<clazz>nccloud.web.mmpac.pwr.event.HeadBeforeEditAction</clazz>
</action>
<action>
<name>mmpac.pwr.bodyBeforeEdit</name>
<label>流程生产订单-表体编辑前事件</label>
<clazz>nccloud.web.mmpac.pwr.event.BodyBeforeEditAction</clazz>
</action>
<action>
<name>mmpac.pwr.bodyAfterEdit</name>
<label>流程生产订单-表体编辑后事件</label>
<clazz>nccloud.web.mmpac.pwr.event.BodyAfterEditAction</clazz>
</action>
<action>
<name>mmpac.pwr.orgChangEvent</name>
<label>流程生产订单-组织编辑事件</label>
<clazz>nccloud.web.mmpac.pwr.event.OrgChangeEventAction</clazz>
</action>
<action>
<name>mmpac.pwr.commit</name>
<label>流程生产报告卡片数据查询</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrCommitAction</clazz>
</action>
<action>
<name>mmpac.pwr.uncommit</name>
<label>流程生产报告卡片数据查询</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrUncommitAction</clazz>
</action>
<action>
<name>mmpac.pwr.ApplyCheck</name>
<label>流程生产报告列表报检</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrApplyCheckAction</clazz>
</action>
<action>
<name>mmpac.pwr.EmpassCheck</name>
<label>流程生产报告紧急放行</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrEmpassCheckAction</clazz>
</action>
<action>
<name>mmpac.pwr.Pick</name>
<label>流程生产报告列表耗用</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrBatchPickAction</clazz>
</action>
<action>
<name>mmpac.pwr.CardPick</name>
<label>流程生产报告卡片耗用</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrCardPickAction</clazz>
</action>
<action>
<name>mmpac.pwr.UnPick</name>
<label>流程生产报告列表取消耗用</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrBatchUnPickAction</clazz>
</action>
<action>
<name>mmpac.pwr.CardUnPick</name>
<label>流程生产报告卡片取消耗用</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrCardUnPickAction</clazz>
</action>
<action>
<name>mmpac.pwr.BackFlush</name>
<label>流程生产报告列表自动倒冲</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrBatchBackFlushAction</clazz>
</action>
<action>
<name>mmpac.pwr.CardBackFlush</name>
<label>流程生产报告卡片自动倒冲</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrCardBackFlushAction</clazz>
</action>
<action>
<name>mmpac.pwr.UnBackFlush</name>
<label>流程生产报告列表取消自动倒冲</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrBatchUnBackFlushAction</clazz>
</action>
<action>
<name>mmpac.pwr.CardUnBackFlush</name>
<label>流程生产报告卡片取消自动倒冲</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrCardUnBackFlushAction</clazz>
</action>
<action>
<name>mmpac.pwr.GrandAfterEdit</name>
<label>流程生产报告孙表编辑后事件</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrGrandAfterEventAction</clazz>
</action>
<action>
<name>mmpac.pwr.CreateOutput</name>
<label>流程生产报告卡片计算产出</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrCardCreateOutputAction</clazz>
</action>
<action>
<name>mmpac.pwr.CreatePick</name>
<label>流程生产报告卡片计算产出</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrCreatePickAction</clazz>
</action>
<action>
<name>mmpac.pwr.WorkDoneSetCheckClick</name>
<label>流程生产报告完工齐套检查</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrWorkDoneSetCheckAction</clazz>
</action>
<action>
<name>mmpac.pwr.ListProdInQueryQuality</name>
<label>流程生产报告列表合格入库查询</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrProdInQueryQualityAction
</clazz>
</action>
<action>
<name>mmpac.pwr.ListProdIn</name>
<label>流程生产报告合格入库</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrProdInAction</clazz>
</action>
<action>
<name>mmpac.pwr.ListDiscardInQueryQuality</name>
<label>流程生产报告列表报废批量入库查询</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrDiscardInQueryQualityAction
</clazz>
</action>
<action>
<name>mmpac.pwr.DiscardBatchIn</name>
<label>流程生产报告报废批量入库</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrDiscardBatchInAction</clazz>
</action>
<action>
<name>mmpac.pwr.discardbatchinafteredit</name>
<label>流程生产报告报废批量入库编辑后事件</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrDiscardBatchInAfterEditAction
</clazz>
</action>
<action>
<name>mmpac.pwr.prodinafteredit</name>
<label>流程生产报告合格入库编辑后事件</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrProdinAfterEditAction</clazz>
</action>
<action>
<name>mmpac.pwr.discardinafteredit</name>
<label>流程生产报告报废处理编辑后事件</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrDiscardinAfterEditAction
</clazz>
</action>
<action>
<name>mmpac.pwr.DiscardIn</name>
<label>流程生产报告报废处理</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrDiscardInAction</clazz>
</action>
<action>
<name>mmpac.pwr.DiscardInAddMo</name>
<label>流程生产报告报废补单</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrDiscardInAddMoAction</clazz>
</action>
<action>
<name>mmpac.pwr.DiscardInAddPut</name>
<label>流程生产报告报废补投</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrDiscardInAddPutAction</clazz>
</action>
<action>
<name>mmpac.pwr.manualExamQueryQuality</name>
<label>流程生产报告手工检验查询质量信息孙表</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrManualExamQueryQualityAction
</clazz>
</action>
<action>
<name>mmpac.pwr.manualExam</name>
<label>流程生产报告手工检验按钮的校验</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrManualExamAction</clazz>
</action>
<action>
<name>mmpac.pwr.ManualBodyAfterEdit</name>
<label>流程生产报告手工检验表体编辑后</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrManualBodyAfterEditAction
</clazz>
</action>
<action>
<name>mmpac.pwr.CardProdInQueryQuality</name>
<label>流程生产报告卡片合格入库查询</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrCardProdInQueryQualityAction
</clazz>
</action>
<action>
<name>mmpac.pwr.prodInSnQuery</name>
<label>生产报告合格入库序列号查询</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrProdInSnQueryQualityAction
</clazz>
</action>
<action>
<name>mmpac.pwr.prodInSn</name>
<label>生产报告合格入库序列号确定</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrProdInSnAction</clazz>
</action>
<action>
<name>mmpac.pwr.CardDiscardInQueryQuality</name>
<label>流程生产报告卡片报废处理查询</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrCardDiscardInQueryQualityAction
</clazz>
</action>
<action>
<name>mmpac.pwr.CardDiscardBatchInQueryQuality</name>
<label>流程生产报告卡片报废批量入库查询</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrCardDiscardBatchInQueryQualityAction
</clazz>
</action>
<action>
<name>mmpac.pwr.ManualConfirmAction</name>
<label>流程生产报告手工检验-确定按钮操作</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrManualConfirmAction</clazz>
</action>
<action>
<name>mmpac.pwr.HandOverValidatorAction</name>
<label>流程生产报告移交数据校验及处理</label>
<clazz>nccloud.web.mmpac.pwr.event.HandOverValidatorAction</clazz>
</action>
<action>
<name>mmpac.pwr.HandOverVaildInGrandAction</name>
<label>流程生产报告移交数据校验及处理(质量孙表上)</label>
<clazz>nccloud.web.mmpac.pwr.event.HandOverVaildInGrandAction</clazz>
</action>
<action>
<name>mmpac.pwr.HandOverOkAction</name>
<label>流程生产报告移交确认处理</label>
<clazz>nccloud.web.mmpac.pwr.action.HandOverOkAction</clazz>
</action>
<action>
<name>mmpac.pwr.GrandGetProdin</name>
<label>流程生产报告质量孙表合格入库对话框</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrGrandGetProdInAction</clazz>
</action>
<action>
<name>mmpac.pwr.GrandGetDiscardin</name>
<label>流程生产报告质量孙表报废处理对话框</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrGrandGetDiscardInAction</clazz>
</action>
<action>
<name>mmpac.pwr.GrandGetDiscardBatchin</name>
<label>流程生产报告质量孙表报废批量入库对话框</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrGrandGetDiscardBatchInAction
</clazz>
</action>
<action>
<name>mmpac.pwr.ManualBodyBeforeEdit</name>
<label>流程生产报告手工检验表体编辑后</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrManualBodyBeforeEditAction
</clazz>
</action>
<action>
<name>mmpac.pwr.ListRework</name>
<label>流程生产报告列表返工</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrListReworkAction</clazz>
</action>
<action>
<name>mmpac.pwr.CardRework</name>
<label>流程生产报告卡片返工</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrCardReworkAction</clazz>
</action>
<action>
<name>mmpac.pwr.GrandRework</name>
<label>流程生产报告质量孙表返工</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrGrandReworkAction</clazz>
</action>
<action>
<name>mmpac.pwr.print</name>
<label>流程生产报告打印</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrPrintAction</clazz>
</action>
<action>
<name>mmpac.pwr.printpick</name>
<label>流程生产报告打印材料消耗</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrPrintPickAction</clazz>
</action>
<action>
<name>mmpac.pwr.dirprintbarcode</name>
<label>流程生产报告直接打印条码</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrDirPrintBarcodeAction</clazz>
</action>
<action>
<name>mmpac.pwr.qrybillinfo</name>
<label>条码打印查询物料信息</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrQryPrintBarCodeAction</clazz>
</action>
<action>
<name>mmpac.pwr.printbarcode</name>
<label>流程生产报告打印条码</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrPrintBarcodeAction</clazz>
</action>
<action>
<name>mmpac.pwr.queryidentify</name>
<label>行标识</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrGetIdentifyAction</clazz>
</action>
<action>
<name>mmpac.pwr.copyquality</name>
<label>复制质量孙表</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrCopyQualityAction</clazz>
</action>
<action>
<name>mmpac.pwr.isFreeCheck</name>
<label>是否免检</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrIsFreeCheckAction</clazz>
</action>
<action>
<name>mmpac.pwr.ManualRowCopyProcessNum</name>
<label>手工检验弹窗-表体复制行-处理数量的默认值-进行主辅换算</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrManualRowCopyProcessNum</clazz>
</action>
<action>
<name>mmpac.pwr.DiscardBatchInBeforeEdit</name>
<label>报废批量入库编辑前事件</label>
<clazz>nccloud.web.mmpac.pwr.event.DiscardBatchInBeforeEditAction
</clazz>
</action>
<action>
<name>mmpac.pwr.DiscardInBeforeEdit</name>
<label>报废处理编辑前事件</label>
<clazz>nccloud.web.mmpac.pwr.event.DiscardInBeforeEditAction</clazz>
</action>
<action>
<name>mmpac.pwr.MMToWr</name>
<label>生产模块到生产报告前台推单</label>
<clazz>nccloud.web.mmpac.pwr.action.MMToWrAction</clazz>
</action>
<action>
<name>mmpac.pwr.querymotranstype</name>
<label>订单交易类型</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrGetMoTranstypeAction</clazz>
</action>
<action>
<name>mmpac.pwr.checkpermission</name>
<label>订单交易类型</label>
<clazz>nccloud.web.mmpac.pwr.action.CheckPwrDataPermission</clazz>
</action>
<action>
<name>mmpac.pwr.transtypeExtQuery</name>
<label>生产报告-交易类型扩展表查询</label>
<clazz>nccloud.web.mmpac.pwr.transtype.action.WrTransTypeExtQuery
</clazz>
</action>
<action>
<name>mmpac.pwr.queryserial</name>
<label>序列号</label>
<clazz>nccloud.web.mmpac.pwr.action.QuerySerialAction</clazz>
</action>
<action>
<name>mmpac.pwr.serialnoBodyBeforeEdit</name>
<label>序列号表体编辑前事件</label>
<clazz>nccloud.web.mmpac.pwr.event.WrSerNoBodyBeforeEditAction</clazz>
</action>
<action>
<name>mmpac.pwr.serialnoBodyAfterEdit</name>
<label>序列号表体编辑后事件</label>
<clazz>nccloud.web.mmpac.pwr.event.WrSerNoBodyAfterEditAction</clazz>
</action>
<action>
<name>mmpac.pwr.geneSerNo</name>
<label>生成序列号接口</label>
<clazz>nccloud.web.mmpac.pwr.sn.action.WrGeneSerNoAction</clazz>
</action>
<action>
<name>mmpac.pwr.serNoOk</name>
<label>序列号确定</label>
<clazz>nccloud.web.mmpac.pwr.sn.action.WrSerNoOkAction</clazz>
</action>
<action>
<name>mmpac.pwr.serNoAddLine</name>
<label>序列号表体增行</label>
<clazz>nccloud.web.mmpac.pwr.sn.action.WrSerNoAddLineAction</clazz>
</action>
<action>
<name>mmpac.pwr.serNoRowChange</name>
<label>序列号行改变事件</label>
<clazz>nccloud.web.mmpac.pwr.event.WrSerNoRowChangeAction</clazz>
</action>
<action>
<name>mmpac.pwr.task</name>
<label>跳转作业量校验</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrTaskAction</clazz>
</action>
<action>
<name>mmpac.pwr.queryByCond</name>
<label>生产报告查询-数据穿透</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrQueryByConditionAction</clazz>
</action>
<action>
<name>mmpac.pwr.checkRewrite</name>
<label>生产报告保存前校验回写</label>
<clazz>nccloud.web.mmpac.pwr.action.PwrCheckRewriteAction</clazz>
</action>
</actions>