package com.uas.eis.serviceImpl; import java.util.HashMap; import java.util.List; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.alibaba.fastjson.JSON; import com.uas.eis.dao.BaseDao; import com.uas.eis.service.YundingService; import com.uas.eis.utils.BaseUtil; import com.uas.eis.utils.SqlUtil; @Service public class YundingServiceImpl implements YundingService { @Autowired private BaseDao baseDao; /** * 出入库单审核接口 * * @param id * @param piclass * 单据主表id * 单据类型piclass * */ @Override public void ProdInOutAuidted(int id,String piclass) { Map store = new HashMap(); //传入查询code、单据ID传回单据主从表信息Map if (piclass=="采购验收单"||piclass=="委外验收单"){ //云顶插入采购/委外验收单接口 } if (piclass=="采购验退单"||piclass=="委外验退单"){ //云顶插入采购/委外验退单接口 } if (piclass=="拨出单"){ //云顶插入拨出单接口 } if (piclass=="其他入库单"){ //云顶插入其他入库单接口 } if (piclass=="其他出库单"){ //云顶插入其他出库单接口 } } /** * 出入库单云顶数据中心传UAS过账接口 * * @param Store * 单据编号,类型等Json数据 Store * */ @Override public void ProdInOutPOST(String Store) { com.alibaba.fastjson.JSONObject json = JSON.parseObject(Store); String Code=json.getString("xxxxxx").toString(); String Piclass=json.getString("xxxxxx").toString(); String res=null; baseDao.procedure("SP_GetCostPrice", new Object[] { Piclass, Code }); res = baseDao.callProcedure("Sp_SplitProdOut", new Object[] { Piclass, Code, "ADMIN" }); if (res != null && !res.trim().equals("")) { // 重新添加提示限制信息 BaseUtil.showError(res + " " +Piclass + Code + ",过账失败"); // BaseUtil.showError(res); } res = baseDao.callProcedure("Sp_CommitProdInout", new Object[] { Piclass, Code, "ADMIN"}); if (res != null && !res.trim().equals("")) { BaseUtil.showError(res); } } /** * 销售订单云顶数据中心传UAS并生成一张已过账销售出货单接口 * * @param Store * 销售订单主从表Json数据 Store * */ @Override public void Salereceive(String Store) { //销售订单插入 com.alibaba.fastjson.JSONObject json = JSON.parseObject(Store); String jsons =json.toString(); List mappingList = baseDao.getFieldsDatasByCondition("xxx", new String[] { "TD_FROMFIELD", "TD_TOFIELD" }, "qu_id=1"); Map resultmap = new HashMap(); for(Object[] obj : mappingList){ resultmap.put(String.valueOf(obj[0]), String.valueOf(obj[1])); } Map njson=BaseUtil.jsonToMap(jsons, resultmap); Map store = (Map) njson.get("stockout_list"); store.put("sa_status", "已审核"); store.put("sa_statuscode", "AUDITED"); int id= Integer.valueOf(String.valueOf(baseDao.getFieldDataByCondition("dual", "sale_seq.nextval", "1=1"))); store.put("sa_id", id); List> grid = (List>) njson.get("details_list"); for (Map map : grid) { map.put("sd_said", id); map.put("sd_id", "saledetail_seq.nextval"); } int count= Integer.valueOf(String.valueOf(baseDao.getFieldDataByCondition("Sale", "count(1)", "sa_code=" + store.get("order_no")))); if (count >0) { // 重新添加提示限制信息 BaseUtil.showError(store.get("order_no") + "编号已存在"); } // 保存sale String formSql = SqlUtil.getInsertSqlByMap(store, "Sale"); baseDao.execute(formSql); // 保存saleDetail List gridSql = SqlUtil.getInsertSqlbyList(grid, "SaleDetail", "sd_id"); baseDao.execute(gridSql); //调用生成出货单方法 TurnProdIN(id); //过账生成的出货单 String pi_inoutno= String.valueOf(baseDao.getFieldDataByCondition("ProdInOut", "pi_inoutno", "pi_sourcecoe="+store.get("order_no"))); String res=null; baseDao.procedure("SP_GetCostPrice", new Object[] { "出货单", pi_inoutno }); res = baseDao.callProcedure("Sp_SplitProdOut", new Object[] { "出货单", pi_inoutno, "ADMIN" }); if (res != null && !res.trim().equals("")) { // 重新添加提示限制信息 BaseUtil.showError(res + " 出货单" + pi_inoutno + ",过账失败"); // BaseUtil.showError(res); } res = baseDao.callProcedure("Sp_CommitProdInout", new Object[] { "出货单", pi_inoutno, "ADMIN"}); if (res != null && !res.trim().equals("")) { BaseUtil.showError(res); } } /** * 销售订单形成对应得出货单 * * @param id * 单据类型id * */ @Override public void TurnProdIN(int id) { String code=baseDao.callProcedure("Sp_GetMaxNumber", new Object[] { "ProdInOut!Sale", 2 }); int pi_id= Integer.valueOf(String.valueOf(baseDao.getFieldDataByCondition("dual", "ProdInOut_seq.nextval", "1=1"))); String contactSql = "insert into ProdInOut (pi_id,pi_inoutno,pi_recordman,pi_operatorcode,pi_recorddate,pi_invostatus,pi_invostatuscode,pi_class,pi_cardid,pi_cardcode,pi_title,pi_status,pi_statuscode,pi_updatedate,pi_updateman,pi_receivecode,pi_receivename,pi_arcode,pi_arname,pi_currency,pi_rate,pi_sellercode,pi_sellername,pi_address,pi_remark,pi_cusaddresssid,pi_paymentcode,pi_cop,pi_departmentcode,pi_departmentname,pi_transport,pi_payment,pi_printstatus,pi_printstatuscode,pi_chargeamount,pi_sourcecoe) " + "select"+pi_id+","+code+",'admin','ADMIN',sysdate,'在录入','ENTERING','出货单',sa_custid,sa_custcode,sa_custname,'未过账','UNPOST',sysdate,'admin',sa_shcustcode,sa_shcustname,sa_apcustcode,sa_apcustname,sa_currency,sa_rate,sa_sellercode,sa_seller,sa_toplace,sa_remark,sa_cusaddresssid,sa_paymentscode,sa_cop,sa_departmentcode,sa_departmentname,sa_transport,sa_payments,'未打印','UNPRINT',sa_fare,sa_code from sale where sa_id="+id; baseDao.execute(contactSql); contactSql = "insert into ProdIODetail (pd_id,pd_piid,pd_orderdetno,pd_ordercode,pd_prodcode,pd_sendprice,pd_outqty,pd_beipinoutqty,pd_pocode,pd_piclass,pd_status,pd_auditstatus,pd_taxrate,pd_sdid,pd_remark,pd_custprodcode,pd_custprodspec,pd_discount,pd_inqty,pd_custproddetail,pd_purcprice,pd_commissionrate,pd_whcode,pd_whname) " + "select ProdIODetail_seq.nextval,"+pi_id+",sd_detno,sa_code,sd_prodcode,sd_price,sd_qty,sd_readyqty,sa_pocode,'出货单',0,'ENTERING',sd_taxrate,sd_id,sd_remark,sd_custprodcode,sd_prodcustcode,sd_discount,0,sd_custproddetail,sd_purcprice,sd_commissionrate,sd_whcode,sd_whcode from saledetail left join sale on sd_said=sa_id where sa_id="+id; baseDao.execute(contactSql); baseDao.execute("update Prodinout set (pi_whcode,pi_whname)=(select pd_whcode,pd_whname from ProdIODetail where pd_piid=" + pi_id + " and pd_pdno=1) where pi_id=" + pi_id + ""); baseDao.execute( "update ProdInOut set pi_address=(select cu_add1 from customer where pi_cardcode=cu_code) where pi_id=? and nvl(pi_address,' ')=' '", pi_id); baseDao.execute("update prodinout set pi_purposename=((select max(ca_person) from CustomerAddress left join customer on ca_cuid=cu_id where cu_code=pi_cardcode and ca_address=pi_address)) where pi_purposename is null and pi_id=" + pi_id); baseDao.execute("update prodinout set pi_expresscode=((select max(ca_phone) from CustomerAddress left join customer on ca_cuid=cu_id where cu_code=pi_cardcode and ca_address=pi_address)) where pi_expresscode is null and pi_id=" + pi_id); baseDao.execute("update prodinout set pi_fax=((select max(ca_fax) from CustomerAddress left join customer on ca_cuid=cu_id where cu_code=pi_cardcode and ca_address=pi_address)) where pi_fax is null and pi_id=" + pi_id); baseDao.execute( "update ProdIODetail set pd_netprice=ROUND(pd_sendprice/(1 + pd_taxrate/ 100),6), pd_taxtotal=round(pd_sendprice*pd_outqty/(1+pd_taxrate/100),2), pd_ordertotal=round(pd_outqty*pd_sendprice,2) where pd_piid=?", pi_id); baseDao.execute( "update saleDetail set sdyqty=sd_qty where sd_said=?", id); } /** * 销售退货单云顶数据中心传UAS并过账接口 * * @param Store * 销售退货单主从表Json数据 Store * */ @Override public void SaleReturn(String Store) { //销售退货单插入 com.alibaba.fastjson.JSONObject json = JSON.parseObject(Store); String jsons =json.toString(); List mappingList = baseDao.getFieldsDatasByCondition("xxx", new String[] { "TD_FROMFIELD", "TD_TOFIELD" }, "qu_id=1"); Map resultmap = new HashMap(); for(Object[] obj : mappingList){ resultmap.put(String.valueOf(obj[0]), String.valueOf(obj[1])); } Map njson=BaseUtil.jsonToMap(jsons, resultmap); Map store = (Map) njson.get("date"); store.put("pi_invostatus", "已审核"); store.put("pi_invostatuscode", "AUDITED"); int id= Integer.valueOf(String.valueOf(baseDao.getFieldDataByCondition("dual", "ProdInOut_seq.nextval", "1=1"))); store.put("pi_id", id); List> grid = (List>) njson.get("refund_orders_list"); for (Map map : grid) { map.put("pd_piid", id); map.put("pd_id", "ProdIODetail_seq.nextval"); } int count= Integer.valueOf(String.valueOf(baseDao.getFieldDataByCondition("ProdInOut", "count(1)", "pi_inoutno=" + store.get("refund_no")+"and pi_class='销售退货单'"))); if (count >0) { // 重新添加提示限制信息 BaseUtil.showError(store.get("refund_no") + "编号已存在"); } // 保存ProdInOut String formSql = SqlUtil.getInsertSqlByMap(store, "ProdInOut"); baseDao.execute(formSql); // 保存ProdIODetail List gridSql = SqlUtil.getInsertSqlbyList(grid, "ProdIODetail", "pd_id"); baseDao.execute(gridSql); //过账生成的退货单 String res=null; baseDao.procedure("SP_GetCostPrice", new Object[] { "出货单", store.get("refund_no") }); res = baseDao.callProcedure("Sp_SplitProdOut", new Object[] { "销售退货单", store.get("refund_no"), "ADMIN" }); if (res != null && !res.trim().equals("")) { // 重新添加提示限制信息 BaseUtil.showError(res + " 销售退货单" + store.get("refund_no") + ",过账失败"); // BaseUtil.showError(res); } res = baseDao.callProcedure("Sp_CommitProdInout", new Object[] { "销售退货单", store.get("refund_no"), "ADMIN"}); if (res != null && !res.trim().equals("")) { BaseUtil.showError(res); } } /** * 退货单云顶数据中心传UAS反过账接口 * * @param Store * 单据编号,类型等Json数据 Store * */ @Override public void SaleReturnDelete(String Store) { com.alibaba.fastjson.JSONObject json = JSON.parseObject(Store); String Code=json.getString("refund_no").toString(); String Piclass="销售退货单"; int piid= Integer.valueOf(String.valueOf(baseDao.getFieldDataByCondition("ProdInOut", "pi_id", "pi_inoutno=" + Code+"and pi_class="+Piclass))); String res=null; res= baseDao.callProcedure("Sp_UnCommitProdInout", Piclass,Code); if (res != null && !res.trim().equals("")) { BaseUtil.showError(res); } baseDao.updateByCondition("ProdInOut", "pi_statuscode='UNPOST',pi_status='未过账',pi_inoutman=null,pi_date1=null", "pi_id=" + piid); //删除反过账销售退货单 baseDao.deleteByCondition("ProdIODetail", "pd_piid="+piid); baseDao.deleteByCondition("ProdInOut", "pi_id="+piid); } }