|
|
@@ -14,6 +14,7 @@ import restcontroller.R;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
|
|
|
@API(title = "配件核销单明细")
|
|
|
public class tpartreimbursementdetail extends Controller {
|
|
|
@@ -26,14 +27,59 @@ public class tpartreimbursementdetail extends Controller {
|
|
|
public String queryAgents() throws YosException {
|
|
|
QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_tpartreimbursement");
|
|
|
querySQL.setTableAlias("t1");
|
|
|
- querySQL.addJoinTable(JOINTYPE.inner, "sa_agents", "t2", "t1.siteid = t2.siteid and t1.sys_enterpriseid = t2.sys_enterpriseid", "agentnum","signingstate","delivery");
|
|
|
- querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t3", "t1.siteid = t3.siteid and t1.sys_enterpriseid = t3.sys_enterpriseid", "sys_enterpriseid",
|
|
|
- "phonenumber", "contact", "enterprisename","abbreviation");
|
|
|
+ querySQL.addJoinTable(JOINTYPE.inner, "sa_agents", "t2", "t1.siteid = t2.siteid and t1.sys_enterpriseid = t2.sys_enterpriseid", "agentnum");
|
|
|
+ querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t3", "t1.siteid = t3.siteid and t1.sys_enterpriseid = t3.sys_enterpriseid", "sys_enterpriseid", "enterprisename","abbreviation");
|
|
|
+ querySQL.addJoinTable(JOINTYPE.left, "(select GROUP_CONCAT(t1.areanum) areanum,GROUP_CONCAT(t1.areaname) areaname,GROUP_CONCAT(t1.areafullname) areafullname,t2.sys_enterpriseid,t2.siteid from sa_salearea t1 inner join sys_enterprise_tradefield t2 on t1.sa_saleareaid=t2.sa_saleareaid group by t2.sys_enterpriseid,t2.siteid)", "t4", "t4.sys_enterpriseid=t1.sys_enterpriseid and t4.siteid = t1.siteid",
|
|
|
+ "areanum","areaname","areafullname");
|
|
|
querySQL.setSiteid(siteid);
|
|
|
querySQL.setWhere("t2.status='1'");
|
|
|
querySQL.setWhere("t1.status='审核' and exists(select * from sa_tpartreimbursementdetail where sa_tpartreimbursementid=t1.sa_tpartreimbursementid and isverified=0)");
|
|
|
querySQL.setPage(pageSize, pageNumber);
|
|
|
Rows rows = querySQL.query();
|
|
|
+ ArrayList sys_enterpriseidList = rows.toArrayList("sys_enterpriseid");
|
|
|
+ sys_enterpriseidList.add(0);
|
|
|
+
|
|
|
+ Rows sumamountRows_whx= dbConnect.runSqlQuery("select t2.sys_enterpriseid,sum(t3.price*t1.checkqty) amount from sa_tpartreimbursementdetail t1 " +
|
|
|
+ "inner join sa_tpartreimbursement t2 on t1.sa_tpartreimbursementid=t2.sa_tpartreimbursementid and t1.siteid=t2.siteid " +
|
|
|
+ "inner join sa_orderitems t3 on t3.sa_orderitemsid=t1.sa_orderitemsid and t3.siteid=t1.siteid " +
|
|
|
+ " where t2.siteid='" + siteid + "' and t2.status='审核' and t1.isverified=0 and t2.sys_enterpriseid in" + sys_enterpriseidList.toString().replace("[", "(").replace("]", ")") + " and DATE_FORMAT( t2.checkdate, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' ) group by t2.sys_enterpriseid");
|
|
|
+ RowsMap sumamountRowsMap_whx=sumamountRows_whx.toRowsMap("sys_enterpriseid");
|
|
|
+
|
|
|
+
|
|
|
+ Rows sumamountRows= dbConnect.runSqlQuery("select min(t1.payamount) payamount, min(t1.paydiscountamount) paydiscountamount,t1.st_stockbillid,t1.sys_enterpriseid from st_stockbill t1 " +
|
|
|
+ "inner join st_stockbill_items t2 on t1.st_stockbillid=t2.st_stockbillid and t1.siteid=t2.siteid " +
|
|
|
+ "inner join sa_order t3 on t2.sa_orderid=t3.sa_orderid and t2.siteid=t3.siteid" +
|
|
|
+ " where t1.siteid='" + siteid + "' and t1.status='审核' and t1.rb=1 and t1.type='销售出库' and t3.type='配件订单' and t3.sys_enterpriseid in" + sys_enterpriseidList.toString().replace("[", "(").replace("]", ")") + " and DATE_FORMAT( t1.checkdate, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' ) group by t1.st_stockbillid,t1.sys_enterpriseid");
|
|
|
+ RowsMap sumamountRowsMap=sumamountRows.toRowsMap("sys_enterpriseid");
|
|
|
+
|
|
|
+ QuerySQL querySQL_yhx = SQLFactory.createQuerySQL(this, "st_stockbill","sys_enterpriseid","payamount","paydiscountamount");
|
|
|
+ querySQL_yhx.setTableAlias("t1");
|
|
|
+ querySQL_yhx.setSiteid(siteid);
|
|
|
+ querySQL_yhx.setWhere("t1.sys_enterpriseid", rows.toArrayList("sys_enterpriseid"));
|
|
|
+ querySQL_yhx.setWhere("t1.sourceobject='tpartreimbursement' and t1.status='审核' and t1.type='销售出库' and DATE_FORMAT(t1.checkdate, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )");
|
|
|
+ Rows rows_yhx = querySQL_yhx .query();
|
|
|
+ RowsMap rowsMap_yhx=rows_yhx.toRowsMap("sys_enterpriseid");
|
|
|
+
|
|
|
+ for(Row row : rows){
|
|
|
+ BigDecimal amkount_whx=BigDecimal.ZERO;
|
|
|
+ BigDecimal amkount_yhx=BigDecimal.ZERO;
|
|
|
+ BigDecimal amkount_all=BigDecimal.ZERO;
|
|
|
+ if(sumamountRowsMap_whx.containsKey(row.getString("sys_enterpriseid"))){
|
|
|
+ amkount_whx=sumamountRowsMap_whx.get(row.getString("sys_enterpriseid")).get(0).getBigDecimal("amount");
|
|
|
+ }
|
|
|
+ if(sumamountRowsMap.containsKey(row.getString("sys_enterpriseid"))){
|
|
|
+ amkount_all=sumamountRowsMap.get(row.getString("sys_enterpriseid")).sum("payamount").add(sumamountRowsMap.get(row.getString("sys_enterpriseid")).sum("paydiscountamount"));
|
|
|
+ }
|
|
|
+ if(rowsMap_yhx.containsKey(row.getString("sys_enterpriseid"))){
|
|
|
+ amkount_yhx=rowsMap_yhx.get(row.getString("sys_enterpriseid")).sum("payamount").add(sumamountRowsMap.get(row.getString("sys_enterpriseid")).sum("paydiscountamount"));
|
|
|
+ }
|
|
|
+ row.put("amkount_whx",amkount_whx);
|
|
|
+ row.put("amkount_khx",amkount_all.subtract(amkount_yhx));
|
|
|
+ }
|
|
|
+
|
|
|
+ HashMap<String,BigDecimal> map =new HashMap<>();
|
|
|
+ map.put("amount",sumamountRows.sum("payamount").subtract(rows.sum("payamount")));
|
|
|
+ map.put("discountamount",sumamountRows.sum("paydiscountamount").subtract(rows.sum("paydiscountamount")));
|
|
|
|
|
|
return getSucReturnObject().setData(rows).toString();
|
|
|
}
|