zhouli 5 months ago
parent
commit
a8bc9111d8

+ 5 - 5
kd-service/kd-scientific/src/main/java/org/sky/scientific/controller/CostController.java

@@ -22,6 +22,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.List;
 
 @RestController
@@ -58,18 +59,17 @@ public class CostController {
 		List<JSONObject> list = xmCostDetailsMapper.xmysygjqst(SecureUtil.getTenantId(), year, currentYear);
 		for (JSONObject obj : list) {
 
-			BigDecimal cost = obj.getBigDecimal("cost").multiply(BigDecimal.valueOf(0.0001));
+			BigDecimal cost = obj.getBigDecimal("cost").multiply(BigDecimal.valueOf(0.0001).setScale(4, RoundingMode.HALF_UP));
 			obj.put("cost", cost);
 
 			List<JSONObject> XMYSZEMX = JSONObject.parseArray(obj.getString("XMYSZEMX"), JSONObject.class);
 
-			double total = 0;
+			BigDecimal total = BigDecimal.ZERO;
 			if (currentYear) {
-				total = XMYSZEMX.stream().filter(t -> Func.equals(t.getString("year"), year)).mapToDouble(t -> t.getDouble("amount")).sum();
+				total = XMYSZEMX.stream().filter(t -> Func.equals(t.getString("year"), year)).map(item -> item.getBigDecimal("amount")).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(4, RoundingMode.UP);
 			} else {
-				total = XMYSZEMX.stream().mapToDouble(t -> t.getDouble("amount")).sum();
+				total = XMYSZEMX.stream().map(item -> item.getBigDecimal("amount")).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(4, RoundingMode.UP);
 			}
-
 			obj.remove("XMYSZEMX");
 			obj.put("xmys", total);
 		}

+ 8 - 3
kd-service/kd-scientific/src/main/java/org/sky/scientific/mapper/XmCostDetailsMapper.xml

@@ -292,11 +292,16 @@
     <select id="xmysygjqst" resultType="com.alibaba.fastjson.JSONObject">
         SELECT
             id,
-            COALESCE(get_xm_info(xm.id,'XMMC',null),XMMC) AS XMMC,
-            (SELECT IFNULL(sum(amount), 0) FROM kd_xm_cost_details kxcd WHERE kxcd.xm_id = xm.id <if test="currentYear==1">and DATE_FORMAT(record_date,'%Y') = #{year}</if> and kxcd.tenant_id = #{tenantId}) as cost,
+            <if test="currentYear==1">COALESCE(get_xm_info(xm.id,'XMMC',#{year}),XMMC) AS XMMC,</if>
+            <if test="currentYear==0">COALESCE(get_xm_info(xm.id,'XMMC',null),XMMC) AS XMMC,</if>
+            (
+                SELECT IFNULL(sum(amount), 0) FROM kd_xm_cost_details kxcd WHERE kxcd.xm_id = xm.id
+                <if test="currentYear==1">and DATE_FORMAT(record_date,'%Y') = #{year}</if>
+                and kxcd.tenant_id = #{tenantId}
+            ) as cost,
             COALESCE(get_xm_info(xm.id,'XMYSZEMX', null),XMYSZEMX) AS XMYSZEMX
         FROM kd_xm xm
-        WHERE xm.tenant_id = #{tenantId}
+        WHERE xm.tenant_id = #{tenantId} and xm.status != 0
         and #{year} between DATE_FORMAT(XMKSSJ, '%Y') and DATE_FORMAT(COALESCE(get_xm_info(xm.id,'XMJSSJ',null),XMJSSJ), '%Y')
     </select>
 </mapper>