Quellcode durchsuchen

Merge remote-tracking branch 'origin/mes_malata_prod' into mes_malata_prod

caosy vor 2 Jahren
Ursprung
Commit
ef367d98a9

+ 9 - 5
WebContent/app/controller/scm/reserve/ProdCreateBarcode.js

@@ -63,10 +63,12 @@ Ext.define('erp.controller.scm.reserve.ProdCreateBarcode', {
 				  if(pr_code && number){
 					  Ext.getCmp("pr_partNumber").setValue('');
 					  var batchcode = Ext.getCmp('batchCode').value;
-					  if(batchcode != null && batchcode != ''){						  
-						  me.batchGenerateBarcode(pr_code,number,batchcode);
+					  var UseBarcode = Ext.getCmp('UseBarcode').value;
+					  var barcode = Ext.getCmp('barCode').value;
+					  if(batchcode != null && batchcode != ''){
+						  me.batchGenerateBarcode(barcode,pr_code,number,batchcode,UseBarcode);
 					  }else{
-						  me.batchGenerateBarcode(pr_code,number,'');
+						  me.batchGenerateBarcode(barcode,pr_code,number,'',UseBarcode);
 					  } 
 				  }  
     			}
@@ -109,15 +111,17 @@ Ext.define('erp.controller.scm.reserve.ProdCreateBarcode', {
 			else
 				mask.hide();
   },
-    batchGenerateBarcode: function(pr_code,number,batchcode){  
+    batchGenerateBarcode: function(barcode,pr_code,number,batchcode,UseBarcode){
 		var me=this;
 		me.setLoading(true); 
 		Ext.Ajax.request({
 	    	url : basePath +'scm/reserve/batchGenerateBarcode.action',
 			params: {
+				barcode:barcode,
 				pr_code:pr_code,
 				number:number,
-				batchcode:batchcode
+				batchcode:batchcode,
+				UseBarcode:UseBarcode
 			},
 			method : 'post',
 			callback : function(options,success,response){

+ 1 - 1
WebContent/app/view/scm/reserve/ProdCreateBarcode.js

@@ -37,7 +37,7 @@ Ext.define('erp.view.scm.reserve.ProdCreateBarcode',{
                         }}, {xtype:'button' , text:'清空',columnWidth: 0.07,margin: '20 0 0 0',handler: function(view, rowIndex, colIndex) {
                         	Ext.getCmp('barCode').setValue("");
                         	Ext.getCmp('barCode').focus(false, 100);
-						}} ,
+						}} ,{xtype:'checkbox' ,     fieldLabel:'使用录入条码',columnWidth: 0.07,margin: '20 0 0 0',id:"UseBarcode"},
                         { xtype: 'dbfindtrigger',fieldLabel:  '<font color="red">物料编号</font>',id: 'pr_code',name: 'pr_code',
 			    	    	labelAlign : "right",allowBlank: false,labelWidth:80,columnWidth: 0.45,margin: '20 0 0 0'},
                         { xtype: "textfield", name: "pr_partNumber", id:'pr_partNumber',labelAlign : "right",fieldLabel: '<font color="red">数量</font>', allowBlank: false,labelWidth:80,columnWidth: 0.45,margin: '20 0 0 0'},

+ 21 - 3
src/com/uas/mes/api/pda/PdaSMTController.java

@@ -160,7 +160,17 @@ public class PdaSMTController extends BaseApiController{
 	public ModelMap checkData(String dsl,String deviceLineMake){
 		return success(pdaSMTService.checkData(dsl,deviceLineMake));
 	}
-	
+
+	/**
+	 * 站位料卷校验记录日志
+	 * @param dsl 校验 type:loading (上料)、join(接料),dsl_location :站位,dsl_prodcode:物料编号,success:boolean true or false
+	 * @param deviceLineMake 线别等信息
+	 */
+	@RequestMapping(value="/checkDataRepeat.action",method = RequestMethod.POST)
+	public ModelMap checkDataRepeat(String dsl,String deviceLineMake){
+		return success(pdaSMTService.checkDataRepeat(dsl, deviceLineMake));
+	}
+
 	/**
 	 * @param data
 	 * 工单号的模糊查询
@@ -206,16 +216,24 @@ public class PdaSMTController extends BaseApiController{
 	public ModelMap getUnCheckLocation (String linecode){
 		return success(pdaSMTService.getUnCheckLocation(linecode));
 	}
-	
+
 	/**
 	 * @param data
 	 * 点击开始校验按钮,自动发送请求,清空校验站位,返回未校验信息
 	 */	
+	@RequestMapping(value="/startCheckRepeat.action",method = RequestMethod.GET)
+	public ModelMap startCheckRepeat (String linecode){
+		return success(pdaSMTService.startCheckRepeat(linecode));
+	}
+
+	/**
+	 * @param data
+	 * 点击开始校验按钮,自动发送请求,清空校验站位,返回未校验信息
+	 */
 	@RequestMapping(value="/startCheck.action",method = RequestMethod.GET)
 	public ModelMap startCheck (String linecode){
 		return success(pdaSMTService.startCheck(linecode));
 	}
-	
 	/**
 	 * @param data
 	 * 接料前返回需要校验的物料/料卷信息

+ 5 - 1
src/com/uas/mes/pda/service/PdaSMTService.java

@@ -33,7 +33,9 @@ public interface PdaSMTService {
 	Map<String, Object> diffData(String li_code, String ma_code, String table);
 
 	Map<String, Object> checkData(String dl_macode, String dl_linecode);
-	
+
+	Map<String, Object> checkDataRepeat(String dl_macode, String dl_linecode);
+
 	List<Map<String, Object>> fuzzySearch(String inoutNo);
 	
 	List<Map<String, Object>> fuzzySearchProduct(String pr_code);
@@ -45,6 +47,8 @@ public interface PdaSMTService {
 	Map<String, Object> getUnCheckLocation (String linecode);
 	
 	Map<String, Object> startCheck (String linecode);
+
+	Map<String, Object> startCheckRepeat (String linecode);
 	
 	Map<String, Object> joinForcastDataGet(String dsl_location,String dsl_linecode,String dsl_table);
 

+ 115 - 4
src/com/uas/mes/pda/service/impl/PdaSMTServiceImpl.java

@@ -2,6 +2,7 @@ package com.uas.mes.pda.service.impl;
 
 import com.uas.mes.common.data.BaseDao;
 import com.uas.mes.common.support.SystemSession;
+import com.uas.mes.common.util.BaseUtil;
 import com.uas.mes.core.bind.Constant;
 import com.uas.mes.core.data.SqlRowList;
 import com.uas.mes.core.exception.APIErrorException;
@@ -256,9 +257,24 @@ public class PdaSMTServiceImpl implements PdaSMTService {
 			}
 		}
 		double ma_qty=0;
-		rs = baseDao.queryForRowSet("select ma_qty from make where ma_id=?",map.get("MA_ID"));
+		rs = baseDao.queryForRowSet("select ma_qty,ma_custcode from make where ma_id=?",map.get("MA_ID"));
 		if(rs.next()){
 			ma_qty = rs.getDouble("ma_qty");
+			if(baseDao.getFieldDataByCondition("configs","data","caller='MESSetting' and  code='LD'").toString().equals("1")){
+				String ma_custcode=rs.getString("ma_custcode");
+				String barcode=bar_code.toString();
+				//如果是联迪B2工单号
+				if(ma_custcode.equals("W00397")){
+					if(!barcode.substring(barcode.length()-2).equals("IN")||pr_code.length()==barcode.length()){
+						BaseUtil.showError("该工单不允许采集此条码,请采集IN后缀条码");
+					}
+				}
+				if(barcode.substring(barcode.length()-2).equals("IN")){
+					if(!ma_custcode.equals("W00397")){
+						BaseUtil.showError("该工单不允许采集IN后缀条码,请采集其他条码");
+					}
+				}
+			}
 		}
 		/**
 		 * @author wuyx
@@ -1396,6 +1412,89 @@ public class PdaSMTServiceImpl implements PdaSMTService {
 		 return mapR;
 	}
 
+	@Override
+	public Map<String, Object> checkDataRepeat(String dsl,String deviceLineMake) {
+		Map<Object, Object> map = FlexJsonUtil.fromJson(deviceLineMake);
+		Map<Object, Object> map1 = FlexJsonUtil.fromJson(dsl);
+		String ma_prodcode = null;
+		String ma_code = String.valueOf(map.get("DL_MACODE"));
+		Object linecode = map.get("DL_LINECODE");
+		Object dl_prodcode = map.get("DL_PRODCODE");
+		String table = null;
+		Object location = map1.get("dsl_location");
+		Object prodcode = map1.get("dsl_prodcode");
+		Integer ps_id = 0;
+		Integer dl_id = 0;
+		boolean success = Boolean.valueOf(String.valueOf(map1.get("success")));
+		SqlRowList rs;
+		int cn=0;
+		cn=baseDao.getCount("select count(1) from devsmtlocation where dsl_linecode='"+linecode+"' and dsl_table ='"+map.get("DL_TABLE")+"' and dsl_location = '"+map1.get("dsl_location")+"' and dsl_status = 0");
+		if(cn==0){
+			baseDao.execute(INSERT_SMTLOG,SystemSession.getUser().getEm_name(),"复检校验","校验失败,站位未上料",linecode,location,-1,map.get("DL_PRODCODE"),"",map.get("DL_TABLE"),Integer.valueOf(returnMake(linecode,dl_prodcode,map.get("DL_TABLE")).get("hasmake").toString()) == -1 ? returnMake(linecode,dl_prodcode,map.get("DL_TABLE")).get("macode"):"");
+			throw new APIErrorException(APIErrorCode.BUSINESS_FAILED,"无上料记录!");
+		}
+		//校验成功
+		if(success){
+			rs = baseDao.queryForRowSet("select dl_id,dl_hasmake,dl_smtid,dl_table,dl_decode,dl_prodcode from deviceline where dl_linecode=? and dl_macode=?",linecode,ma_code);
+			if(rs.next()){
+				dl_id = rs.getInt("dl_id");
+				table = rs.getString("dl_table");
+				ma_prodcode = rs.getString("dl_prodcode");
+				//无论上料还是接料,判断devsmtlocation 表中是否有记录,并且是否有料卷号,
+				//有记录,没有料卷号 --上料,接料:则更新物料编号.  有料卷号--上料、接料:则更新成已校验
+				ps_id = baseDao.getJdbcTemplate().queryForObject("select max(ps_id) from productsmt left join productsmtlocation on psl_psid=ps_id where ps_linecode=? and ps_prodcode=? and ps_statuscode='AUDITED' AND PSL_TABLE=?", Integer.class,linecode,ma_prodcode,table);
+				if(ps_id == null ||ps_id == 0){
+					throw new APIErrorException(APIErrorCode.BUSINESS_FAILED,"线别+产品对应的站位表不存在!");
+				}else if(ps_id!=rs.getInt("dl_smtid")){//更新排位表ID
+
+				}
+				baseDao.execute("update devsmtlocation set dsl_ifcheck=-1 where dsl_linecode=? and dsl_makecode=? and dsl_location=? and dsl_status=0",linecode,ma_code,location);
+			}
+		}
+		//成功失败都记录日志
+		int i=0;String meg = "校验成功";
+		if(!success){
+			i =-1;
+			meg = "校验失败";
+		}
+		baseDao.execute(INSERT_SMTLOG,SystemSession.getUser().getEm_name(),"复检校验",meg+",料号:"+prodcode,linecode,location,i,map.get("DL_PRODCODE"),"",map.get("DL_TABLE"),Integer.valueOf(returnMake(linecode,dl_prodcode,map.get("DL_TABLE")).get("hasmake").toString()) == -1 ? returnMake(linecode,dl_prodcode,map.get("DL_TABLE")).get("macode"):"");
+		if(success)
+		{
+			baseDao.execute("update smtmessagelog  set sml_confirm = -1 where sml_linecode  = '"+linecode+"' and sml_type = '接料原物料号校验' and sml_location = '"+location+"' and sml_date > sysdate-1/2 and sml_table = '"+map.get("DL_TABLE")+"'");
+		}
+		//ps_id,table,linecode,ma_code,table
+		Map<String,Object> mapR = new HashMap <String, Object>();
+		rs=baseDao.queryForRowSet("select * from (select psl_location from(select min(psl_detno)psl_detno,psl_location from productsmtlocation "
+				+" where psl_psid=? and psl_table=? and  psl_location not in (select distinct dsl_location from devsmtlocation where "
+				+" dsl_linecode=? and dsl_makecode=? and dsl_table=?  and dsl_status=0 and dsl_ifcheck = -1) "
+				+" group by psl_location order by psl_detno)) where rownum<=20 ",ps_id,table,linecode,ma_code,table);
+		if(rs.next()){
+			mapR.put("NotCheckLocation", rs.getResultList());
+		}else{
+			mapR.put("NotCheckLocation", "");
+		}
+		rs=baseDao.queryForRowSet("select count(1) cn from (select distinct psl_location from productsmtlocation where psl_psid=? and psl_table=? and "
+				+" psl_location not in (select distinct dsl_location from devsmtlocation where "
+				+" dsl_linecode=? and dsl_makecode=? and dsl_table=? and dsl_status=0 and dsl_ifcheck = -1)) ",ps_id,table,linecode,ma_code,table);
+		if(rs.next()){
+			mapR.put("NotCheckCount", rs.getInt("cn"));
+		}else{
+			mapR.put("NotCheckCount",0);
+		}
+		if(success){
+			Integer psl_id = baseDao.getJdbcTemplate().queryForObject("select max(psl_id) from productsmtlocation where psl_psid=? and psl_table=? and (psl_location,psl_prodcode) "
+					+" not in(select dsl_location,dsl_fprodcode from devsmtlocation where dsl_linecode=? "
+					+" and dsl_makecode=? and dsl_status=0 and dsl_ifcheck=-1)",Integer.class,ps_id,table,linecode,ma_code);
+			if(psl_id == null || psl_id == 0){
+				baseDao.execute("update deviceline set dl_checkcount=nvl(dl_checkcount,0)+1 where dl_id=?",dl_id);
+				baseDao.execute("update devsmtlocation set dsl_ifcheck = 0 where dsl_linecode=? and dsl_makecode=? and dsl_table=? and dsl_status=0",linecode,ma_code,table);
+				baseDao.execute(INSERT_SMTLOG,SystemSession.getUser().getEm_name(),"复检校验","完成一次校验",linecode,"",0,map.get("DL_PRODCODE"),"",map.get("DL_TABLE"),Integer.valueOf(returnMake(linecode,dl_prodcode,map.get("DL_TABLE")).get("hasmake").toString()) == -1 ? returnMake(linecode,dl_prodcode,map.get("DL_TABLE")).get("macode"):"");
+
+			}
+		}
+		return mapR;
+	}
+
 	/**
 	 * 针对输入的工单号进行模糊查询
 	 */
@@ -1538,9 +1637,21 @@ public class PdaSMTServiceImpl implements PdaSMTService {
                     baseDao.execute("update smtmessagelog  set sml_confirm = -1 where  sml_type = '接料原物料号校验' and sml_linecode  = '"+linecode+"' and sml_date > sysdate-1/2 and sml_table = '"+rs.getString("dl_table")+"'");
 				}
 			 return unLoading(linecode);
-		}	
-		
-		//因为需要调用两次,所以封装了一个获取未校验站位的方法
+		}
+
+	//重新校验
+	@Override
+	public Map<String, Object> startCheckRepeat(String linecode) {
+		baseDao.execute("update devsmtlocation set dsl_ifcheck =0 where dsl_linecode = ? and dsl_status = 0 and dsl_ifcheck = -1",linecode);
+		SqlRowList rs = baseDao.queryForRowSet("select dl_prodcode,dl_table from deviceline where dl_linecode = ?",linecode);
+		if(rs.next()){
+			baseDao.execute(INSERT_SMTLOG,SystemSession.getUser().getEm_name(),"复检校验","重新校验",linecode,"",0,rs.getString("dl_prodcode"),"",rs.getString("dl_table"),Integer.valueOf(returnMake(linecode,rs.getString("dl_prodcode"),rs.getString("dl_table")).get("hasmake").toString()) == -1 ? returnMake(linecode,rs.getString("dl_prodcode"),rs.getString("dl_table")).get("macode"):"");
+			baseDao.execute("update smtmessagelog  set sml_confirm = -1 where  sml_type = '接料原物料号校验' and sml_linecode  = '"+linecode+"' and sml_date > sysdate-1/2 and sml_table = '"+rs.getString("dl_table")+"'");
+		}
+		return unLoading(linecode);
+	}
+
+	//因为需要调用两次,所以封装了一个获取未校验站位的方法
 		private Map<String, Object> unLoading(String linecode){
 			SqlRowList rs = null;
 			Object macode = null;

+ 1 - 1
src/com/uas/mes/pm/service/impl/StencilServiceImpl.java

@@ -116,7 +116,7 @@ public class StencilServiceImpl implements StencilService{
 		StateAssert.submitOnlyEntering(status);
 		//明细行产品编号不允许重复
 		SqlRowList rs = baseDao.queryForRowSet("select wm_concat(sp_detno) detno from ( select sp_detno from stenilCanUsePro where SP_STID = "+id+" "
-				+ "and SP_PRODCODE in (select SP_PRODCODE from stenilCanUsePro where SP_STID = "+id+" group by SP_PRODCODE having count(SP_PRODCODE) > 1) order by sp_detno asc ) ");
+				+ "and SP_PRODCODE in (select SP_PRODCODE from stenilCanUsePro where SP_STID = "+id+" group by SP_PRODCODE,sp_bm_user having count(SP_PRODCODE) > 1) order by sp_detno asc ) ");
 		if(rs.next() && StringUtil.hasText(rs.getGeneralString("detno"))){
 			BaseUtil.showError("行:"+rs.getGeneralString("detno")+",产品重复,不允许提交!");
 		}

+ 2 - 2
src/com/uas/mes/scm/controller/GenerateBarcodeController.java

@@ -144,9 +144,9 @@ public class GenerateBarcodeController {
 	 */
 	@RequestMapping("/scm/reserve/batchGenerateBarcode.action")
 	@ResponseBody
-	public Map<String, Object> batchGenerateBarcode(String pr_code, String number,String batchcode) {
+	public Map<String, Object> batchGenerateBarcode(String barcode,String pr_code, String number,String batchcode,boolean UseBarcode) {
 		Map<String, Object> modelMap = new HashMap<String, Object>();
-		modelMap.put("data", generateBarcodeService.batchGenerateBarcode(pr_code,number,batchcode));
+		modelMap.put("data", generateBarcodeService.batchGenerateBarcode(barcode,pr_code,number,batchcode,UseBarcode));
 		modelMap.put("success", true);
 		return modelMap;
 	}

+ 1 - 1
src/com/uas/mes/scm/service/GenerateBarcodeService.java

@@ -25,7 +25,7 @@ public interface GenerateBarcodeService {
 	
 	public List<Map<String ,Object>> combiningAndBreaking(String ids, Double total_remain, String every_remain);
 
-	public List<Map<String ,Object>> batchGenerateBarcode(String pr_code,String number,String batchcode);
+	public List<Map<String ,Object>> batchGenerateBarcode(String barcode,String pr_code,String number,String batchcode,boolean UseBarcode);
 
 	public Map<String ,Object> getBarInfo(String bar_code);
 }

+ 43 - 2
src/com/uas/mes/scm/service/impl/GenerateBarcodeServiceImpl.java

@@ -758,7 +758,7 @@ public class GenerateBarcodeServiceImpl implements GenerateBarcodeService{ //生
 	}
 
 	@Override
-	public List<Map<String, Object>> batchGenerateBarcode(String pr_code, String number,String batchcode) {
+	public List<Map<String, Object>> batchGenerateBarcode(String barcode,String pr_code, String number,String batchcode,boolean UseBarcode) {
 		if(("").equals(pr_code) || pr_code == null){
 			BaseUtil.showError("物料编号不能为空");
 		}else if(("").equals(number) || number == null || ("0").equals(number)){
@@ -775,10 +775,51 @@ public class GenerateBarcodeServiceImpl implements GenerateBarcodeService{ //生
 		String[] num = number.split( "," );
 		for(int i = 0;i < num.length;i++){
 			everyNum = Double.valueOf(num[i]);
-			returnList.add(generateBarcode(pr_code,everyNum,pr_id,batchcode));
+			returnList.add(generateBarcode(pr_code,everyNum,pr_id,batchcode,UseBarcode,barcode));
 		}
 		return returnList;
 	}
+	private Map<String,Object> generateBarcode(String pr_code,Double remain,int pr_id,String batchcode,boolean UserBarcode,String barcode){
+		int bar_id = baseDao.getSeqId("BARCODE_SEQ");
+		String bar_code=barcode;
+		Map<String,Object> mp1 = new HashMap<String, Object>();
+		mp1.put("BAR_ID", bar_id);
+		mp1.put("BAR_KIND", "3");// 类型为分拆 :1,合并:2,原始:0,自己生成为3
+		mp1.put("BAR_BATCHCODE", batchcode);
+		mp1.put("BAR_BATCHQTY", remain);
+		mp1.put("BAR_PRODCODE",pr_code);
+		mp1.put("BAR_PRODID",pr_id);
+		mp1.put("BAR_REMAIN",remain );
+		mp1.put("BAR_STATUS", "1");
+		mp1.put("BAR_PLACE", 1);
+		mp1.put("BAR_INMAN", SystemSession.getUser().getEm_name());
+		mp1.put("BAR_RECORDDATE", DateUtil.format(null, "yyyy-MM-dd HH:mm:ss"));
+		Map<String,Object> mapl = new HashMap<String, Object>();
+		if(UserBarcode){
+			bar_code=barcode;
+			mapl.put("BAR_ID", bar_id);
+			mapl.put("BAR_REMAIN", remain);
+			if(baseDao.checkIf("barcode","bar_code='"+bar_code+"'")){
+				mp1.put("BAR_CODE", "条码重复");
+				mp1.put("bar_sourcecode","条码重复");
+				mapl.put("BAR_CODE", "条码重复");
+				baseDao.execute(SqlUtil.getInsertSqlByFormStore(mp1, "barcode", new String[] {}, new Object[] {}));
+			}else{
+				mp1.put("BAR_CODE", bar_code);
+				mapl.put("BAR_CODE", bar_code);
+				baseDao.execute(SqlUtil.getInsertSqlByFormStore(mp1, "barcode", new String[] {}, new Object[] {}));
+			}
+		}else{
+			bar_code = verifyApplyDao.barcodeMethod(pr_code, "",0);// 无供应商信息
+			mp1.put("bar_sourcecode",bar_code);
+			mp1.put("BAR_CODE", bar_code);
+			mapl.put("BAR_CODE", bar_code);
+			baseDao.execute(SqlUtil.getInsertSqlByFormStore(mp1, "barcode", new String[] {}, new Object[] {}));
+			mapl.put("BAR_ID", bar_id);
+			mapl.put("BAR_REMAIN", remain);
+		}
+		return mapl;
+	}
 	
 	private Map<String,Object> generateBarcode(String pr_code,Double remain,int pr_id,String batchcode){
 		int bar_id = baseDao.getSeqId("BARCODE_SEQ");