SELECT *
FROM (SELECT t1.*,
IFNULL(t1.amount, 0) * IFNULL(t1.rate, 0) AS amountCNY,
CASE
WHEN (IFNULL(t1.amount, 0) * IFNULL(t1.rate, 0) - t1.sumClaimMoney) <= 0 THEN
20
WHEN t1.sumClaimMoney = 0 THEN
0
ELSE 10
END AS refundStatusNew,
(t1.amount - t1.settledAmount) as unsettledAmount,
(t1.sumClaimMoney - t1.invoiceAmount) as unInvoiceAmount,
(CASE WHEN t1.sumClaimMoney < t1.outboundAmount THEN 1 ELSE 0 END) AS isSpecialOutbound
FROM (SELECT t1.*,
c.name customerName,
(SELECT IFNULL(SUM(cc.contract_money), 0)
FROM claim_contract cc
JOIN claim cl ON cc.claim_id = cl.id
WHERE cl.confirm_status = 1
and cc.contract_id = t1.id) AS sumClaimMoney,
po.produce_status,
IFNULL(t3.quantity, 0) AS waitStockQuantity,
IFNULL(t3.receipt_quantity, 0) AS receiptStockQuantity,
IFNULL(
(SELECT sum(pod.finish_quantity * cp.price)
FROM contract_product cp
JOIN production_order_detail pod ON pod.contract_detail_id = cp.id
WHERE cp.contract_id = t1.id)
, 0) AS settledAmount,
po.delivery_period as prodDeliveryPeriod,
IFNULL(t4.deliverQuantity, 0) as deliverQuantity,
IFNULL(t4.notDeliverQuantity, 0) as notDeliverQuantity,
(SELECT IFNULL(sum(iacd.amount), 0)
FROM invoice_apply_contract_detail iacd
JOIN invoice_apply ia ON iacd.invoice_apply_id = ia.id
WHERE ia.`status` IN (10, 30, 60)
AND iacd.contract_id = c.id) AS invoiceAmount,
IFNULL(cor_1.outbound_amount, 0) AS outboundAmount
FROM contract t1
left join customer c on t1.buy_corporation_id = c.id
LEFT JOIN production_order po ON po.contract_id = t1.id
LEFT JOIN (SELECT pod.contract_id,
IFNULL(sum(swd.quantity), 0) AS quantity,
IFNULL(sum(swd.receipt_quantity), 0) AS receipt_quantity
FROM production_order_detail pod
JOIN stock_wait_details swd ON swd.prod_task_id = pod.id
GROUP BY pod.contract_id) t3 ON t3.contract_id = t1.id
LEFT JOIN (SELECT cp.contract_id,
IFNULL(sum(cp.quantity), 0) AS quantity,
IFNULL(t2.deliverQuantity, 0) AS deliverQuantity,
IFNULL(sum(cp.quantity), 0) - IFNULL(t2.deliverQuantity, 0) AS notDeliverQuantity
FROM contract_product cp
LEFT JOIN (SELECT cor.contract_id,
IFNULL(sum(cor.quantity), 0) AS deliverQuantity
FROM contract_outbound_records cor
JOIN contract_outbound_info coi ON cor.record_id = coi.id
WHERE coi.`status` IN (30, 60)
GROUP BY cor.contract_id) t2
ON cp.contract_id = t2.contract_id
GROUP BY cp.contract_id) t4 ON t4.contract_id = t1.id
left join (SELECT cor.contract_id,
sum(cor.price * cor.truck_quantity) AS outbound_amount
FROM contract_outbound_records cor
GROUP BY cor.contract_id) cor_1 on cor_1.contract_id = t1.id) t1
GROUP BY t1.id) t1
${ew.customSqlSegment}
${ew.customSqlSegment}
SELECT IFNULL(SUM(t1.amountCNY), 0) AS sumAmount,
IFNULL(SUM(sumClaimMoney), 0) AS sumClaimMoney,
count(1) AS `count`,
IFNULL(GROUP_CONCAT(DISTINCT t1.buy_corporation_id ), "") AS customerList
FROM (SELECT t1.*,
IFNULL(t1.amount, 0) * IFNULL(t1.rate, 0) AS amountCNY,
CASE
WHEN (IFNULL(t1.amount, 0) * IFNULL(t1.rate, 0) - t1.sumClaimMoney) <= 0 THEN
20
WHEN t1.sumClaimMoney = 0 THEN
0
ELSE 10
END AS refundStatusNew
FROM (SELECT t1.*,
(SELECT IFNULL(SUM(IFNULL(cc.money, 0) * IFNULL(arw.rate, 1)), 0)
FROM claim_contract cc
left join claim c on cc.claim_id = c.id
LEFT JOIN account_running_water arw on c.business_id = arw.id
WHERE cc.contract_id = t1.id) AS sumClaimMoney,
c.name customerName,
us.nick_name salesmanName,
us.user_id salesmanId
FROM contract t1
left join customer c on t1.buy_corporation_id = c.id
left join sys_user us on c.user_id = us.user_id) t1) t1
${ew.customSqlSegment}
SELECT t1.*,
if(t1.amount < t1.sumPurchaseContractMoney, 1, 0) AS isLoss
from (SELECT t1.id AS contractId,
us1.nick_name userName,
t1.*,
(select IFNULL(SUM(amount), 0)
from ehsd_purchase
where data_resource_id = t1.id
and `status` in (10, 30, 60)) as sumPurchaseContractMoney
FROM contract t1
LEFT JOIN customer cu
on t1.buy_corporation_id = cu.id and cu.del_flag = 0
LEFT JOIN sys_user us1
ON cu.user_id = us1.user_id and us1.del_flag = 0) t1 ${ew.customSqlSegment}
SELECT t1.*,
if(t1.amount < t1.sumPurchaseContractMoney, 1, 0) AS isLoss
FROM (SELECT (SELECT GROUP_CONCAT(id) FROM contract_product WHERE contract_id = t1.id) AS contractProductIds,
t1.id AS contractId,
t1.`code`,
t1.buy_corporation_id,
us1.nick_name userName,
t1.amount,
t1.currency,
t1.currency_rate_json,
t1.rate AS rate,
t1.create_time,
t2.id,
t2.trailer_fee_currency,
t2.trailer_fee,
t2.customs_fee_currency,
t2.customs_fee,
t2.agency_fee_currency,
t2.agency_fee,
t2.port_mixed_fee_currency,
t2.port_mixed_fee,
t2.inspection_red_pack_currency,
t2.inspection_red_pack,
t2.commission_currency,
t2.commission,
t2.other_currency,
t2.other,
IFNULL(t1.budget_money, 0) AS budgetMoney,
cu.NAME customerName,
t1.is_settled,
t1.is_change,
t1.status,
t1.is_show,
(SELECT IFNULL(SUM(amount), 0)
FROM ehsd_purchase
WHERE data_resource_id = t1.id
AND `status` IN (10, 30, 60)) AS sumPurchaseContractMoney
FROM contract t1
LEFT JOIN contract_budget t2 ON t1.id = t2.contract_id
LEFT JOIN customer cu ON t1.buy_corporation_id = cu.id
AND cu.del_flag = 0
LEFT JOIN sys_user us1 ON cu.user_id = us1.user_id
AND us1.del_flag = 0) t1
${ew.customSqlSegment}
SELECT t1.*,
if(t1.amount < t1.sumPurchaseContractMoney, 1, 0) AS isLoss
FROM (SELECT t1.id AS contractId,
t1.amount,
t1.currency,
t1.currency_rate_json,
t1.rate AS rate,
t2.*,
t1.is_settled,
t1.is_change,
t1.status,
t1.is_show,
us1.nick_name,
t1.code,
(SELECT IFNULL(SUM(amount), 0)
FROM ehsd_purchase
WHERE data_resource_id = t1.id
AND `status` IN (10, 30, 60)) AS sumPurchaseContractMoney
FROM contract t1
LEFT JOIN contract_budget t2 ON t1.id = t2.contract_id
LEFT JOIN customer cu on t1.buy_corporation_id = cu.id and cu.del_flag = 0
LEFT JOIN sys_user us1 ON cu.user_id = us1.user_id and us1.del_flag = 0) t1
${ew.customSqlSegment}
SELECT
*
FROM
(
SELECT
t1.*,
t2.quantity AS cpQuantity,
( SELECT IFNULL( SUM( pd.pack_quantity * pdd.quantity ), 0 ) FROM pack_detail_product pdd LEFT JOIN pack_detail
pd ON pdd.pack_detail_id = pd.id WHERE pdd.contract_product_id = t2.id ) AS sumPackQuantity
FROM
contract t1
LEFT JOIN contract_product t2 ON t1.id = t2.contract_id
join production_order po on po.contract_id = t1.id and po.produce_status = 2
buy_corporation_id = #{customerId}
) t1
WHERE t1.sumPackQuantity < t1.cpQuantity
AND t1.`status`=30
GROUP BY t1.id
SELECT
SUM( amount ) AS sumAmount,
SUM( contractCount ) AS contractCount
FROM
(
SELECT
SUM( amount * rate ) amount,
count(*) contractCount
FROM
contract
WHERE
buy_corporation_id = #{id}
AND STATUS BETWEEN 0
AND 87
AND is_show != 1
AND is_change = 0
AND del_flag = 0
GROUP BY
buy_corporation_id UNION ALL
SELECT
SUM( amount * rate ) amount,
count(*) contractCount
FROM
sample
WHERE
buy_corporation_id = #{id}
AND STATUS BETWEEN 0
AND 87
AND is_show != 1
AND is_change = 0
AND del_flag = 0
GROUP BY
buy_corporation_id
) t1
SELECT
*
FROM
(
SELECT
currency,
sell_corporation_id,
id,
"外销合同" AS type,
create_time,
create_user,
`code`,
buy_corporation_id,
advance_ratio,
amount,
rate,
amount * rate AS amountCNY,
(SELECT IFNULL(SUM(IFNULL(cc.money, 0) * IFNULL(arw.rate, 1)), 0)
FROM claim_contract cc
LEFT JOIN claim c ON cc.claim_id = c.id
LEFT JOIN account_running_water arw ON c.business_id = arw.id
WHERE cc.contract_id = t1.id) AS sumClaimMoney
FROM contract t1
WHERE buy_corporation_id = #{id}
AND STATUS BETWEEN 0
AND 87
AND is_show != 1
AND is_change = 0
AND del_flag = 0 UNION ALL
SELECT
currency,
sell_corporation_id,
id,
"样品单" AS type,
create_time,
create_user,
`code`,
buy_corporation_id, advance_ratio, amount, rate, amount * rate AS amountCNY, (
SELECT
IFNULL( SUM ( IFNULL( cc.money, 0 ) * IFNULL( arw.rate, 1 )), 0 )
FROM
claim_contract cc
LEFT JOIN claim c ON cc.claim_id = c.id
LEFT JOIN account_running_water arw ON c.business_id = arw.id
WHERE
cc.contract_id = t1.id
) AS sumClaimMoney
FROM
sample t1
WHERE
buy_corporation_id = #{id}
AND STATUS BETWEEN 0
AND 87
AND is_show != 1
AND is_change = 0
AND del_flag = 0
) t1
SELECT
SUM(amount) amount,
DATE_FORMAT(create_time,'%Y-%m') time
FROM
contract
WHERE
buy_corporation_id = #{id}
and (DATE_FORMAT(create_time,'%Y-%m') >= #{beginTime} and #{endTime} >= DATE_FORMAT(create_time,'%Y-%m'))
GROUP BY
TIME
SELECT COUNT(*) count,
ifnull(c.`status`,-1) status,
ifnull(DATE_FORMAT(sq.create_time,'%Y-%m'),-1) time
FROM
customer c
left JOIN contract sq
ON sq.buy_corporation_id = c.id
${ew.customSqlSegment}
SELECT sum(cc.amount) amount,
COUNT(cc.buy_country_id) count,
ai.name countryName
FROM
contract cc
LEFT JOIN customize_area ai
ON cc.buy_country_id = ai.id
${ew.customSqlSegment}
SELECT sum(cc.amount) amount,
bc.name corporationName
FROM contract cc
LEFT JOIN customer bc ON cc.buy_corporation_id = bc.id
${ew.customSqlSegment}
SELECT SUM(cc.amount) amount,
su.nick_name userName
FROM contract cc
LEFT JOIN sys_user su ON cc.create_user = su.user_id
${ew.customSqlSegment}
SELECT SUM(cp.amount) amount,
pi.name productName
FROM contract_product cp
LEFT JOIN product_info pi ON cp.product_id = pi.id
${ew.customSqlSegment}
SELECT SUM(cp.quantity) quantity,
pi.name productName
FROM contract_product cp
LEFT JOIN product_info pi ON cp.product_id = pi.id
${ew.customSqlSegment}
SELECT arw.id,
arw.create_time,
ap.type,
arw.currency,
pad.money amount,
pad.remark remarks,
am.`name` accountManagementName,
am.account_opening accountManagementOpening,
arw.`name`,
arw.status
FROM contract c
JOIN purchase p ON p.data_resource_id = c.id AND p.del_flag = 0
JOIN pay_detail `pad` ON pad.purchase_id = p.id AND pad.del_flag = 0
JOIN pay pa ON pad.pay_id = pa.id AND pa.del_flag = 0
JOIN account_payment ap ON ap.business_id = pa.id AND ap.del_flag = 0
JOIN account_running_water arw ON arw.business_id = ap.id AND arw.del_flag = 0
LEFT JOIN account_management am
ON arw.account_management_id = am.id AND am.del_flag = 0
WHERE c.id = #{contractId}
UNION ALL
SELECT arw.id,
arw.create_time,
ap.type,
arw.currency,
arfd.amount,
arfd.remarks,
am.`name` accountManagementName,
am.account_opening accountManagementOpening,
arw.`name`,
arw.status
FROM contract c
JOIN account_request_funds_detail arfd
ON arfd.contract_id = c.id AND arfd.del_flag = 0
JOIN account_payment ap
ON ap.business_id = arfd.account_request_funds_id AND ap.del_flag = 0
JOIN account_running_water arw ON arw.business_id = ap.id AND arw.del_flag = 0
LEFT JOIN account_management am
ON arw.account_management_id = am.id AND am.del_flag = 0
WHERE c.id = #{contractId}
group by arfd.id
UNION ALL
SELECT arw.id,
arw.create_time,
30 type,
arw.currency,
clc.money,
arw.remarks,
am.`name` accountManagementName,
am.account_opening accountManagementOpening,
arw.`name`,
arw.status
FROM account_running_water arw
JOIN claim cl ON cl.business_id = arw.id
JOIN claim_contract clc ON clc.claim_id = cl.id
JOIN contract c ON clc.contract_id = c.id
LEFT JOIN account_management am
ON arw.account_management_id = am.id AND am.del_flag = 0
WHERE arw.del_flag = 0
AND c.id = #{contractId}
SELECT
*
FROM
(
SELECT
t1.id,
t1.sell_corporation_id,
t1.contract_type,
1 AS dataType,
t1.`code`,
t1.buy_corporation_id,
t1.version,
t1.amount,
t1.create_user,
t1.create_time,
t1.refund_status,
t1.`status`,
(SELECT IFNULL(SUM(IFNULL(cc.money, 0) * IFNULL(arw.rate, 1)), 0)
FROM claim_contract cc
LEFT JOIN claim c ON cc.claim_id = c.id
LEFT JOIN account_running_water arw ON c.business_id = arw.id
WHERE cc.contract_id = t1.id) AS sumClaimMoney,
(SELECT IFNULL(SUM(cc.contract_money), 0)
FROM claim_contract cc
LEFT JOIN claim c ON cc.claim_id = c.id
LEFT JOIN account_running_water arw ON c.business_id = arw.id
WHERE cc.contract_id = t1.id) AS sumContractClaimMoney,
t1.currency
FROM contract t1
WHERE t1.`status` >= 30
AND t1.`status` < 88
AND t1.is_show != 1
AND t1.is_change = 0
UNION
SELECT
t1.id, t1.sell_corporation_id, 3 AS contract_type, 2 AS dataType, t1.`code`, t1.buy_corporation_id, t1.versions AS version, t1.amount, t1.create_user, t1.create_time, IF( sumClaimMoney >= t1.amount, 20, IF ( sumClaimMoney != 0, 10, 0 ) ) AS refund_status, t1.`status`, t1.sumClaimMoney, t1.sumContractClaimMoney, t1.currency
FROM
(
SELECT
t1.*, (
SELECT
IFNULL( SUM ( IFNULL( cc.money, 0 ) * IFNULL( arw.rate, 1 )), 0 )
FROM
claim_contract cc
LEFT JOIN claim c ON cc.claim_id = c.id
LEFT JOIN account_running_water arw ON c.business_id = arw.id
WHERE
cc.contract_id = t1.id
) AS sumClaimMoney, (
SELECT
IFNULL( SUM (cc.contract_money), 0 )
FROM
claim_contract cc
LEFT JOIN claim c ON cc.claim_id = c.id
LEFT JOIN account_running_water arw ON c.business_id = arw.id
WHERE
cc.contract_id = t1.id
) AS sumContractClaimMoney
FROM
sample t1
WHERE
t1.`status` >= 30
AND t1.`status` < 88
AND t1.is_show != 1
AND t1.is_change = 0
) AS t1) t1
${ew.customSqlSegment}
update contract
id = #{id},
status = #{status},
is_change = #{isChange},
is_show = #{isShow},
old_contract_id = #{oldContractId},
approved_date = DATE_FORMAT(NOW(),'%Y-%m-%d %H:%m:%s'),
update_time = sysdate()
where id = #{upId}
SELECT * FROM (SELECT
t1.*,
CASE
WHEN t1.purchaseAmountCNY < t1.amountCNY AND t1.sumClaimMoney < t1.amountCNY THEN 10
WHEN t1.purchaseAmountCNY < t1.amountCNY AND t1.sumClaimMoney >= t1.amountCNY THEN 20
WHEN t1.purchaseAmountCNY >= t1.amountCNY AND t1.sumClaimMoney < t1.amountCNY THEN 30
WHEN t1.purchaseAmountCNY >= t1.amountCNY AND t1.sumClaimMoney >= t1.amountCNY THEN 40
ELSE 88
END AS orderStatus
FROM
(
SELECT
t1.*,
IFNULL( t1.amount * t1.rate, 0 ) AS amountCNY,
(SELECT count(1) FROM ehsd_purchase p LEFT JOIN ehsd_documentary pd ON p.id = pd.business_id WHERE p.data_resource_id = t1.id AND pd.documentary_type = #{documentaryType}) AS documentaryCount,
IFNULL(t1.advance_ratio,0)*IFNULL(t1.amount,0)/100 AS earnest,
( SELECT create_time FROM claim_contract WHERE contract_id = t1.id ORDER BY create_time ASC LIMIT 1) AS claimTime,
( SELECT count( 1 ) FROM ehsd_purchase WHERE `status` = 30 AND data_resource_id = t1.id ) AS purchaseCount,
( SELECT IFNULL(SUM(amount*rate),0) FROM ehsd_purchase WHERE `status` = 30 AND data_resource_id = t1.id) AS
purchaseAmountCNY,
( SELECT count( 1 ) FROM pack_detail WHERE FIND_IN_SET( contract_ids, t1.id ) AND shipment_status = 1 ) AS
packCount,
(
SELECT
IFNULL( SUM( IFNULL( cc.money, 0 ) * IFNULL( arw.rate, 1 )), 0 )
FROM
claim_contract cc
LEFT JOIN claim c ON cc.claim_id = c.id
LEFT JOIN account_running_water arw ON c.business_id = arw.id
WHERE
cc.contract_id = t1.id
) AS sumClaimMoney,
cus.nick_name as salesmanName
FROM
contract t1
left join customer cu on t1.buy_corporation_id = cu.id
left join sys_user cus on cu.user_id = cus.user_id
WHERE t1.`status` = 30
) t1
) t1
${ew.customSqlSegment}
SELECT cp.product_id,
count(DISTINCT (cp.contract_id)) AS orderCount,
IFNULL(sum(cp.quantity), 0) AS saleQuantity,
IFNULL(sum(cp.price * cp.quantity * c.rate), 0) AS saleAmount,
IFNULL(min(cp.price * c.rate), 0) AS saleMinPrice,
IFNULL(max(cp.price * c.rate), 0) AS saleMaxPrice
FROM contract_product cp
LEFT JOIN contract c ON cp.contract_id = c.id
${ew.customSqlSegment}
SELECT epp.product_id,
IFNULL(sum(epp.quantity), 0) AS purchasesQuantity,
IFNULL(sum(epp.price * epp.quantity * ep.rate), 0) AS purchasesAmount,
IFNULL(min(epp.price * ep.rate), 0) AS purchasesMinPrice,
IFNULL(max(epp.price * ep.rate), 0) AS purchasesMaxPrice
FROM ehsd_purchase_product epp
LEFT JOIN ehsd_purchase ep ON epp.purchase_id = ep.id
${ew.customSqlSegment}
SELECT cp.*,
c.currency,
c.code contractCode,
c.is_settled
FROM contract_product cp
LEFT JOIN contract c ON cp.contract_id = c.id
${ew.customSqlSegment}
SELECT COUNT(1)
FROM production_order po
${ew.customSqlSegment}
--生产订单
DELETE
FROM production_order
WHERE contract_id = #{contractId};
--生产任务
DELETE
FROM production_order_detail
WHERE contract_id = #{contractId};
--备料
DELETE
FROM material_preparation
WHERE contract_id = #{contractId};
UPDATE production_order
SET confirm_status = #{confirmStatus}
WHERE id = #{id}
UPDATE production_order
SET produce_status = #{produceStatus}
WHERE contract_id = #{contractId}
UPDATE production_order_detail
SET produce_status = #{produceStatus}
WHERE contract_id = #{contractId}
SELECT c.*,
IFNULL(sum(cc.contract_money), 0) as sumClaimMoney,
(SELECT IFNULL(sum(swd.receipt_quantity * cp.price), 0)
FROM contract_product cp
LEFT JOIN stock_wait_details swd ON swd.contract_detail_id = cp.id
WHERE cp.contract_id = c.id) AS shipmentAmount
FROM contract c
LEFT JOIN claim_contract cc ON cc.contract_id = c.id
WHERE c.id = #{id}