no message
							parent
							
								
									846e37335b
								
							
						
					
					
						commit
						008534f14f
					
				| 
						 | 
				
			
			@ -265,4 +265,7 @@ public interface ASNManager extends BaseManager{
 | 
			
		|||
	//芝华仕
 | 
			
		||||
	@Transactional
 | 
			
		||||
	void importCHEERSASN(File file);
 | 
			
		||||
	
 | 
			
		||||
	//入库明细导入
 | 
			
		||||
	void asnDetailImport(long asnId,File file);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,6 +22,8 @@ import java.util.Set;
 | 
			
		|||
import java.util.regex.Matcher;
 | 
			
		||||
import java.util.regex.Pattern;
 | 
			
		||||
 | 
			
		||||
import org.springframework.transaction.annotation.Transactional;
 | 
			
		||||
 | 
			
		||||
import jxl.Sheet;
 | 
			
		||||
import jxl.Workbook;
 | 
			
		||||
import jxl.read.biff.BiffException;
 | 
			
		||||
| 
						 | 
				
			
			@ -3582,6 +3584,162 @@ public class DefaultASNManager extends DefaultBaseManager implements
 | 
			
		|||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	@Transactional
 | 
			
		||||
	public void asnDetailImport(long asnId, File file) {
 | 
			
		||||
		if(asnId<=0){
 | 
			
		||||
			throw new BusinessException("请选中一条入库单据!");
 | 
			
		||||
		}
 | 
			
		||||
		Workbook workbook;
 | 
			
		||||
		try {
 | 
			
		||||
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
 | 
			
		||||
			ASN asn=commonDao.load(ASN.class, asnId);
 | 
			
		||||
			StringBuffer locBuffer=new StringBuffer();//不存在的库位
 | 
			
		||||
			StringBuffer itemBuffer=new StringBuffer();//不存在的物料
 | 
			
		||||
			StringBuffer zlztBuffer=new StringBuffer();//不存在的质量状态
 | 
			
		||||
			Map<String,Location> locMap=new HashMap<String, Location>();
 | 
			
		||||
			Map<String,Item> itemMap=new HashMap<String, Item>();
 | 
			
		||||
			Map<Item,PackageUnit> packageUnitMap=new HashMap<Item, PackageUnit>();
 | 
			
		||||
			Map<String,CommonCode> zlztMap=new HashMap<String, CommonCode>();
 | 
			
		||||
			workbook = Workbook.getWorkbook(file);
 | 
			
		||||
			Sheet sheet = workbook.getSheet(0);// 得到excel第一页的内容
 | 
			
		||||
		for (int i = 1; i <sheet.getRows(); i++) {
 | 
			
		||||
			//物料编号、特殊备注、期待数量、质量状态、库位号
 | 
			
		||||
			 String itemCode=sheet.getCell(0,i).getContents().trim();//物料编号	
 | 
			
		||||
			 String zlzt=sheet.getCell(3,i).getContents().trim();//质量等级
 | 
			
		||||
			 String loc_Code=sheet.getCell(4,i).getContents().trim();//库位
 | 
			
		||||
			 Location loc=null;
 | 
			
		||||
			 if(itemCode==null || itemCode.length() <=0){
 | 
			
		||||
				 break;
 | 
			
		||||
			 }
 | 
			
		||||
			 
 | 
			
		||||
			 
 | 
			
		||||
			 //物料
 | 
			
		||||
			 List<Item> Items =  commonDao.findByQuery(" from Item l where l.code=:code   and l.disabled=0  and l.company.id="+asn.getCompany().getId()+" ",
 | 
			
		||||
					 new String[] { "code"},new Object[] {itemCode});
 | 
			
		||||
			 if(Items.isEmpty()){
 | 
			
		||||
				 itemBuffer.append((i+1)+"行"+itemCode+";");
 | 
			
		||||
			 }else{
 | 
			
		||||
				 itemMap.put(itemCode, Items.get(0));
 | 
			
		||||
				 
 | 
			
		||||
				 //单位
 | 
			
		||||
				 List<PackageUnit> PackageUnits =  commonDao.findByQuery(" from PackageUnit pu where pu.item.id=:id ",
 | 
			
		||||
				 new String[] { "id"},new Object[] {Items.get(0).getId()});
 | 
			
		||||
				 if(PackageUnits.size()>0){
 | 
			
		||||
					 packageUnitMap.put(Items.get(0), PackageUnits.get(0));
 | 
			
		||||
				 }
 | 
			
		||||
				 
 | 
			
		||||
			 }
 | 
			
		||||
			
 | 
			
		||||
			 
 | 
			
		||||
			 //质量状态
 | 
			
		||||
			 List<CommonCode> CommonCodes =  commonDao.findByQuery(" from CommonCode commonCode  where commonCode.code=:code and commonCode.codeType='质量状态' ",
 | 
			
		||||
					 new String[] { "code"},new Object[] {zlzt});
 | 
			
		||||
			 if(CommonCodes.isEmpty()){
 | 
			
		||||
				 zlztBuffer.append((i+1)+"行"+zlzt+";");
 | 
			
		||||
			 }else{
 | 
			
		||||
				 zlztMap.put(zlzt, CommonCodes.get(0));
 | 
			
		||||
			 }
 | 
			
		||||
			 
 | 
			
		||||
			 //库位
 | 
			
		||||
			 List<Location> Locations =  commonDao.findByQuery(" from Location l where l.code=:code and l.warehouse.id="+WarehouseHolder.getWarehouse().getId()+" ",
 | 
			
		||||
					 new String[] { "code"},new Object[] {loc_Code});
 | 
			
		||||
			 if(Locations.isEmpty()){
 | 
			
		||||
				 locBuffer.append((i+1)+"行"+loc_Code+";");
 | 
			
		||||
			 }else{
 | 
			
		||||
				 locMap.put(loc_Code, Locations.get(0));
 | 
			
		||||
			 }
 | 
			
		||||
			 
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
			if(itemBuffer!=null&&!itemBuffer.toString().equals("")){
 | 
			
		||||
				throw new BusinessException(itemBuffer.toString()+"货品不存在!");
 | 
			
		||||
			}
 | 
			
		||||
		
 | 
			
		||||
			if(zlztBuffer!=null&&!zlztBuffer.toString().equals("")){
 | 
			
		||||
				throw new BusinessException(zlztBuffer.toString()+"质量状态不存在!");
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			if(locBuffer!=null&&!locBuffer.toString().equals("")){
 | 
			
		||||
				throw new BusinessException(locBuffer.toString()+"库位不存在!");
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			for (int i = 1; i <sheet.getRows(); i++) {
 | 
			
		||||
				//物料编号、特殊备注、期待数量、质量状态、库位号
 | 
			
		||||
				 String itemCode=sheet.getCell(0,i).getContents().trim();//货品编号	
 | 
			
		||||
				 String tsbz=sheet.getCell(1,i).getContents().trim();//特殊备注
 | 
			
		||||
				 String quantity=sheet.getCell(2,i).getContents().trim();//数量	
 | 
			
		||||
				 String zlzt=sheet.getCell(3,i).getContents().trim();//质量状态
 | 
			
		||||
				 String loc_Code=sheet.getCell(4,i).getContents().trim();//库位
 | 
			
		||||
				 Location loc=null;
 | 
			
		||||
				 if(itemCode==null || itemCode.length() <=0){
 | 
			
		||||
					 break;
 | 
			
		||||
				 }
 | 
			
		||||
				 //物料
 | 
			
		||||
				 Item item=itemMap.get(itemCode);
 | 
			
		||||
				 
 | 
			
		||||
				 //单位
 | 
			
		||||
				 PackageUnit  packageUnit=packageUnitMap.get(item);
 | 
			
		||||
				 
 | 
			
		||||
				 //库位
 | 
			
		||||
				 Location dock =locMap.get(loc_Code);
 | 
			
		||||
				 
 | 
			
		||||
				 List<ASNDetail> ASNDetails =  commonDao.findByQuery(" from ASNDetail ad  where ad.asn.id=:asnId and ad.item.id=:itemId and ad.dock.id=:dockId ",
 | 
			
		||||
						 new String[] { "asnId","itemId","dockId"},new Object[] {asnId,item.getId(),dock.getId()});
 | 
			
		||||
				 if(ASNDetails.size()>0){
 | 
			
		||||
					 ASNDetail asnDetail=ASNDetails.get(0);
 | 
			
		||||
					 asnDetail.setExpectedQuantity(Double.parseDouble(quantity));
 | 
			
		||||
					 asnDetail.setExpectedQtyOfMasterUnit(Double.parseDouble(quantity));
 | 
			
		||||
					 asnDetail.setQualityStatus(zlzt);
 | 
			
		||||
					 if(asnDetail.getLotInfo()!=null){
 | 
			
		||||
						 asnDetail.getLotInfo().setPropLC1(tsbz);
 | 
			
		||||
					 }
 | 
			
		||||
					 commonDao.store(asnDetail);
 | 
			
		||||
				 }else{
 | 
			
		||||
					 ASNDetail asnDetail=EntityFactory.getEntity(ASNDetail.class);
 | 
			
		||||
					 asnDetail.setAsn(asn);
 | 
			
		||||
					 asnDetail.setItem(item);
 | 
			
		||||
					 asnDetail.setExpectedQuantity(Double.parseDouble(quantity));
 | 
			
		||||
					 asnDetail.setExpectedQtyOfMasterUnit(Double.parseDouble(quantity));
 | 
			
		||||
					 asnDetail.setQualityStatus(zlzt);
 | 
			
		||||
					 LotInfo lotInfo=new LotInfo();
 | 
			
		||||
					 if(StringUtils.isEmpty(tsbz)){
 | 
			
		||||
						 lotInfo.setPropLC1(null);
 | 
			
		||||
					 }else{
 | 
			
		||||
						 lotInfo.setPropLC1(tsbz);
 | 
			
		||||
					 }
 | 
			
		||||
					 Date currentDate = new Date();
 | 
			
		||||
					 String propC1 = sdf.format(currentDate);
 | 
			
		||||
					 lotInfo.setPropC1(propC1);//到货日期
 | 
			
		||||
					 Date propD1=returnDate(propC1);
 | 
			
		||||
					 lotInfo.setPropD1(propD1);
 | 
			
		||||
					 asnDetail.setLotInfo(lotInfo);
 | 
			
		||||
					 asnDetail.setDock(dock); 
 | 
			
		||||
					 Integer lineNo=getlineNo(asn);
 | 
			
		||||
					 if(lineNo==0){
 | 
			
		||||
						 asnDetail.setLineNo(1);
 | 
			
		||||
					 }else{
 | 
			
		||||
						 asnDetail.setLineNo(lineNo+1);
 | 
			
		||||
					 }
 | 
			
		||||
					 asnDetail.setPackageUnit(packageUnit);
 | 
			
		||||
					 commonDao.store(asnDetail);
 | 
			
		||||
					 
 | 
			
		||||
				 }
 | 
			
		||||
				 System.out.println("新增"+(i+1)+"条");
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			//刷新订单
 | 
			
		||||
			 Refresh(asn.getId());
 | 
			
		||||
			 
 | 
			
		||||
	} catch (BiffException e) {
 | 
			
		||||
		// TODO Auto-generated catch block
 | 
			
		||||
		e.printStackTrace();
 | 
			
		||||
	} catch (IOException e) {
 | 
			
		||||
		// TODO Auto-generated catch block
 | 
			
		||||
		e.printStackTrace();
 | 
			
		||||
	}
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	
 | 
			
		||||
	
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,23 @@
 | 
			
		|||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
 | 
			
		||||
<pages>
 | 
			
		||||
    <editPage id="editAsnDetailImportPage" title="明细导入" entityClass="com.dev.swms.server.model.receiving.ASNDetail" width="270" height="130" onClose="refreshParent">
 | 
			
		||||
        <inputUIs>
 | 
			
		||||
            <hidden id="asnDetail.id" reserve="false"/>
 | 
			
		||||
            <file id="imageFile" title="importFile" row="1" col="2" readOnly="false" required="false" reserve="false" forceOverride="true" inVisible="false" showImage="false" storeDir="IMAGE_FILE_DIR" />
 | 
			
		||||
        </inputUIs>
 | 
			
		||||
        <buttons>
 | 
			
		||||
            <commit id="asnDetailImport" title="导入" enableType="single" invisible="false">
 | 
			
		||||
                <mappings>
 | 
			
		||||
                	 <mapping id="asn.id" className="long"/>
 | 
			
		||||
                    <mapping id="imageFile" className="file"/>
 | 
			
		||||
                </mappings>
 | 
			
		||||
                <actions>
 | 
			
		||||
                    <action managerName="asnManager" methodName="asnDetailImport" parameter="asn.id,imageFile"/>
 | 
			
		||||
                </actions>
 | 
			
		||||
                <forwards>
 | 
			
		||||
                </forwards>
 | 
			
		||||
            </commit>
 | 
			
		||||
        </buttons>
 | 
			
		||||
    </editPage>
 | 
			
		||||
</pages>
 | 
			
		||||
| 
						 | 
				
			
			@ -107,6 +107,8 @@
 | 
			
		|||
                        <forward name="refreshWindow" newEnabled="true" editEnabled="true"/>
 | 
			
		||||
                    </forwards>
 | 
			
		||||
                </commit>
 | 
			
		||||
                <popup id="asnDetailImport" title="明细导入" enableType="none" invisible="false" containId="true" pageId="editAsnDetailImportPage"/>
 | 
			
		||||
        
 | 
			
		||||
            </buttons>
 | 
			
		||||
        </detail>
 | 
			
		||||
    </modifyDetailPage>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,113 +0,0 @@
 | 
			
		|||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
 | 
			
		||||
<pages>
 | 
			
		||||
    <modifyDetailPage id="editXingkanASNPage" title="editXingkanASNPage" entityClass="com.dev.swms.server.model.receiving.ASN" onClose="refreshParent" width="900" height="540">
 | 
			
		||||
        <modify>
 | 
			
		||||
            <inputUIs>
 | 
			
		||||
                <hidden id="asn.status" reserve="false"/>
 | 
			
		||||
                <hidden id="asn.version" reserve="false"/>
 | 
			
		||||
                <hidden id="asn.id" reserve="false"/>
 | 
			
		||||
               <list id="asn.company.id" title="asn.company" row="1" col="1" span="1" width="120" defaultValue="3" readOnly="false" required="true" reserve="false" forceOverride="true">
 | 
			
		||||
                    <hql><![CDATA[select company.id, company.name from Structure company
 | 
			
		||||
 where company.beCompany = true
 | 
			
		||||
 and company.disabled=false
 | 
			
		||||
 and (company.id in (select u.organization.id from UserOrganize u where u.user=#{SESSION_USERS})
 | 
			
		||||
 or 0=(select COALESCE(max(u.id),0) from UserOrganize u where u.user=#{SESSION_USERS})
 | 
			
		||||
 )
 | 
			
		||||
]]></hql>
 | 
			
		||||
                </list>
 | 
			
		||||
                <text id="asn.code" title="asn.code" row="1" col="2" readOnly="true" required="false" reserve="false" forceOverride="false" inVisible="false" trimSpace="true"/>
 | 
			
		||||
                <date id="asn.orderDate" title="asn.orderDate" row="1" col="3" readOnly="false" required="true" reserve="false" forceOverride="false" inVisible="false" showTime="false" manualEditable="true" defaultCurrentDate="true"/>
 | 
			
		||||
                <list id="asn.billType.id" title="asn.billType" row="1" col="4" span="1" width="120" readOnly="false" required="true" reserve="false" forceOverride="true">
 | 
			
		||||
                    <hql><![CDATA[select billType.id,billType.name
 | 
			
		||||
 from BillType billType
 | 
			
		||||
 where 1=1
 | 
			
		||||
 and billType.disabled=false
 | 
			
		||||
 and billType.type='RECEIVE'
 | 
			
		||||
]]></hql>
 | 
			
		||||
                </list>
 | 
			
		||||
                <text id="asn.relatedBill1" title="入库通知单编号" row="2" col="1" readOnly="false" required="true" reserve="false" forceOverride="false" inVisible="false" trimSpace="true"/>
 | 
			
		||||
                <text id="asn.fromContact.person" title="contact.person" row="2" col="2" readOnly="false" required="false" reserve="false" forceOverride="false" inVisible="false" trimSpace="true"/>
 | 
			
		||||
                <text id="asn.fromContact.telephone" title="contact.telephone" row="2" col="3" readOnly="false" required="false" reserve="false" forceOverride="false" inVisible="false" trimSpace="true"/>
 | 
			
		||||
                <text id="asn.relatedBill2" title="合同号" row="2" col="4" readOnly="false" required="false" reserve="false" forceOverride="false" inVisible="false" trimSpace="true"/>
 | 
			
		||||
                <text id="asn.fromAddress.address" title="address.address" row="3" col="1" span="4" width="720" readOnly="false" required="false" reserve="false" forceOverride="false" inVisible="false" length="255" trimSpace="true"/>
 | 
			
		||||
                <text id="asn.description" title="asn.description" row="4" col="1" span="4" width="720" readOnly="false" required="false" reserve="false" forceOverride="true" inVisible="false" trimSpace="true"/>
 | 
			
		||||
            </inputUIs>
 | 
			
		||||
            <buttons>
 | 
			
		||||
                <commit id="save" title="save" enableType="none" invisible="false">
 | 
			
		||||
                    <enableExpression><![CDATA[${asn.status} == 'OPEN']]></enableExpression>
 | 
			
		||||
                    <mappings>
 | 
			
		||||
                        <mapping id="asn" className="com.dev.swms.server.model.receiving.asn"/>
 | 
			
		||||
                    </mappings>
 | 
			
		||||
                    <actions>
 | 
			
		||||
                        <action managerName="asnManager" methodName="storeASN" parameter="asn"/>
 | 
			
		||||
                    </actions>
 | 
			
		||||
                    <forwards>
 | 
			
		||||
                        <forward name="refreshParent" newEnabled="true" editEnabled="true"/>
 | 
			
		||||
                        <forward name="refreshWindow" newEnabled="true" editEnabled="true"/>
 | 
			
		||||
                    </forwards>
 | 
			
		||||
                </commit>
 | 
			
		||||
            </buttons>
 | 
			
		||||
        </modify>
 | 
			
		||||
        <detail autoQuery="false">
 | 
			
		||||
            <datasource><![CDATA[SELECT 
 | 
			
		||||
 asnDetail.id,
 | 
			
		||||
 asnDetail.lineNo,
 | 
			
		||||
 asnDetail.dock.code,
 | 
			
		||||
 asnDetail.item.code,
 | 
			
		||||
 asnDetail.item.largeClass,
 | 
			
		||||
 asnDetail.item.centerClass,
 | 
			
		||||
 asnDetail.item.smallClass,
 | 
			
		||||
 asnDetail.item.name,
 | 
			
		||||
 asnDetail.item.specs, 
 | 
			
		||||
 asnDetail.qualityStatus,
 | 
			
		||||
 asnDetail.lotInfo.propLC1,
 | 
			
		||||
 asnDetail.expectedQuantity,
 | 
			
		||||
 asnDetail.receivedQuantity,
 | 
			
		||||
 asnDetail.lotInfo.propC1,
 | 
			
		||||
 asnDetail.packageUnit.unit
 | 
			
		||||
 FROM ASNDetail asnDetail
 | 
			
		||||
 left join asnDetail.dock
 | 
			
		||||
 WHERE 1=1 
 | 
			
		||||
 /~asn.id: AND asnDetail.asn.id = {asn.id} ~/
 | 
			
		||||
 ORDER BY asnDetail.lineNo ASC]]></datasource>
 | 
			
		||||
            <columns>
 | 
			
		||||
                 <column id="asnDetail.id" title="asnDetail.id" visible="false"/>
 | 
			
		||||
                <column id="asnDetail.lineNo" title="行号" width="50" visible="true" horizonAlign="left"/>
 | 
			
		||||
                <column id="asnDetail.dock.code" title="库位号" visible="true" horizonAlign="right"/>
 | 
			
		||||
                <column id="asnDetail.item.code" title="item.code" visible="true" horizonAlign="left"/>
 | 
			
		||||
                <column id="item.largeClass" title="item.largeClass" visible="true" horizonAlign="left"/>
 | 
			
		||||
                <column id="item.centerClass" title="item.centerClass" visible="true" horizonAlign="left"/>
 | 
			
		||||
                <column id="item.smallClass" title="item.smallClass" visible="true" horizonAlign="left"/>
 | 
			
		||||
                <column id="asnDetail.item.name" title="item.name" visible="true" horizonAlign="left"/>
 | 
			
		||||
                <column id="asnDetail.item.specs" title="item.specs" visible="true" horizonAlign="left"/>
 | 
			
		||||
                <column id="asnDetail.qualityStatus" title="质量状态" width="80" visible="true" horizonAlign="left"/>
 | 
			
		||||
                <column id="asnDetail.lotInfo.propLC1" title="特殊备注" visible="true" horizonAlign="left"/>
 | 
			
		||||
                <column id="asnDetail.expectedQuantity" title="asnDetail.expectedQuantity" visible="true" horizonAlign="right"/>
 | 
			
		||||
                <column id="asnDetail.receivedQuantity" title="收货数量" visible="true" horizonAlign="right"/>
 | 
			
		||||
                <column id="asnDetail.PO" title="到货日期" visible="true" horizonAlign="left"/>
 | 
			
		||||
                <column id="asnDetail.packageUnit.unit" title="packageUnit.unit" width="80" visible="true" horizonAlign="left"/>
 | 
			
		||||
            </columns>
 | 
			
		||||
            <buttons>
 | 
			
		||||
                <popup id="newDetail" title="newDetail" enableType="none" invisible="false" containId="false" pageId="editASNDetailPage">
 | 
			
		||||
                </popup>
 | 
			
		||||
                <popup id="modify" title="modifyDetail" enableType="single" invisible="false" containId="true" pageId="editASNDetailPage">
 | 
			
		||||
                    <enableExpression><![CDATA[${asnDetail.expectedQuantity} > ${asnDetail.receivedQuantity} ]]></enableExpression>
 | 
			
		||||
                </popup>
 | 
			
		||||
                <commit id="deleteDetail" title="deleteDetail" enableType="multi" invisible="false" confirmMessage="editReceivingDocPage.confirm.delete">
 | 
			
		||||
                    <enableExpression><![CDATA[${asnDetail.expectedQuantity} > ${asnDetail.receivedQuantity} ]]></enableExpression>
 | 
			
		||||
                    <mappings>
 | 
			
		||||
                        <mapping id="asn.id" className="long"/>
 | 
			
		||||
                        <mapping id="ids" className="list"/>
 | 
			
		||||
                    </mappings>
 | 
			
		||||
                    <actions>
 | 
			
		||||
                        <action managerName="asnManager" methodName="removeASNDetail" parameter="asn.id,ids"/>
 | 
			
		||||
                    </actions>
 | 
			
		||||
                    <forwards>
 | 
			
		||||
                        <forward name="refreshWindow" newEnabled="true" editEnabled="true"/>
 | 
			
		||||
                    </forwards>
 | 
			
		||||
                </commit>
 | 
			
		||||
            </buttons>
 | 
			
		||||
        </detail>
 | 
			
		||||
    </modifyDetailPage>
 | 
			
		||||
</pages>
 | 
			
		||||
		Loading…
	
		Reference in New Issue