no message
parent
846e37335b
commit
008534f14f
|
|
@ -265,4 +265,7 @@ public interface ASNManager extends BaseManager{
|
||||||
//芝华仕
|
//芝华仕
|
||||||
@Transactional
|
@Transactional
|
||||||
void importCHEERSASN(File file);
|
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.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import jxl.Sheet;
|
import jxl.Sheet;
|
||||||
import jxl.Workbook;
|
import jxl.Workbook;
|
||||||
import jxl.read.biff.BiffException;
|
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"/>
|
<forward name="refreshWindow" newEnabled="true" editEnabled="true"/>
|
||||||
</forwards>
|
</forwards>
|
||||||
</commit>
|
</commit>
|
||||||
|
<popup id="asnDetailImport" title="明细导入" enableType="none" invisible="false" containId="true" pageId="editAsnDetailImportPage"/>
|
||||||
|
|
||||||
</buttons>
|
</buttons>
|
||||||
</detail>
|
</detail>
|
||||||
</modifyDetailPage>
|
</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