下达后回写是否已经下达字段
This commit is contained in:
parent
08be4cff54
commit
dbcbb3e1ca
|
@ -1,9 +1,12 @@
|
|||
package nccloud.web.mmpac.pickm.action;
|
||||
|
||||
import nc.bs.dao.BaseDAO;
|
||||
import nc.bs.dao.DAOException;
|
||||
import nc.itf.ic.m4a.IGeneralInMaintain;
|
||||
import nc.itf.mmpac.pickm.IPickmQueryService;
|
||||
import nc.itf.pu.m20.IPraybillMaintain;
|
||||
import nc.itf.uap.pf.busiflow.PfButtonClickContext;
|
||||
import nc.jdbc.framework.processor.ColumnProcessor;
|
||||
import nc.util.mmf.busi.service.PFPubService;
|
||||
import nc.util.mmf.framework.base.MMValueCheck;
|
||||
import nc.vo.ic.m4a.entity.GeneralInVO;
|
||||
|
@ -30,7 +33,7 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 备料计划转请购单
|
||||
* 备料计划转请购单
|
||||
*/
|
||||
public class PickmToBuyingreqAction implements ICommonAction {
|
||||
@Override
|
||||
|
@ -38,9 +41,9 @@ public class PickmToBuyingreqAction implements ICommonAction {
|
|||
String read = iRequest.read();
|
||||
IJson json = JsonFactory.create();
|
||||
try {
|
||||
// 获取请求查询信息
|
||||
// 获取请求查询信息
|
||||
PickmQueryInfoDTO paramDTO = json.fromJson(read, PickmQueryInfoDTO.class);
|
||||
// 获取主键
|
||||
// 获取主键
|
||||
String[] cpickmids = paramDTO.getCpickmids();
|
||||
// String[] cpickmbids = paramDTO.getCpickmbids();
|
||||
// if (MMValueCheck.isEmpty(cpickmids) && (null == cpickmbids || cpickmbids.length == 0)) {
|
||||
|
@ -52,17 +55,33 @@ public class PickmToBuyingreqAction implements ICommonAction {
|
|||
aggVOs = service.queryBillsByPks(cpickmids);
|
||||
}
|
||||
if (MMValueCheck.isEmpty(aggVOs)) {
|
||||
/*@res "单据已被修改或删除,请刷新界面重新操作!"*/
|
||||
/*@res "单据已被修改或删除,请刷新界面重新操作!"*/
|
||||
ExceptionUtils.wrapBusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("5008100_0", "05008100-0009"));
|
||||
}
|
||||
// AggPickmVO[] aggPickmVOS=processAggVOs(aggVOs);
|
||||
// 转换数据
|
||||
PraybillVO[] prayVOs = convertToGeneralInVO(processAggVOs(aggVOs), null);
|
||||
// 转换数据
|
||||
AggPickmVO[] vos = processAggVOs(aggVOs);
|
||||
if(vos.length == 0){
|
||||
throw new BusinessException("未检测到符合生成请购单数据,不能生成!");
|
||||
}
|
||||
PraybillVO[] prayVOs = convertToGeneralInVO(vos, null);
|
||||
|
||||
List<String> pk =new ArrayList<>();
|
||||
for (AggPickmVO prayVO : vos) {
|
||||
PickmItemVO[] items = (PickmItemVO[]) prayVO.getChildren(PickmItemVO.class);
|
||||
for (int j=0;j<items.length;j++) {
|
||||
pk.add(items[j].getCpickm_bid());
|
||||
}
|
||||
}
|
||||
|
||||
IPraybillMaintain maintain= ServiceLocator.find(IPraybillMaintain.class);
|
||||
PraybillVO[] insertVos = maintain.insert(prayVOs);
|
||||
Map<String, Object> returnMap = new HashMap<>();
|
||||
returnMap.put("data", insertVos);
|
||||
returnMap.put("success", true);
|
||||
if(!pk.isEmpty()){
|
||||
updetaPmo(pk);
|
||||
}
|
||||
return returnMap;
|
||||
} catch (Exception e) {
|
||||
ExceptionUtils.wrapException(e);
|
||||
|
@ -71,18 +90,18 @@ public class PickmToBuyingreqAction implements ICommonAction {
|
|||
}
|
||||
private PraybillVO[] convertToGeneralInVO(AggregatedValueObject[] sourceBillVOs, PfParameterVO srcParaVo)
|
||||
throws BusinessException {
|
||||
// 来源交易类型或单据类型,需要在单据类型中注册
|
||||
// 来源交易类型或单据类型,需要在单据类型中注册
|
||||
String srcBillOrTranstype = "55A3";
|
||||
// 目标交易类型或单据类型,需要在单据类型中注册
|
||||
// 目标交易类型或单据类型,需要在单据类型中注册
|
||||
String destBillOrTranstype = "20";
|
||||
// classifyMode int型参数,调用模式,参照PfButtonClickContext中定义,代码中调用为接口方式 ClassifyByItfdef
|
||||
// classifyMode int型参数,调用模式,参照PfButtonClickContext中定义,代码中调用为接口方式 ClassifyByItfdef
|
||||
int classifyMode = PfButtonClickContext.ClassifyByItfdef;
|
||||
PraybillVO[] inVOS = (PraybillVO[]) PFPubService.runChangeData(srcBillOrTranstype, destBillOrTranstype, sourceBillVOs, srcParaVo, classifyMode);
|
||||
if (MMValueCheck.isEmpty(inVOS)) {
|
||||
ExceptionUtils.wrapBusinessException("备料计划转换请购单失败");
|
||||
ExceptionUtils.wrapBusinessException("备料计划转换请购单失败");
|
||||
}
|
||||
for (PraybillVO inVO : inVOS) {
|
||||
// 其它入库单的仓库、交易类型取自【业务参数设置】的默认值
|
||||
// 其它入库单的仓库、交易类型取自【业务参数设置】的默认值
|
||||
PraybillHeaderVO head = inVO.getHVO();
|
||||
head.setCtrantypeid("0001A110000000001S1E");
|
||||
// head.setCwarehouseid("");
|
||||
|
@ -90,7 +109,31 @@ public class PickmToBuyingreqAction implements ICommonAction {
|
|||
return inVOS;
|
||||
}
|
||||
|
||||
public AggPickmVO[] processAggVOs(AggPickmVO[] aggVOs) {
|
||||
private void updetaPmo(List<String> arrayList) throws DAOException {
|
||||
String result = "";
|
||||
StringBuilder sb = new StringBuilder();
|
||||
if (arrayList.size() > 1) {
|
||||
for (int i = 0; i < arrayList.size(); i++) {
|
||||
|
||||
|
||||
sb.append("'").append(arrayList.get(i)).append("'");
|
||||
if (i < arrayList.size() - 1) {
|
||||
sb.append(",");
|
||||
}
|
||||
}
|
||||
|
||||
result = sb.toString();
|
||||
} else {
|
||||
result = "'" + (String) arrayList.get(0) + "'";
|
||||
}
|
||||
String sql = " update mm_pickm_b set vbdef13='Y' where mm_pickm_b.cpickm_bid in(" + result + ")";
|
||||
|
||||
BaseDAO dao = new BaseDAO();
|
||||
dao.executeUpdate(sql);
|
||||
}
|
||||
|
||||
|
||||
public AggPickmVO[] processAggVOs(AggPickmVO[] aggVOs) throws DAOException {
|
||||
Map<Object, List<AggPickmVO>> groupMap = new HashMap<>();
|
||||
|
||||
for (AggPickmVO vo : aggVOs) {
|
||||
|
@ -103,17 +146,35 @@ public class PickmToBuyingreqAction implements ICommonAction {
|
|||
for (Map.Entry<Object, List<AggPickmVO>> entry : groupMap.entrySet()) {
|
||||
List<AggPickmVO> group = entry.getValue();
|
||||
|
||||
// 修改1:使用ISuperVO列表收集子对象
|
||||
// 修改1:使用ISuperVO列表收集子对象
|
||||
List<PickmItemVO> mergedChildren = new ArrayList<PickmItemVO>();
|
||||
for (AggPickmVO vo : group) {
|
||||
PickmItemVO[] items = (PickmItemVO[]) vo.getChildren(PickmItemVO.class);
|
||||
if (items != null) {
|
||||
for (PickmItemVO child : items) {
|
||||
//只合并项目专用料数据
|
||||
if(child.getBprojectmaterial().booleanValue()){
|
||||
mergedChildren.add(child);
|
||||
// 未下达子表 切 若物料类型为“采购件”,则备料计划中所有采购件生成一张请购单
|
||||
if(null != child.getVbdef13() && child.getVbdef13().equals("Y") ){
|
||||
continue;
|
||||
}
|
||||
// CircularlyAccessibleValueObject 实现了 ISuperVO
|
||||
String materalType = child.getVbdef14();
|
||||
if(null == materalType){
|
||||
// MR=制造件;
|
||||
// PR=采购件;
|
||||
String sql = " select martype from bd_materialstock where pk_material='" + child.getCbmaterialvid() + "' and pk_org='"+child.getPk_org()+"' and dr=0";
|
||||
|
||||
BaseDAO dao = new BaseDAO();
|
||||
materalType = (String) dao.executeQuery(sql, new ColumnProcessor());
|
||||
if(null == materalType || "MR".equals(materalType) || "".equals(materalType) ){
|
||||
continue;
|
||||
}
|
||||
}else if("2".equals(materalType)){
|
||||
continue;
|
||||
}
|
||||
//只合并项目专用料数据
|
||||
// if(child.getBprojectmaterial().booleanValue()){
|
||||
mergedChildren.add(child);
|
||||
// }
|
||||
// CircularlyAccessibleValueObject 实现了 ISuperVO
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -123,7 +184,7 @@ public class PickmToBuyingreqAction implements ICommonAction {
|
|||
|
||||
AggPickmVO newVO = new AggPickmVO();
|
||||
newVO.setParent(group.get(0).getParentVO());
|
||||
// 修改2:转换为ISuperVO数组
|
||||
// 修改2:转换为ISuperVO数组
|
||||
newVO.setChildren(PickmItemVO.class, mergedChildren.toArray(new PickmItemVO[0]));
|
||||
|
||||
resultList.add(newVO);
|
||||
|
|
|
@ -1,9 +1,12 @@
|
|||
package nccloud.web.mmpac.pickm.action;
|
||||
|
||||
import nc.bs.dao.BaseDAO;
|
||||
import nc.bs.dao.DAOException;
|
||||
import nc.itf.mmpac.pickm.IPickmQueryService;
|
||||
import nc.itf.mmpac.pmo.pac0002.IPMOMaintainService;
|
||||
import nc.itf.pu.m20.IPraybillMaintain;
|
||||
import nc.itf.uap.pf.busiflow.PfButtonClickContext;
|
||||
import nc.jdbc.framework.processor.ColumnProcessor;
|
||||
import nc.util.mmf.busi.service.PFPubService;
|
||||
import nc.util.mmf.framework.base.MMValueCheck;
|
||||
import nc.vo.mmpac.pickm.entity.AggPickmVO;
|
||||
|
@ -35,9 +38,9 @@ public class PickmToPmo implements ICommonAction {
|
|||
String read = iRequest.read();
|
||||
IJson json = JsonFactory.create();
|
||||
try {
|
||||
// 获取请求查询信息
|
||||
// 获取请求查询信息
|
||||
PickmQueryInfoDTO paramDTO = json.fromJson(read, PickmQueryInfoDTO.class);
|
||||
// 获取主键
|
||||
// 获取主键
|
||||
String[] cpickmids = paramDTO.getCpickmids();
|
||||
// String[] cpickmbids = paramDTO.getCpickmbids();
|
||||
// if (MMValueCheck.isEmpty(cpickmids) && (null == cpickmbids || cpickmbids.length == 0)) {
|
||||
|
@ -49,15 +52,26 @@ public class PickmToPmo implements ICommonAction {
|
|||
aggVOs = service.queryBillsByPks(cpickmids);
|
||||
}
|
||||
if (MMValueCheck.isEmpty(aggVOs)) {
|
||||
/*@res "单据已被修改或删除,请刷新界面重新操作!"*/
|
||||
/*@res "单据已被修改或删除,请刷新界面重新操作!"*/
|
||||
ExceptionUtils.wrapBusinessException(nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("5008100_0", "05008100-0009"));
|
||||
}
|
||||
|
||||
|
||||
PMOAggVO[] prayVOs = convertToGeneralInVO(processAggVOs(aggVOs), null);
|
||||
AggPickmVO[] vos = processAggVOs(aggVOs);
|
||||
if(vos.length == 0){
|
||||
throw new BusinessException("未检测到符合生成生产单数据,不能生成!");
|
||||
}
|
||||
PMOAggVO[] prayVOs = convertToGeneralInVO(vos, null);
|
||||
List<String> pk =new ArrayList<>();
|
||||
for (PMOAggVO prayVO : prayVOs) {
|
||||
for (int j=0;j<prayVO.getChildrenVO().length;j++) {
|
||||
prayVO.getChildrenVO()[j].setVrowno(String.valueOf(j*10+10));
|
||||
pk.add(prayVO.getChildrenVO()[j].getCmoid());
|
||||
}
|
||||
}
|
||||
for (AggPickmVO prayVO : vos) {
|
||||
PickmItemVO[] items = (PickmItemVO[]) prayVO.getChildren(PickmItemVO.class);
|
||||
for (int j=0;j<items.length;j++) {
|
||||
pk.add(items[j].getCpickm_bid());
|
||||
}
|
||||
}
|
||||
IPMOMaintainService maintain= ServiceLocator.find(IPMOMaintainService.class);
|
||||
|
@ -65,26 +79,55 @@ public class PickmToPmo implements ICommonAction {
|
|||
Map<String, Object> returnMap = new HashMap<>();
|
||||
returnMap.put("data", insertVos);
|
||||
returnMap.put("success", true);
|
||||
if(!pk.isEmpty()){
|
||||
//回写是否下方为是
|
||||
updetaPmo(pk);
|
||||
}
|
||||
|
||||
return returnMap;
|
||||
} catch (Exception e) {
|
||||
ExceptionUtils.wrapException(e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private void updetaPmo(List<String> arrayList) throws DAOException {
|
||||
String result = "";
|
||||
StringBuilder sb = new StringBuilder();
|
||||
if (arrayList.size() > 1) {
|
||||
for (int i = 0; i < arrayList.size(); i++) {
|
||||
|
||||
|
||||
sb.append("'").append(arrayList.get(i)).append("'");
|
||||
if (i < arrayList.size() - 1) {
|
||||
sb.append(",");
|
||||
}
|
||||
}
|
||||
|
||||
result = sb.toString();
|
||||
} else {
|
||||
result = "'" + (String) arrayList.get(0) + "'";
|
||||
}
|
||||
String sql = " update mm_pickm_b set vbdef13='Y' where mm_pickm_b.cpickm_bid in(" + result + ")";
|
||||
|
||||
BaseDAO dao = new BaseDAO();
|
||||
dao.executeUpdate(sql);
|
||||
}
|
||||
|
||||
private PMOAggVO[] convertToGeneralInVO(AggregatedValueObject[] sourceBillVOs, PfParameterVO srcParaVo)
|
||||
throws BusinessException {
|
||||
// 来源交易类型或单据类型,需要在单据类型中注册
|
||||
// 来源交易类型或单据类型,需要在单据类型中注册
|
||||
String srcBillOrTranstype = "55A3";
|
||||
// 目标交易类型或单据类型,需要在单据类型中注册
|
||||
// 目标交易类型或单据类型,需要在单据类型中注册
|
||||
String destBillOrTranstype = "55A2";
|
||||
// classifyMode int型参数,调用模式,参照PfButtonClickContext中定义,代码中调用为接口方式 ClassifyByItfdef
|
||||
// classifyMode int型参数,调用模式,参照PfButtonClickContext中定义,代码中调用为接口方式 ClassifyByItfdef
|
||||
int classifyMode = PfButtonClickContext.ClassifyByItfdef;
|
||||
PMOAggVO[] inVOS = (PMOAggVO[]) PFPubService.runChangeData(srcBillOrTranstype, destBillOrTranstype, sourceBillVOs, srcParaVo, classifyMode);
|
||||
if (MMValueCheck.isEmpty(inVOS)) {
|
||||
ExceptionUtils.wrapBusinessException("备料计划转换流程生产订单失败");
|
||||
ExceptionUtils.wrapBusinessException("备料计划转换流程生产订单失败");
|
||||
}
|
||||
for (PMOAggVO inVO : inVOS) {
|
||||
// 其它入库单的仓库、交易类型取自【业务参数设置】的默认值
|
||||
// 其它入库单的仓库、交易类型取自【业务参数设置】的默认值
|
||||
PMOHeadVO head = inVO.getParentVO();
|
||||
head.setCtrantypeid("0001A110000000001S1E");
|
||||
|
||||
|
@ -96,7 +139,7 @@ public class PickmToPmo implements ICommonAction {
|
|||
return inVOS;
|
||||
}
|
||||
|
||||
public AggPickmVO[] processAggVOs(AggPickmVO[] aggVOs) {
|
||||
public AggPickmVO[] processAggVOs(AggPickmVO[] aggVOs) throws DAOException {
|
||||
Map<Object, List<AggPickmVO>> groupMap = new HashMap<>();
|
||||
|
||||
for (AggPickmVO vo : aggVOs) {
|
||||
|
@ -109,17 +152,36 @@ public class PickmToPmo implements ICommonAction {
|
|||
for (Map.Entry<Object, List<AggPickmVO>> entry : groupMap.entrySet()) {
|
||||
List<AggPickmVO> group = entry.getValue();
|
||||
|
||||
// 修改1:使用ISuperVO列表收集子对象
|
||||
// 修改1:使用ISuperVO列表收集子对象
|
||||
List<PickmItemVO> mergedChildren = new ArrayList<PickmItemVO>();
|
||||
for (AggPickmVO vo : group) {
|
||||
PickmItemVO[] items = (PickmItemVO[]) vo.getChildren(PickmItemVO.class);
|
||||
if (items != null) {
|
||||
for (PickmItemVO child : items) {
|
||||
//只合并项目专用料数据
|
||||
|
||||
// 未下达子表 切 若物料类型为“制造件”,则备料计划中所有制造件件生成一张开立状态的流程生产订单
|
||||
if(null != child.getVbdef13() && child.getVbdef13().equals("Y") ){
|
||||
continue;
|
||||
}
|
||||
String materalType = child.getVbdef14();
|
||||
if(null == materalType){
|
||||
// MR=制造件;
|
||||
// PR=采购件;
|
||||
String sql = " select martype from bd_materialstock where pk_material='" + child.getCbmaterialvid() + "' and pk_org='"+child.getPk_org()+"' and dr=0";
|
||||
|
||||
BaseDAO dao = new BaseDAO();
|
||||
materalType = (String) dao.executeQuery(sql, new ColumnProcessor());
|
||||
if(null == materalType || "PR".equals(materalType) || "".equals(materalType) ){
|
||||
continue;
|
||||
}
|
||||
}else if("1".equals(materalType)){
|
||||
continue;
|
||||
}
|
||||
//只合并项目专用料数据
|
||||
if(child.getBprojectmaterial().booleanValue()){
|
||||
mergedChildren.add(child);
|
||||
}
|
||||
// CircularlyAccessibleValueObject 实现了 ISuperVO
|
||||
// CircularlyAccessibleValueObject 实现了 ISuperVO
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -129,7 +191,7 @@ public class PickmToPmo implements ICommonAction {
|
|||
|
||||
AggPickmVO newVO = new AggPickmVO();
|
||||
newVO.setParent(group.get(0).getParentVO());
|
||||
// 修改2:转换为ISuperVO数组
|
||||
// 修改2:转换为ISuperVO数组
|
||||
newVO.setChildren(PickmItemVO.class, mergedChildren.toArray(new PickmItemVO[0]));
|
||||
|
||||
resultList.add(newVO);
|
||||
|
|
Loading…
Reference in New Issue