|
|
@@ -0,0 +1,709 @@
|
|
|
+package nc.ui.ic.m4451.action;
|
|
|
+
|
|
|
+import java.awt.event.ActionEvent;
|
|
|
+
|
|
|
+import javax.swing.JOptionPane;
|
|
|
+import javax.swing.filechooser.FileSystemView;
|
|
|
+
|
|
|
+import org.apache.poi.hssf.usermodel.HSSFCell;
|
|
|
+import org.apache.poi.ss.usermodel.Workbook;
|
|
|
+import org.apache.poi.ss.usermodel.WorkbookFactory;
|
|
|
+import org.apache.poi.ss.usermodel.Row;
|
|
|
+
|
|
|
+import nc.bs.dzgy.pub.db.JDBCUtils;
|
|
|
+import nc.bs.framework.common.InvocationInfoProxy;
|
|
|
+import nc.bs.framework.common.NCLocator;
|
|
|
+import nc.itf.ic.m4455.self.ISapplyBillMaintain;
|
|
|
+import nc.ui.dzgy.impexcle.tools.ImpExcleUtils;
|
|
|
+import nc.ui.ic.pub.model.ICBizEditorModel;
|
|
|
+import nc.ui.pubapp.uif2app.view.BillForm;
|
|
|
+import nc.ui.uif2.NCAction;
|
|
|
+import nc.ui.uif2.model.AbstractAppModel;
|
|
|
+import nc.ui.pub.beans.MessageDialog;
|
|
|
+import nc.ui.pub.beans.UIFileChooser;
|
|
|
+import nc.ui.uif2.UIState;
|
|
|
+import nc.vo.bd.defdoc.DefdocVO;
|
|
|
+import nc.vo.bd.material.MaterialVO;
|
|
|
+import nc.vo.bd.psn.PsndocVO;
|
|
|
+import nc.vo.ic.m4455.entity.SapplyBillBodyVO;
|
|
|
+import nc.vo.ic.m4455.entity.SapplyBillHeadVO;
|
|
|
+import nc.vo.ic.m4455.entity.SapplyBillVO;
|
|
|
+import nc.vo.jcom.lang.StringUtil;
|
|
|
+import nc.vo.org.DeptVO;
|
|
|
+import nc.vo.org.StockOrgVO;
|
|
|
+import nc.vo.pub.BusinessException;
|
|
|
+import nc.vo.pub.billtype.BilltypeVO;
|
|
|
+import nc.vo.pub.lang.UFBoolean;
|
|
|
+import nc.vo.pub.lang.UFDate;
|
|
|
+import nc.vo.pub.lang.UFDateTime;
|
|
|
+import nc.vo.pub.lang.UFDouble;
|
|
|
+import nc.itf.uap.IUAPQueryBS;
|
|
|
+import nc.jdbc.framework.processor.ColumnProcessor;
|
|
|
+import nc.jdbc.framework.processor.MapListProcessor;
|
|
|
+
|
|
|
+import java.awt.Component;
|
|
|
+
|
|
|
+import org.apache.poi.ss.usermodel.Sheet;
|
|
|
+
|
|
|
+import nc.vo.pmpub.project.ProjectHeadVO;
|
|
|
+
|
|
|
+import java.io.File;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+import org.apache.poi.ss.usermodel.Cell;
|
|
|
+
|
|
|
+public class ImportExcelActionAction extends NCAction{
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 导入按钮
|
|
|
+ */
|
|
|
+ private static final long serialVersionUID = 6678424264439690539L;
|
|
|
+
|
|
|
+ private AbstractAppModel model;
|
|
|
+
|
|
|
+ private ISapplyBillMaintain isbmaintain=(ISapplyBillMaintain) NCLocator.getInstance().lookup(ISapplyBillMaintain.class.getName());//出库申请单接口
|
|
|
+
|
|
|
+ private String pk_group=InvocationInfoProxy.getInstance().getGroupId();
|
|
|
+
|
|
|
+ private String userid=InvocationInfoProxy.getInstance().getUserId();
|
|
|
+
|
|
|
+
|
|
|
+ private Map<String, StockOrgVO> orgVOMap;
|
|
|
+
|
|
|
+ private Map<String, BilltypeVO> billTypeMap;//申请类型
|
|
|
+
|
|
|
+ private Map<String, PsndocVO> psndocVOMap;
|
|
|
+
|
|
|
+ private Map<String, DeptVO> deptVOMap;
|
|
|
+
|
|
|
+ private Map<String, ProjectHeadVO> projectHeadVOMap;
|
|
|
+
|
|
|
+ private Map<String, DefdocVO> dfdocVOMap;
|
|
|
+
|
|
|
+ private Map<String, MaterialVO> materialMap;
|
|
|
+
|
|
|
+ private ArrayList<String> materCodes = new ArrayList<String>();// 用于存储物料编码
|
|
|
+
|
|
|
+ private ArrayList<String> orgCodes = new ArrayList<String>();// 用于存储业务单元编码
|
|
|
+
|
|
|
+ private ArrayList<String> billtypes = new ArrayList<String>();// 用于存储订单类型编码
|
|
|
+
|
|
|
+ private ArrayList<String> psonNames = new ArrayList<String>();// 用于项目经理编码
|
|
|
+
|
|
|
+ private ArrayList<String> deptNames = new ArrayList<String>();// 用于部门编码
|
|
|
+
|
|
|
+ private ArrayList<String> projectNames = new ArrayList<String>();// 用于工程项目编码
|
|
|
+
|
|
|
+ private ArrayList<String> dfdocNames = new ArrayList<String>();// 用于自定领料人编码
|
|
|
+
|
|
|
+ public ImportExcelActionAction(){
|
|
|
+ super.setBtnName("导入");
|
|
|
+ super.setCode("importExcelAction");
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void doAction(ActionEvent arg0) throws Exception {
|
|
|
+// MessageDialog.showHintDlg(null, "提示", "按钮点击成功");
|
|
|
+
|
|
|
+ File file = openFile();// 打开excel
|
|
|
+
|
|
|
+ if(null==file){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ ImpExcleUtils impexcleutils=new ImpExcleUtils();
|
|
|
+
|
|
|
+ List<List<Object>> objList=impexcleutils.readExcel(file);
|
|
|
+
|
|
|
+ Object restObj = initilt(objList);
|
|
|
+
|
|
|
+ if (restObj instanceof String) {
|
|
|
+// StringUtils.setLogger("采购订单数据初始化失败,原因[" + restObj.toString() + "]");
|
|
|
+ throw new Exception(restObj.toString());
|
|
|
+ }
|
|
|
+
|
|
|
+ ArrayList<SapplyBillVO> aggvos = (ArrayList<SapplyBillVO>) restObj;
|
|
|
+
|
|
|
+ SapplyBillVO[] billVOs =aggvos.toArray(new SapplyBillVO[aggvos.size()]);
|
|
|
+
|
|
|
+ SapplyBillVO[] newaggvos= isbmaintain.insert(billVOs);
|
|
|
+
|
|
|
+ MessageDialog.showHintDlg(null, "提示", "导入成功,共计:"+newaggvos.length+"条!");
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * initilt:数据初始化
|
|
|
+ *
|
|
|
+ * @author
|
|
|
+ * @date
|
|
|
+ * @param objList
|
|
|
+ * @return Object
|
|
|
+ * @throws BusinessException
|
|
|
+ */
|
|
|
+ private Object initilt(List<List<Object>> objList) throws BusinessException {
|
|
|
+ StringBuffer restBuf = new StringBuffer();
|
|
|
+ initilt_isNull(objList, restBuf);// 为空判断
|
|
|
+ if (restBuf.length() > 0) {
|
|
|
+ return restBuf.toString();
|
|
|
+ }
|
|
|
+ Object bd_restObj = initilt_IsNull_bd(objList);// 档案初始化
|
|
|
+ if (bd_restObj != null) {
|
|
|
+ return bd_restObj.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ Object restObjVO = getImpPurchaseVO(objList);// 拆单汇总成VO
|
|
|
+ if (restObjVO instanceof String) {
|
|
|
+ return restObjVO.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return restObjVO;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * initilt_IsNull_bd:档案数据初始化
|
|
|
+ *
|
|
|
+ * @author
|
|
|
+ * @date
|
|
|
+ * @return Object
|
|
|
+ * @throws BusinessException
|
|
|
+ */
|
|
|
+ private Object initilt_IsNull_bd(List<List<Object>> objList) throws BusinessException {
|
|
|
+ StringBuffer restBuf = new StringBuffer();
|
|
|
+ JDBCUtils jabcutils=new JDBCUtils();
|
|
|
+ if (orgCodes != null && orgCodes.size() != 0) {
|
|
|
+ orgVOMap = jabcutils.queryOrgVOMap(getWhereInSql("code", orgCodes));
|
|
|
+ if (orgVOMap == null || orgVOMap.size() == 0) {
|
|
|
+ restBuf.append("根据业务单元编码[" + orgCodes + "]检索NC业务单元档案为空;");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (billtypes != null && billtypes.size() != 0) {
|
|
|
+ billTypeMap = jabcutils.querybillTypeMap(getWhereInSql("pk_billtypecode", billtypes));
|
|
|
+ if (billTypeMap == null || billTypeMap.size() == 0) {
|
|
|
+ restBuf.append("根据申请类型名称[" + billtypes + "]检索NC申请类型档案为空;").append("\n");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if (psonNames != null && psonNames.size() != 0) {
|
|
|
+ psndocVOMap = jabcutils.queryPsndocVOMap(getWhereInSql("code", psonNames));
|
|
|
+ if (psndocVOMap == null || psndocVOMap.size() == 0) {
|
|
|
+ restBuf.append("根据项目经理编码[" + psonNames + "]检索NC人员档案为空;");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (deptNames != null && deptNames.size() != 0) {
|
|
|
+ deptVOMap = jabcutils.queryDeptVOMap(getWhereInSql("code", deptNames));
|
|
|
+ if (deptVOMap == null || deptVOMap.size() == 0) {
|
|
|
+ throw new BusinessException("根据部门编码[" + deptVOMap + "]检索NC部门档案为空;");
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if (dfdocNames != null && dfdocNames.size() != 0) {
|
|
|
+ dfdocVOMap = jabcutils.queryProjectDefdocVOMap(getWhereInSql("bd_defdoc.code", dfdocNames));
|
|
|
+ if (dfdocVOMap == null || dfdocVOMap.size() == 0) {
|
|
|
+ throw new BusinessException("根据自定领料人编码[" + dfdocVOMap + "]检索NC自定领料人档案为空;");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (materCodes != null && materCodes.size() != 0) {
|
|
|
+ materialMap = jabcutils.queryMaterialMap(getWhereInSql("a.code", materCodes));
|
|
|
+ if (materialMap == null || materialMap.size() == 0) {
|
|
|
+ restBuf.append("根据物料编码[" + materCodes + "]检索NC物料档案为空;");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if (projectNames != null && projectNames.size() != 0) {
|
|
|
+ projectHeadVOMap = jabcutils.queryProjectHeadVOMap(getWhereInSql("project_code", projectNames));
|
|
|
+ if (projectHeadVOMap == null || projectHeadVOMap.size() == 0) {
|
|
|
+ restBuf.append("根据工程项目编码[" + projectHeadVOMap + "]检索NC工程项目档案为空;");
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if (restBuf.length() > 0) {
|
|
|
+ return restBuf.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ for (int i = 1; i < objList.size(); i++) {
|
|
|
+ StringBuffer rowMsg = new StringBuffer();
|
|
|
+ List<Object> rowList = objList.get(i);
|
|
|
+ StockOrgVO orgVO = orgVOMap.get(rowList.get(1).toString());
|
|
|
+ if (orgVO == null) {
|
|
|
+ rowMsg.append("业务单元编码[" + rowList.get(1).toString() + "]检索NC业务单元档案为空;");
|
|
|
+ }/*else{
|
|
|
+ if (projectNames != null && projectNames.size() != 0) {
|
|
|
+ projectHeadVOMap = jabcutils.queryProjectHeadVOMap(getWhereInSql("project_code", projectNames,orgVO.getPk_stockorg()),projectHeadVOMap);
|
|
|
+ if (projectHeadVOMap == null || projectHeadVOMap.size() == 0) {
|
|
|
+ //throw new BusinessException("根据工程项目编码[" + projectHeadVOMap + "]检索NC工程项目档案为空;");
|
|
|
+ rowMsg.append("根据工程项目编码[" + projectHeadVOMap + "]检索NC工程项目档案为空;");
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }*/
|
|
|
+
|
|
|
+ else{
|
|
|
+
|
|
|
+// Map<String, ProjectHeadVO> projectmap = jabcutils.queryProjectHeadVOMap(getprojectWhereInSql("project_code", rowList.get(6).toString(),orgVO.getPk_stockorg()));
|
|
|
+// if (projectmap == null || projectmap.size()==0) {
|
|
|
+// rowMsg.append(rowList.get(1)+"组织,工程项目编码[" + rowList.get(6).toString() + "]检索NC工程项目档案为空;");
|
|
|
+// }else{
|
|
|
+// projectHeadVOMap.putAll(projectmap);
|
|
|
+// }
|
|
|
+
|
|
|
+ //部门
|
|
|
+// Map<String, DeptVO> deptMap=jabcutils.queryOrgDeptVOMap(getprojectWhereInSql("code", rowList.get(5).toString(),orgVO.getPk_stockorg()));
|
|
|
+// if (deptMap == null || deptMap.size()==0) {
|
|
|
+// rowMsg.append(rowList.get(1)+"组织,部门编码[" + rowList.get(5).toString() + "]检索NC部门档案为空;");
|
|
|
+// }else{
|
|
|
+// deptVOMap.putAll(deptMap);
|
|
|
+// }
|
|
|
+
|
|
|
+ ProjectHeadVO projectvo=projectHeadVOMap.get(orgVO.getPk_stockorg()+rowList.get(6).toString());//工程项目
|
|
|
+
|
|
|
+ if (projectvo == null) {
|
|
|
+ rowMsg.append("根据"+rowList.get(1)+"组织,工程项目编码[" + rowList.get(6).toString() + "]检索NC工程项目档案为空;");
|
|
|
+
|
|
|
+ }else if(!projectvo.getPk_org().equals(orgVO.getPk_stockorg())){
|
|
|
+
|
|
|
+ rowMsg.append("根据"+rowList.get(1)+"组织,工程项目编码[" + rowList.get(6).toString() + "]检索NC工程项目档案为空;");
|
|
|
+ }
|
|
|
+
|
|
|
+ DeptVO deptvo=deptVOMap.get(rowList.get(5).toString());//部门
|
|
|
+
|
|
|
+ if (deptvo == null) {
|
|
|
+ rowMsg.append("根据"+rowList.get(1)+"组织,部门编码[" + rowList.get(5).toString() + "]检索NC部门档案为空;");
|
|
|
+
|
|
|
+ }else if(!deptvo.getPk_org().equals(orgVO.getPk_stockorg())){
|
|
|
+
|
|
|
+ rowMsg.append("根据"+rowList.get(1)+"组织,部门编码[" + rowList.get(5).toString() + "]检索NC部门档案为空;");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ BilltypeVO billtypeVO = billTypeMap.get(rowList.get(2).toString());
|
|
|
+ if (billtypeVO == null) {
|
|
|
+ rowMsg.append("申请类型编码[" + rowList.get(2).toString() + "]检索NC申请类型档案为空;");
|
|
|
+ }
|
|
|
+
|
|
|
+ PsndocVO psndocVO = psndocVOMap.get(rowList.get(4).toString());
|
|
|
+ if (psndocVO == null) {
|
|
|
+ rowMsg.append("项目经理编码[" + rowList.get(4).toString() + "]检索NC项目经理档案为空;");
|
|
|
+ }
|
|
|
+
|
|
|
+ DeptVO deptvo=deptVOMap.get(rowList.get(5).toString());
|
|
|
+ if (deptvo == null) {
|
|
|
+ rowMsg.append("部门编码[" + rowList.get(5).toString() + "]检索NC部门档案为空;");
|
|
|
+ }
|
|
|
+
|
|
|
+ DefdocVO dfdocVO= dfdocVOMap.get(rowList.get(7).toString());
|
|
|
+ if (dfdocVO == null) {
|
|
|
+ rowMsg.append("自定领料人编码[" + rowList.get(7).toString() + "]检索NC自定领料人档案为空;");
|
|
|
+ }
|
|
|
+
|
|
|
+ MaterialVO material=materialMap.get(rowList.get(8).toString());
|
|
|
+
|
|
|
+ if (material == null) {
|
|
|
+ rowMsg.append("物料编码[" + rowList.get(8).toString() + "]检索NC物料档案为空;");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (rowMsg.length() > 0) {
|
|
|
+ restBuf.append("第[" + i + "]行").append(rowMsg.toString());
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (restBuf.length() > 0) {
|
|
|
+ return restBuf.toString();
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * isNull:
|
|
|
+ *
|
|
|
+ * @author ningz
|
|
|
+ * @date 2020年12月7日 下午2:50:47
|
|
|
+ * @param objList
|
|
|
+ * @param restBuf
|
|
|
+ * void
|
|
|
+ */
|
|
|
+ private void initilt_isNull(List<List<Object>> objList, StringBuffer restBuf) {
|
|
|
+ for (int i = 1; i < objList.size(); i++) {
|
|
|
+ StringBuffer rowMsg = new StringBuffer();
|
|
|
+ List<Object> rowList = objList.get(i);
|
|
|
+
|
|
|
+ if (!isNotNull(rowList.get(1))) {
|
|
|
+ rowMsg.append("库存组织不能为空,");
|
|
|
+ } else {
|
|
|
+ orgCodes.add(rowList.get(1).toString());
|
|
|
+ }
|
|
|
+ if (!isNotNull(rowList.get(3))) {
|
|
|
+ rowMsg.append("申请日期不能为空,");
|
|
|
+ } else {
|
|
|
+ if (!isDate(rowList.get(3).toString())) {
|
|
|
+ rowMsg.append("申请日期不是YYYY-MM-DD格式,");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!isNotNull(rowList.get(2))) {
|
|
|
+ rowMsg.append("申请类型名称不能为空,");
|
|
|
+ } else {
|
|
|
+ billtypes.add(rowList.get(2).toString());
|
|
|
+ }
|
|
|
+ // 项目经理名称
|
|
|
+ if (isNotNull(rowList.get(4))) {
|
|
|
+ psonNames.add(rowList.get(4).toString());
|
|
|
+ }
|
|
|
+ // 申请名称
|
|
|
+ if (isNotNull(rowList.get(5))) {
|
|
|
+ deptNames.add(rowList.get(5).toString());
|
|
|
+ }
|
|
|
+ // 工程项目
|
|
|
+ if (isNotNull(rowList.get(6))) {
|
|
|
+ projectNames.add(rowList.get(6).toString());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 自定领料人
|
|
|
+ if (isNotNull(rowList.get(7))) {
|
|
|
+ dfdocNames.add(rowList.get(7).toString());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if (!isNotNull(rowList.get(8))) {
|
|
|
+ rowMsg.append("物料编码不能为空,");
|
|
|
+ } else {
|
|
|
+ materCodes.add(rowList.get(8).toString());
|
|
|
+ }
|
|
|
+ if (!isNotNull(rowList.get(9))) {
|
|
|
+ rowMsg.append("主数量不能为空,");
|
|
|
+ } else {
|
|
|
+ if (!isNum(rowList.get(9).toString())) {
|
|
|
+ rowMsg.append("主数量不是数值型,");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (rowMsg.length() > 0) {
|
|
|
+ restBuf.append("第[" + (i + 1) + "]行").append(rowMsg.toString());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public AbstractAppModel getModel() {
|
|
|
+ return model;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setModel(AbstractAppModel model) {
|
|
|
+ this.model = model;
|
|
|
+ model.addAppEventListener(this);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected boolean isActionEnable() {
|
|
|
+ // UIState uiState = model.getUiState();
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private File openFile() {
|
|
|
+ UIFileChooser fileDlg = new UIFileChooser();
|
|
|
+ FileSystemView fsv = FileSystemView.getFileSystemView();
|
|
|
+ fileDlg.setCurrentDirectory(fsv.getHomeDirectory());
|
|
|
+
|
|
|
+ fileDlg.setFileFilter(new javax.swing.filechooser.FileFilter() {
|
|
|
+
|
|
|
+ public boolean accept(File f) {
|
|
|
+ if (f.isDirectory()
|
|
|
+ || f.getName().toLowerCase().endsWith("xlsx")) {
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getDescription() {
|
|
|
+ return "Excel文件(xlsx)";
|
|
|
+ }
|
|
|
+ }); // 过滤excel文件
|
|
|
+
|
|
|
+ if (fileDlg.showOpenDialog(getBillUI()) != UIFileChooser.APPROVE_OPTION) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ File fileName = fileDlg.getSelectedFile();
|
|
|
+ if (fileName == null || fileName.getName().equals("")) {
|
|
|
+ JOptionPane.showMessageDialog(getBillUI(), "选择要导入的excel文件");
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ return fileName;
|
|
|
+ }
|
|
|
+
|
|
|
+ private Component getBillUI() {
|
|
|
+ // TODO 自动生成的方法存根
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public boolean isNotNull(Object str){
|
|
|
+ if (str == null || "".equals(str)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public boolean isNum(String str) {
|
|
|
+ if ("" == str || str == null) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return str.matches("^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public boolean isDate(String datestr) {
|
|
|
+ if (datestr == null || "".equals(datestr)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ String split = "/";
|
|
|
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd");
|
|
|
+ if (datestr.contains("-")) {
|
|
|
+ split = "-";
|
|
|
+ formatter = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ Date date = formatter.parse(datestr);
|
|
|
+ if (datestr.length() != 10) {
|
|
|
+
|
|
|
+ String[] arr = datestr.split(split);
|
|
|
+ if (arr[1].length() != 2) {
|
|
|
+ arr[1] = "0" + arr[1];
|
|
|
+ }
|
|
|
+ if (arr[2].length() != 2) {
|
|
|
+ arr[2] = "0" + arr[2];
|
|
|
+ }
|
|
|
+ datestr = arr[0] + split + arr[1] + split + arr[2];
|
|
|
+ }
|
|
|
+ return datestr.equals(formatter.format(date));
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public String getprojectWhereInSql(String columnName, String wherevalue,String orgparam) {
|
|
|
+ StringBuffer sql = new StringBuffer();
|
|
|
+ sql.append(columnName).append(" in ( ");
|
|
|
+ sql.append("'"+wherevalue+"'");
|
|
|
+ sql.append(" ) ");
|
|
|
+ sql.append(" and pk_org='"+ orgparam +"' ");
|
|
|
+ return sql.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public String getWhereInSql(String columnName, ArrayList<String> wherevalue) {
|
|
|
+ if (wherevalue == null || wherevalue.size() == 0) {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ StringBuffer sql = new StringBuffer();
|
|
|
+ sql.append(columnName).append(" in ( ");
|
|
|
+ for (int i = 0; i < wherevalue.size(); i++) {
|
|
|
+ sql.append("'").append(wherevalue.get(i) + "'").append(",");
|
|
|
+ if ((i + 1) % 40 == 0 && (i + 1) < wherevalue.size()) {
|
|
|
+ sql.deleteCharAt(sql.length() - 1);
|
|
|
+ sql.append(" ) or ").append(columnName).append(" in ( ");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sql.deleteCharAt(sql.length() - 1);
|
|
|
+ sql.append(" ) ");
|
|
|
+
|
|
|
+ return sql.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * getImpPurchaseVO:根据特定条件进行拆单汇总
|
|
|
+ *
|
|
|
+ * @author
|
|
|
+ * @date
|
|
|
+ * @param objList
|
|
|
+ * @return Object
|
|
|
+ */
|
|
|
+ private Object getImpPurchaseVO(List<List<Object>> objList) {
|
|
|
+ ArrayList<SapplyBillVO> aggvos = new ArrayList<SapplyBillVO>();
|
|
|
+ StringBuffer restBuf = new StringBuffer();
|
|
|
+ ArrayList<String> headKeys = new ArrayList<String>();
|
|
|
+ ArrayList<SapplyBillHeadVO> imphList = new ArrayList<SapplyBillHeadVO>();
|
|
|
+ for (int i = 1; i < objList.size(); i++) {
|
|
|
+ List<Object> rowList = objList.get(i);
|
|
|
+ // 根据 库存组织+申请日期+项目经理+申请部门+工程项目+自定领料人 汇总表头数据
|
|
|
+ String headKey = rowList.get(1).toString() + rowList.get(2).toString() + rowList.get(3).toString()
|
|
|
+ + rowList.get(4).toString() + rowList.get(5).toString()+ rowList.get(6).toString()+ rowList.get(7).toString();
|
|
|
+ if (!headKeys.contains(headKey)) {
|
|
|
+ headKeys.add(headKey);
|
|
|
+ SapplyBillHeadVO imphVO = new SapplyBillHeadVO();
|
|
|
+ StockOrgVO orgVO = orgVOMap.get(rowList.get(1).toString());
|
|
|
+ imphVO.setPk_org(orgVO.getPk_stockorg());
|
|
|
+ imphVO.setPk_org_v(orgVO.getPk_vid());
|
|
|
+ imphVO.SetCissueorg(orgVO.getPk_stockorg()); //发料库存组织最新版本
|
|
|
+ imphVO.SetCissueorg_v(orgVO.getPk_vid()); //发料库存组织
|
|
|
+ imphVO.setCorpoid(orgVO.getPk_stockorg());
|
|
|
+ imphVO.setCorpvid(orgVO.getPk_vid());
|
|
|
+ imphVO.setDbilldate(new UFDate(rowList.get(3).toString()));// 申请日期
|
|
|
+ DeptVO deptvo=deptVOMap.get(rowList.get(5).toString());
|
|
|
+ imphVO.setCdptid(deptvo.getPk_dept());//部门
|
|
|
+ imphVO.setCdptvid(deptvo.getPk_vid());//部门
|
|
|
+ BilltypeVO billtypeVO = billTypeMap.get(rowList.get(2).toString());
|
|
|
+ imphVO.setVtrantypecode(rowList.get(2).toString());//申请类型编码
|
|
|
+ imphVO.setCtrantypeid (billtypeVO.getPk_billtypeid());//申请类型
|
|
|
+ PsndocVO psndocVO = psndocVOMap.get(rowList.get(4).toString());//项目经理
|
|
|
+ imphVO.setCbizid (psndocVO.getPk_psndoc());
|
|
|
+ ProjectHeadVO projectvo=projectHeadVOMap.get(orgVO.getPk_stockorg()+rowList.get(6).toString());//工程项目
|
|
|
+ imphVO.setVdef2(projectvo.getPk_project());
|
|
|
+ DefdocVO defdocvo= dfdocVOMap.get(rowList.get(7).toString());//自定领料人
|
|
|
+ imphVO.setVdef3(defdocvo.getPk_defdoc());
|
|
|
+ imphVO.setPk_group(pk_group);
|
|
|
+ imphVO.setBillmaker(userid);
|
|
|
+ imphVO.setCreator(userid);//创建人
|
|
|
+ imphVO.setCreationtime (new UFDateTime());//创建时间
|
|
|
+ imphVO.setFbillflag (2); //单据状态
|
|
|
+ imphVO.setIprintcount(0);//打印次数
|
|
|
+
|
|
|
+ imphList.add(imphVO);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (imphList != null && imphList.size() != 0) {
|
|
|
+ for (int i = 0; i < imphList.size(); i++) {
|
|
|
+ SapplyBillVO aggvo=new SapplyBillVO();
|
|
|
+ SapplyBillHeadVO impHVO = imphList.get(i);
|
|
|
+ // 根据表头 库存组织+申请日期+项目经理+申请部门+工程项目+自定领料人 组装表体数据
|
|
|
+ String headKey = impHVO.getPk_org() + impHVO.getDbilldate().toString().substring(0, 10) + impHVO.getCbizid() +impHVO.getCdptid()+impHVO.getVdef2() + impHVO.getVdef3();
|
|
|
+ ArrayList<SapplyBillBodyVO> itemList = new ArrayList<SapplyBillBodyVO>();
|
|
|
+ for (int j = 1; j < objList.size(); j++) {
|
|
|
+ StringBuffer rowMsg = new StringBuffer();
|
|
|
+ List<Object> rowList = objList.get(j);
|
|
|
+ // 根据表头 库存组织+申请日期+项目经理+申请部门+工程项目+自定领料人 组装表体数据
|
|
|
+ StockOrgVO orgVO = orgVOMap.get(rowList.get(1).toString());
|
|
|
+ PsndocVO psndocVO = psndocVOMap.get(rowList.get(4).toString());//项目经理
|
|
|
+ DeptVO deptvo=deptVOMap.get(rowList.get(5).toString());
|
|
|
+ ProjectHeadVO projectvo=projectHeadVOMap.get(orgVO.getPk_stockorg()+rowList.get(6).toString());//工程项目
|
|
|
+ DefdocVO defdocvo= dfdocVOMap.get(rowList.get(7).toString());//自定领料人
|
|
|
+ String itemKey = orgVO.getPk_stockorg() + rowList.get(3).toString() + psndocVO.getPk_psndoc() + deptvo.getPk_dept() +projectvo.getPk_project()+defdocvo.getPk_defdoc();
|
|
|
+ if (headKey.equals(itemKey)) {
|
|
|
+ SapplyBillBodyVO impBVO = new SapplyBillBodyVO();
|
|
|
+ impBVO.setCrowno(10*(j+1)+"");
|
|
|
+ MaterialVO materialVO = materialMap.get(rowList.get(8).toString());
|
|
|
+ if (materialVO == null) {
|
|
|
+ rowMsg.append("物料编码[" + rowList.get(8).toString() + "]检索NC物料档案信息为空;");
|
|
|
+ } else {
|
|
|
+ /*impBVO.setCmaterialoid(materialVO.getPk_source());//物料
|
|
|
+ impBVO.setCmaterialvid(materialVO.getPk_material());//物料编码
|
|
|
+ impBVO.setCunitid(materialVO.getPk_measdoc());// 主单位
|
|
|
+ impBVO.setCastunitid(materialVO.getDef2());// 辅单位
|
|
|
+ impBVO.setVchangerate(materialVO.getDef1());// 换算率
|
|
|
+ UFDouble num = new UFDouble(rowList.get(9).toString());//主数量
|
|
|
+ String[] strArray = impBVO.getVchangerate().split("/");
|
|
|
+ UFDouble hsl = new UFDouble(strArray[0]).div(new UFDouble(strArray[1]));//换算率
|
|
|
+ UFDouble nastnum = num.div(hsl);//辅数量
|
|
|
+// impBVO.setNnum(num.setScale(0, UFDouble.ROUND_HALF_UP));// 主数量
|
|
|
+// impBVO.setNassistnum (nastnum.setScale(0, UFDouble.ROUND_HALF_UP));// 辅数量
|
|
|
+ impBVO.setNnum(num);// 主数量
|
|
|
+ impBVO.setNassistnum (nastnum);// 辅数量
|
|
|
+ impBVO.setCprojectid( projectvo.getPk_project());//项目
|
|
|
+ impBVO.setCorpoid(orgVO.getPk_stockorg());
|
|
|
+ impBVO.setCorpvid(orgVO.getPk_vid());
|
|
|
+ impBVO.setIsclosed(UFBoolean.FALSE);
|
|
|
+ impBVO.setPk_group(pk_group);
|
|
|
+ impBVO.setPk_org(orgVO.getPk_stockorg());
|
|
|
+ impBVO.setPk_org_v(orgVO.getPk_vid());*/
|
|
|
+
|
|
|
+ impBVO.setCmaterialoid(materialVO.getPk_source());//物料
|
|
|
+ impBVO.setCmaterialvid(materialVO.getPk_material());//物料编码
|
|
|
+ impBVO.setCunitid(materialVO.getPk_measdoc());// 主单位
|
|
|
+
|
|
|
+ if(null==materialVO.getDef2() || "".equals(materialVO.getDef2())
|
|
|
+ || null==materialVO.getDef1() || "".equals(materialVO.getDef1())){
|
|
|
+ impBVO.setCastunitid(materialVO.getPk_measdoc());// 辅单位
|
|
|
+ impBVO.setVchangerate("1/1");// 换算率
|
|
|
+ UFDouble num = new UFDouble(rowList.get(9).toString());//主数量
|
|
|
+ impBVO.setNnum(num);// 主数量
|
|
|
+ impBVO.setNassistnum (num);// 辅数量
|
|
|
+ }else{
|
|
|
+ impBVO.setCastunitid(materialVO.getDef2());// 辅单位
|
|
|
+ impBVO.setVchangerate(materialVO.getDef1());// 换算率
|
|
|
+ UFDouble num = new UFDouble(rowList.get(9).toString());//主数量
|
|
|
+ String[] strArray = impBVO.getVchangerate().split("/");
|
|
|
+ UFDouble hsl = new UFDouble(strArray[0]).div(new UFDouble(strArray[1]));//换算率
|
|
|
+ UFDouble nastnum = num.div(hsl);//辅数量
|
|
|
+ impBVO.setNnum(num);// 主数量
|
|
|
+ impBVO.setNassistnum (nastnum);// 辅数量
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ impBVO.setCprojectid( projectvo.getPk_project());//项目
|
|
|
+ impBVO.setCorpoid(orgVO.getPk_stockorg());
|
|
|
+ impBVO.setCorpvid(orgVO.getPk_vid());
|
|
|
+ impBVO.setIsclosed(UFBoolean.FALSE);
|
|
|
+ impBVO.setPk_group(pk_group);
|
|
|
+ impBVO.setPk_org(orgVO.getPk_stockorg());
|
|
|
+ impBVO.setPk_org_v(orgVO.getPk_vid());
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ if (rowMsg.length() > 0) {
|
|
|
+ restBuf.append("根据第[" + (j + 1) + "]行").append(rowMsg.toString());
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ itemList.add(impBVO);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ aggvo.setParentVO(impHVO);
|
|
|
+ aggvo.setChildrenVO(itemList.toArray(new SapplyBillBodyVO[itemList.size()]));
|
|
|
+ aggvos.add(aggvo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (restBuf.length() > 0) {
|
|
|
+ return restBuf.toString();
|
|
|
+ }
|
|
|
+ return aggvos;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|