|
|
@@ -416,17 +416,30 @@ public class MESServiceImpl implements MESService {
|
|
|
String code="";
|
|
|
String msclass="生产报废单";
|
|
|
String caller="MakeScrap";
|
|
|
+ String sourcetype="制造单";
|
|
|
List<String> sqls = new ArrayList<>();
|
|
|
+ Employee employee = baseDao.getJdbcTemplate().queryForObject("select * from employee where em_code=?",
|
|
|
+ new BeanPropertyRowMapper<Employee>(Employee.class), "mes");
|
|
|
for (int i = 0; i <jsonArray.size() ; i++) {
|
|
|
JSONObject jsonObject = JSON.parseObject(StringUtil.nvl(jsonArray.get(i), ""));
|
|
|
String fSelBillNo = StringUtil.nvl(jsonObject.get("FSelBillNo"), "");
|
|
|
if ("".equals(fSelBillNo)){
|
|
|
return ApiResponse.failRsp("10029", requestId, "MES单号不能为空!");
|
|
|
}
|
|
|
+ String prodNo = StringUtil.nvl(jsonObject.get("prodNo"), "");
|
|
|
+ if ("".equals(prodNo)){
|
|
|
+ return ApiResponse.failRsp("10023",requestId,"工单单号不能为空!");
|
|
|
+ }
|
|
|
+ String ma_tasktype = StringUtil.nvl(baseDao.getFieldDataByCondition("make", "ma_tasktype", "ma_code='" + prodNo + "'"), "");
|
|
|
+ if ("OS".equals(ma_tasktype)) {
|
|
|
+ msclass = "委外报废单";
|
|
|
+ caller = "MakeScrap!Make";
|
|
|
+ sourcetype="委外加工单";
|
|
|
+ }
|
|
|
int count = baseDao.getCount("select count(1) from MakeScrap where ms_class='" + msclass + "' and ms_mescode='" + fSelBillNo + "'");
|
|
|
if (count>0){
|
|
|
Object co = baseDao.getFieldDataByCondition("MakeScrap", "ms_code", "ms_class='" + msclass + "' and ms_mescode='" + fSelBillNo + "'");
|
|
|
- return ApiResponse.successRsp("0",requestId,"MES单号:"+fSelBillNo+"已存在,请在ERP查看"+msclass+",单据编号:"+co);
|
|
|
+ return ApiResponse.failRsp("10024",requestId,"MES单号:"+fSelBillNo+"已存在,请在ERP查看"+msclass+",单据编号:"+co);
|
|
|
}
|
|
|
id = baseDao.getSeqId("MAKESCRAP_SEQ");
|
|
|
code = baseDao.sGetMaxNumber(caller, 2);
|
|
|
@@ -435,14 +448,16 @@ public class MESServiceImpl implements MESService {
|
|
|
if ("".equals(fwcCode)) {
|
|
|
return ApiResponse.failRsp("10021", requestId, "工作中心不能为空!");
|
|
|
}
|
|
|
- String createdUser = StringUtil.nvl(jsonObject.get("createdUser"), "mes");
|
|
|
+ String createdUser = StringUtil.nvl(jsonObject.get("createdUser"), employee.getEm_name());
|
|
|
String createdDateTime = StringUtil.nvl(jsonObject.get("createdDateTime"), DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
|
|
|
String companyNo = StringUtil.nvl(jsonObject.get("companyNo"), "BYT");
|
|
|
String fremark = StringUtil.nvl(jsonObject.get("Fremark"), "");
|
|
|
- sqls.add("insert into MakeScrap (ms_id,ms_code,ms_class,ms_statuscode,ms_status,ms_printstatuscode,ms_printstatus,ms_date,ms_wccode,ms_recordman,ms_indate,ms_cop,ms_remark,ms_mescode) values (" + id + ",'" + code + "','"+msclass+ "','ENTERING','在录入','UNPRINT','未打印',to_date('" + fdateTime + "','yyyy-MM-dd HH24:mi:ss'),'" + fwcCode + "','" + createdUser + "',to_date('" + createdDateTime + "','yyyy-MM-dd HH24:mi:ss'),'" + companyNo + "','" + fremark + "','"+fSelBillNo+"')");
|
|
|
+ sqls.add("insert into MakeScrap (ms_id,ms_code,ms_class,ms_statuscode,ms_status,ms_printstatuscode,ms_printstatus,ms_date,ms_wccode,ms_recordman,ms_indate,ms_cop,ms_remark,ms_mescode,ms_sourcetype,ms_sourcecode) values (" + id + ",'" + code + "','"+msclass+ "','COMMITED','已提交','UNPRINT','未打印',to_date('" + fdateTime + "','yyyy-MM-dd HH24:mi:ss'),'" + fwcCode + "','" + createdUser + "',to_date('" + createdDateTime + "','yyyy-MM-dd HH24:mi:ss'),'" + companyNo + "','" + fremark + "','"+fSelBillNo+"','"+sourcetype+"','"+prodNo+"')");
|
|
|
}
|
|
|
JSONArray array = data.get("detail");
|
|
|
int detno=1;
|
|
|
+ String fDeptID=null;
|
|
|
+ String fDept=null;
|
|
|
for (int i = 0; i <array.size(); i++) {
|
|
|
JSONObject object = JSON.parseObject(StringUtil.nvl(array.get(i), "{}"));
|
|
|
String lineId = StringUtil.nvl(object.get("lineId"), "");
|
|
|
@@ -454,10 +469,6 @@ public class MESServiceImpl implements MESService {
|
|
|
if ("".equals(prodNo)){
|
|
|
return ApiResponse.failRsp("10023",requestId,"工单单号不能为空!");
|
|
|
}
|
|
|
- String prodDetno = StringUtil.nvl(object.get("prodDetno"), "");
|
|
|
- if ("".equals(prodDetno)){
|
|
|
- return ApiResponse.failRsp("10024",requestId,"工单行号不能为空!");
|
|
|
- }
|
|
|
String itemNo = StringUtil.nvl(object.get("itemNo"), "");
|
|
|
if ("".equals(itemNo)){
|
|
|
return ApiResponse.failRsp("10024",requestId,"物料不能为空!");
|
|
|
@@ -470,11 +481,11 @@ public class MESServiceImpl implements MESService {
|
|
|
if ("".equals(reason)){
|
|
|
return ApiResponse.failRsp("10026",requestId,"报废原因不能为空!");
|
|
|
}
|
|
|
- String fDeptID = StringUtil.nvl(object.get("FDeptID"), "");
|
|
|
+ fDeptID = StringUtil.nvl(object.get("FDeptID"), "");
|
|
|
if ("".equals(fDeptID)){
|
|
|
return ApiResponse.failRsp("10027",requestId,"责任部门编号不能为空!");
|
|
|
}
|
|
|
- String fDept = StringUtil.nvl(object.get("FDept"), "");
|
|
|
+ fDept = StringUtil.nvl(object.get("FDept"), "");
|
|
|
if ("".equals(fDept)){
|
|
|
return ApiResponse.failRsp("10028",requestId,"责任部门不能为空!");
|
|
|
}
|
|
|
@@ -486,7 +497,114 @@ public class MESServiceImpl implements MESService {
|
|
|
detno++;
|
|
|
}
|
|
|
baseDao.execute(sqls);
|
|
|
- return ApiResponse.successRsp("0",requestId,"生产报废单:"+code+",请在ERP查看!");
|
|
|
+ Object[] status = baseDao.getFieldsDataByCondition("MakeScrap", new String[] { "ms_statuscode", "ms_indate","ms_date" }, "ms_id=" + id);
|
|
|
+ //审核
|
|
|
+ String s = checkFreezeMonth(status[2]);
|
|
|
+ // 账期和工单状态检查
|
|
|
+ String s1 = ScrapCheckAll(id, caller);
|
|
|
+ String s2 = ScrapCheck_scrapqty(id);
|
|
|
+ String s3 = copcheck(id);
|
|
|
+ String s4 = checkMakeMaterial(id);
|
|
|
+ if (s!=null||s1!=null||s2!=null||s3!=null||s4!=null){
|
|
|
+ baseDao.deleteById("MakeScrapdetail","md_msid",id);
|
|
|
+ baseDao.deleteById("MakeScrap","ms_id",id);
|
|
|
+ return ApiResponse.failRsp("10029",requestId,s+s1+s2+s3+s4);
|
|
|
+ }
|
|
|
+ baseDao.updateByCondition("MakeScrapdetail", "md_status=99", "md_msid=" + id);
|
|
|
+ List<Object[]> objects = baseDao.getFieldsDatasByCondition("MakeScrapdetail left join make on ma_code=md_mmcode ", new String[] {
|
|
|
+ "ma_id", "md_mmdetno", "md_qty", "md_prodcode" }, " md_msid=" + id);
|
|
|
+ for (Object[] object : objects) {
|
|
|
+ baseDao.updateByCondition("Makematerial ", "mm_scrapqty =nvl(mm_scrapqty,0)+" + object[2], "mm_detno=" + object[1]
|
|
|
+ + " and mm_maid=" + object[0]);
|
|
|
+ baseDao.updateByCondition("Makematerial ", "mm_repscrapqty =nvl(mm_repscrapqty,0)+" + object[2], "mm_detno=" + object[1]
|
|
|
+ + " and mm_maid=" + object[0] + " and mm_prodcode<>'" + object[3] + "'");
|
|
|
+ baseDao.updateByCondition("Makematerialreplace ", "mp_scrapqty =nvl(mp_scrapqty,0)+" + object[2], " mp_maid=" + object[0]
|
|
|
+ + " and mp_mmdetno=" + object[1] + " and mp_prodcode='" + object[3] + "'");
|
|
|
+ }
|
|
|
+ // 执行审核操作
|
|
|
+ baseDao.updateByCondition("MakeScrap", "ms_status='已审核',ms_statuscode='AUDITED',ms_auditdate=sysdate,ms_auditman='"+employee.getEm_name()+"'","ms_id="+ id);
|
|
|
+ // 记录操作
|
|
|
+ baseDao.execute("INSERT INTO MessageLog(ml_id,ml_date,ml_man,ml_content,ml_result,ml_search) VALUES (MessageLog_seq.nextval,sysdate,'mes','审核操作','审核成功','MakeScrap|ms_id="+id+"')");
|
|
|
+ //生成超损请购
|
|
|
+ int apId = baseDao.getSeqId("APPLICATION_SEQ");
|
|
|
+ String apCode = baseDao.sGetMaxNumber("Application", 2);
|
|
|
+ baseDao.execute("insert into Application (ap_id,ap_code,ap_kind,ap_date,ap_statuscode,ap_status,ap_pleamanname,ap_pleamanid,ap_recorder,ap_recorderid,ap_recorddate,ap_departcode,ap_departname,ap_source,ap_sourceid,ap_printstatuscode,ap_printstatus,ap_remark) values " +
|
|
|
+ "("+apId+",'"+apCode+"','超损请购',sysdate,'ENTERING','在录入','"+employee.getEm_name()+"',"+employee.getEm_id()+",'"+employee.getEm_name()+"',"+employee.getEm_id()+",sysdate,'"+fDeptID+"','"+fDept+"','"+msclass+"',"+id+",'UNPRINT','未打印','MES生产报废单审核生成')");
|
|
|
+ baseDao.execute("insert into applicationdetail (ad_id,ad_apid,ad_code,ad_detno,ad_prodcode,ad_qty,ad_use,ad_statuscode,ad_status,ad_source,ad_sourcecode,ad_remark) " +
|
|
|
+ "select APPLICATIONDETAIL_SEQ.nextval,"+apId+",'"+apCode+"',md_detno,md_prodcode,md_qty,md_reason,'ENTERING','在录入','"+msclass+"','"+code+"','MES生产报废单审核生成' from MakeScrapdetail where md_msid=" + id);
|
|
|
+ baseDao.execute("update applicationdetail set ad_kcqty=(select ad_qty/(case when nvl(pr_purcrate,0)=0 then 1 else pr_purcrate end) from product where pr_code=ad_prodcode) where ad_apid="+apId);
|
|
|
+ return ApiResponse.successRsp("0",requestId,msclass+":"+code+",请在ERP查看!");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ApiResult<String> deleteMakeScrap(HttpServletRequest request) {
|
|
|
+ String requestId = request.getHeader("RequestId");
|
|
|
+ JSONObject jsonData = getJsonData(request);
|
|
|
+ String msclass="生产报废单";
|
|
|
+ String caller="MakeScrap";
|
|
|
+ if (jsonData==null){
|
|
|
+ return ApiResponse.failRsp("10096",requestId,"参数异常!");
|
|
|
+ }
|
|
|
+ String fSelBillNo = StringUtil.nvl(jsonData.get("FSelBillNo"), "");
|
|
|
+ if ("".equals(fSelBillNo)) {
|
|
|
+ return ApiResponse.failRsp("10031", requestId, "MES单号不能为空!");
|
|
|
+ }
|
|
|
+ int count = baseDao.getCount("select count(1) from MakeScrap where ms_mescode='" + fSelBillNo + "'");
|
|
|
+ if (count <= 0) {
|
|
|
+ return ApiResponse.failRsp("10032", requestId, "MES单号对应报废单不存在,请核查!");
|
|
|
+ }
|
|
|
+ Object[] scraps = baseDao.getFieldsDataByCondition("MakeScrap","ms_id,ms_sourcecode,ms_sourcetype,ms_indate,ms_date,ms_code", "ms_mescode='" + fSelBillNo + "'");
|
|
|
+ if ("委外加工单".equals(StringUtil.nvl(scraps[2],""))){
|
|
|
+ msclass = "委外报废单";
|
|
|
+ caller = "MakeScrap!Make";
|
|
|
+ }
|
|
|
+ int msId = Integer.parseInt(StringUtil.nvl(scraps[0], "0"));
|
|
|
+ //判断请购单
|
|
|
+ int count1 = baseDao.getCount("select count(1) from application where nvl(ap_statuscode,'ENTERING')<>'ENTERING' and ap_source='" + msclass + "' and ap_sourceid=" + msId);
|
|
|
+ if(count1>0){
|
|
|
+ return ApiResponse.failRsp("10033", requestId, "请购单不是在录入状态,不允许反审核!");
|
|
|
+ }
|
|
|
+ //反审核报废单
|
|
|
+ String s = checkFreezeMonth(scraps[4]);
|
|
|
+ baseDao.execute("update MakeMaterial set mm_turnaddqty=(select sum(nvl(pd_outqty,0)) from prodiodetail,prodinout "
|
|
|
+ + "where pd_piid=pi_id and pi_statuscode<>'DELETE' and pd_status=0 and "
|
|
|
+ + "pd_ordercode=mm_code and pd_orderdetno=mm_detno and pd_piclass in ('生产补料单', '委外补料单')) where mm_code in (select md_mmcode from MakeScrapDetail where md_msid="
|
|
|
+ + msId + ")");
|
|
|
+ SqlRowList rs = baseDao
|
|
|
+ .queryForRowSet("select md_detno from MakeScrapDetail left join makematerial on mm_code=md_mmcode and md_mmdetno=mm_detno left join make on mm_maid=ma_id where md_msid='"
|
|
|
+ + msId
|
|
|
+ + "' and mm_addqty+NVL(mm_turnaddqty,0)>nvl(mm_scrapqty,0)+nvl(mm_returnmqty,0)-md_qty-nvl(mm_balance,0) and nvl(mm_scrapqty,0)+nvl(mm_returnmqty,0)-md_qty-nvl(mm_balance,0)>0 ");
|
|
|
+ if (rs.next()) {
|
|
|
+ return ApiResponse.failRsp("10033", requestId, "序号【" + rs.getString("md_detno") + "】报废数已生成补料单,不能反审核报废单!");
|
|
|
+ }
|
|
|
+ // 账期和工单状态检查
|
|
|
+ String s1 = ScrapCheckAll(msId, caller);
|
|
|
+ if (s!=null||s1!=null){
|
|
|
+ return ApiResponse.failRsp("10029",requestId,s+s1);
|
|
|
+ }
|
|
|
+ baseDao.deleteByCondition("applicationdetail","ad_apid in (select ap_id from application where ap_source='" + msclass + "' and ap_sourceid=" + msId+")");
|
|
|
+ baseDao.deleteByCondition("Application","ap_source='" + msclass + "' and ap_sourceid=" + msId);
|
|
|
+ baseDao.updateByCondition("MakeScrapdetail", "md_status=0", "md_msid=" + msId);
|
|
|
+ List<Object[]> objects = baseDao.getFieldsDatasByCondition("MakeScrapdetail left join make on ma_code=md_mmcode", new String[] {
|
|
|
+ "ma_id", "md_mmdetno", "md_qty", "md_prodcode" }, " md_msid=" + msId);
|
|
|
+ for (Object[] obj : objects) {
|
|
|
+ baseDao.updateByCondition("Makematerial ", "mm_scrapqty =nvl(mm_scrapqty,0)-" + obj[2], "mm_detno=" + obj[1] + " and mm_maid=" + obj[0]);
|
|
|
+ baseDao.updateByCondition("Makematerial ", "mm_repscrapqty =nvl(mm_repscrapqty,0)-" + obj[2], "mm_detno=" + obj[1] + " and mm_maid=" + obj[0] + " and mm_prodcode<>'" + obj[3] + "'");
|
|
|
+ baseDao.updateByCondition("Makematerialreplace ", "mp_scrapqty =nvl(mp_scrapqty,0)-" + obj[2], " mp_maid=" + obj[0] + " and mp_mmdetno=" + obj[1] + " and mp_prodcode='" + obj[3] + "'");
|
|
|
+ }
|
|
|
+ // 执行反审核操作
|
|
|
+ baseDao.updateByCondition("MakeScrap", "ms_statuscode='ENTERING',ms_status='在录入'", "ms_id=" + msId);
|
|
|
+ // 记录操作
|
|
|
+ baseDao.execute("INSERT INTO MessageLog(ml_id,ml_date,ml_man,ml_content,ml_result,ml_search) VALUES " +
|
|
|
+ "(MessageLog_seq.nextval,sysdate,'mes','反审核操作','反审核成功','MakeScrap|ms_id="+msId+"')");
|
|
|
+ // 删除主表
|
|
|
+ baseDao.deleteById("MakeScrap", "ms_id", msId);
|
|
|
+ // 删除明细表
|
|
|
+ baseDao.deleteById("MakeScrapdetail", "md_msid", msId);
|
|
|
+ // 记录操作
|
|
|
+ baseDao.execute("INSERT INTO MessageLog(ml_id,ml_date,ml_man,ml_content,ml_result,ml_search) VALUES " +
|
|
|
+ "(MessageLog_seq.nextval,sysdate,'mes','删除操作','删除成功','MakeScrap|ms_id="+msId+"')");
|
|
|
+ return ApiResponse.successRsp("0",requestId,msclass+":"+scraps[5]+"删除成功!");
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -704,6 +822,7 @@ public class MESServiceImpl implements MESService {
|
|
|
}
|
|
|
if (warehouses!=null){
|
|
|
sqls.add("update prodinout set pi_purpose='"+warehouses[0]+"',pi_purposename='"+warehouses[1]+"' where pi_id="+bcpiid);
|
|
|
+ sqls.add("update prodinout set pi_whcode='"+warehouses[0]+"',pi_whname='"+warehouses[1]+"' where pi_id="+llpiid);
|
|
|
}
|
|
|
baseDao.execute(sqls);
|
|
|
refreshTurnQty(maid,0);
|
|
|
@@ -1305,6 +1424,7 @@ public class MESServiceImpl implements MESService {
|
|
|
"values ("+llpiid+",'"+llcode+"','"+llpiclass+"',to_date('"+object.get("Fdate")+"','yyyy-MM-dd HH24:mi:ss'),'UNPOST','未过账','"+map1.get("FNumber")+"','"+map1.get("FName")+"','"+map4.get("FNumber")+"','"+map4.get("FName")+"','ENTERING','在录入','"+map5.get("FName")+"',to_date('"+object.get("Fdate")+"','yyyy-MM-dd HH24:mi:ss'),'UNPRINT','未打印','"+map2.get("FName")+"','"+fSelBillNo+"')");
|
|
|
}
|
|
|
int detno=1;
|
|
|
+ Object[] warehouses=null;
|
|
|
for (int i = 0; i <detail.size(); i++) {
|
|
|
JSONObject object = JSON.parseObject(StringUtil.nvl(detail.get(i), "{}"));
|
|
|
Map<Object, Object> map = JSONUtil.toMap(StringUtil.valueOf(object.get("FItemID")));
|
|
|
@@ -1326,7 +1446,7 @@ public class MESServiceImpl implements MESService {
|
|
|
if (count<=0){
|
|
|
return ApiResponse.failRsp("10044",requestId,"MES仓库编号在ERP没有对应关系,请联系管理员新增!");
|
|
|
}
|
|
|
- Object[] warehouses = baseDao.getFieldsDataByCondition("customtabledetail left join customtable on cd_ctid=ct_id left join Warehouse on cd_varchar50_3=wh_code", "cd_varchar50_3,wh_description", "ct_statuscode='AUDITED' and ct_caller='MESWarehouse' and cd_varchar50_1='" + whcode + "'");
|
|
|
+ warehouses = baseDao.getFieldsDataByCondition("customtabledetail left join customtable on cd_ctid=ct_id left join Warehouse on cd_varchar50_3=wh_code", "cd_varchar50_3,wh_description", "ct_statuscode='AUDITED' and ct_caller='MESWarehouse' and cd_varchar50_1='" + whcode + "'");
|
|
|
String ficmoBillNo = StringUtil.nvl(object.get("FICMOBillNo"), "");
|
|
|
int lineId = Integer.parseInt(StringUtil.nvl(object.get("lineId"), "0"));
|
|
|
int count4 = baseDao.getCount("select count(1) from MakeMaterial where mm_id in (" + lineId + ")");
|
|
|
@@ -1342,6 +1462,9 @@ public class MESServiceImpl implements MESService {
|
|
|
if ("OS".equals(ma_tasktype)) {
|
|
|
sqls.add("update prodinout set(pi_cardcode,pi_title,pi_receivecode,pi_receivename) = (select max(ma_vendcode),max(ma_vendname),max(nvl(ma_apvendcode,ma_vendcode)),max(nvl(ma_apvendname,ma_vendname)) from make where ma_id in (" + maid + ")) where pi_id=" + llpiid);
|
|
|
}
|
|
|
+ if (warehouses!=null){
|
|
|
+ sqls.add("update prodinout set pi_whcode='"+warehouses[0]+"',pi_whname='"+warehouses[1]+"' where pi_id="+llpiid);
|
|
|
+ }
|
|
|
baseDao.execute(sqls);
|
|
|
Employee employee = baseDao.getJdbcTemplate().queryForObject("select * from employee where em_code=?",
|
|
|
new BeanPropertyRowMapper<Employee>(Employee.class), "mes");
|
|
|
@@ -3805,4 +3928,101 @@ public class MESServiceImpl implements MESService {
|
|
|
+ maidstr + ")");
|
|
|
}
|
|
|
}
|
|
|
-}
|
|
|
+
|
|
|
+ private String checkFreezeMonth(Object pidate) {
|
|
|
+ boolean bool = baseDao.checkIf("PeriodsDetail", "pd_code='MONTH-P' and pd_status=99 and pd_detno=to_char(to_date('" + pidate
|
|
|
+ + "','yyyy-mm-dd hh24:mi:ss'), 'yyyymm')");
|
|
|
+ if (bool) {
|
|
|
+ return "单据日期所属期间已结账,不允许进行当前操作!";
|
|
|
+ }
|
|
|
+ String freeze = baseDao.getDBSetting("sys","freezeMonth");
|
|
|
+ if (freeze != null && !freeze.equals("")) {
|
|
|
+ if (Integer.parseInt(freeze) == DateUtil.getYearmonth(pidate.toString())) {
|
|
|
+ return "单据日期所属期间已冻结,不允许进行当前操作!";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ private String ScrapCheckAll(int ms_id, String caller) {
|
|
|
+ // 判断工单状态是否已审核
|
|
|
+ SqlRowList rs = baseDao.queryForRowSet("select md_detno,md_mmcode,ma_status from makescrapdetail,make where md_msid=" + ms_id
|
|
|
+ + " and md_mmcode=ma_code and ma_statuscode<>'AUDITED' ");
|
|
|
+ if (rs.next()) {
|
|
|
+ return "制造单" + rs.getString("md_mmcode") + "状态[" + rs.getString("ma_status") + "],只能操作已审核状态的制造单!";
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 判断报废数是否大于结存可报废数
|
|
|
+ *
|
|
|
+ * @param
|
|
|
+ */
|
|
|
+ private String ScrapCheck_scrapqty(Integer ms_id) {
|
|
|
+ String sql = "";
|
|
|
+ String err = "";
|
|
|
+ sql = "UPDATE MakeMaterial set mm_allscrapqty=nvl(mm_scrapqty,0)+nvl((select sum(md_qty) from MakeScrapDetail,MakeScrap where ms_id=md_msid and (ms_statuscode='COMMITED' or ms_id='"
|
|
|
+ + ms_id
|
|
|
+ + "') and mm_code=md_mmcode and md_mmdetno=mm_detno),0) "
|
|
|
+ + " WHERE (mm_code,mm_detno) in (select md_mmcode as mm_code,md_mmdetno as mm_detno from MakeScrapDetail where md_msid='"
|
|
|
+ + ms_id + "')";
|
|
|
+ baseDao.execute(sql);
|
|
|
+
|
|
|
+ if(baseDao.isDBSetting("sys","usingMakeCraft")){
|
|
|
+ sql = "select md_detno,md_mmcode,md_prodcode from MakeScrapDetail left join makematerial on md_mmcode=mm_code and md_mmdetno=mm_detno left join make on mm_maid=ma_id where md_msid="
|
|
|
+ + ms_id + " and round(nvl(mm_allscrapqty,0),4)>round(nvl(mm_havegetqty,0)+nvl(mm_stepinqty,0)-nvl(mm_clashqty,0) -NVL(mm_scrapqty,0),4) ";
|
|
|
+ }else{
|
|
|
+ sql = "select md_detno,md_mmcode,md_prodcode from MakeScrapDetail left join makematerial on md_mmcode=mm_code and md_mmdetno=mm_detno left join make on mm_maid=ma_id where md_msid="
|
|
|
+ + ms_id ;
|
|
|
+ if(baseDao.isDBSetting("Make!Base", "allowChangeAfterCom")){
|
|
|
+ sql = sql+ " and round(nvl(mm_allscrapqty,0),4) > round(nvl(mm_havegetqty,0)-nvl(mm_backqty,0),4) ";
|
|
|
+ }else{
|
|
|
+ sql += " and round(nvl(mm_allscrapqty,0),4)>round(nvl(mm_havegetqty,0)-mm_oneuseqty*ma_madeqty,4) ";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ SqlRowList rs = baseDao.queryForRowSet(sql);
|
|
|
+ while (rs.next()) {
|
|
|
+ err = err + "," + rs.getString("md_detno");
|
|
|
+ }
|
|
|
+ if (!err.equals("")) {
|
|
|
+ return "序号:" + err.substring(1) + "报废数大于结存数!";
|
|
|
+ }
|
|
|
+ sql = "SELECT count(1) detno ,wm_concat(md_detno) as detnostr FROM MakeScrapDetail WHERE md_msid='" + ms_id + "' and md_qty<=0 ";
|
|
|
+ rs = baseDao.queryForRowSet(sql);
|
|
|
+ if (rs.next()) {
|
|
|
+ if (rs.getInt("detno") > 0) {
|
|
|
+ return "序号:" + rs.getString("detnostr") + "报废数小于或等于0,不能审核!";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ private String copcheck(int ms_id) {
|
|
|
+ if (baseDao.isDBSetting("sys","CopCheck")) {
|
|
|
+ // 生产报废单:明细行制造单所属公司与当前单所属公司必须一致,可在提交、打印、审核、过账等操作前配置
|
|
|
+ String dets = baseDao
|
|
|
+ .getJdbcTemplate()
|
|
|
+ .queryForObject(
|
|
|
+ "select wm_concat(md_detno) from MakeScrapDetail left join MakeScrap on md_msid=ms_id left join Make on md_mmcode=ma_code where ms_id=? and nvl(ma_cop,' ')<>nvl(ms_cop,' ') ",
|
|
|
+ String.class, ms_id);
|
|
|
+ if (dets != null) {
|
|
|
+ return "行号:" + dets+"制造单所属公司与当前单所属公司不一致,不允许进行当前操作!";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 验证从表中的工单的序号是否有效
|
|
|
+ private String checkMakeMaterial(int ms_id) {
|
|
|
+ String err = baseDao
|
|
|
+ .getJdbcTemplate()
|
|
|
+ .queryForObject(
|
|
|
+ "select wm_concat(md_detno) from MakeScrapdetail where md_msid=? and not exists (select 1 from make left join makematerial on ma_id=mm_maid where md_mmcode=ma_code and md_mmdetno=mm_detno)",
|
|
|
+ String.class, ms_id);
|
|
|
+ if (err != null) {
|
|
|
+ return "序号:" + err.toString() + " 无对应工单和序号,不允许进行当前操作!";
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+}
|