|
|
@@ -502,6 +502,7 @@ public class LedgerCombinedImportServiceImpl implements ILedgerCombinedImportSer
|
|
502
|
502
|
|
|
503
|
503
|
/** 14. 请、休假记录表(特殊)→ ledger_leave_special
|
|
504
|
504
|
* R2: 姓名(0) 班组(1) 时间(起)(2) 时间(止)(3) 休假类别(4) 天数/时长(5)
|
|
|
505
|
+ * 天数/时长列可能是纯数字(天)或"X小时"格式;小时值按8小时/天换算成天数
|
|
505
|
506
|
*/
|
|
506
|
507
|
private int doLeaveSpecial(Sheet sheet, String username) {
|
|
507
|
508
|
List<LedgerLeaveSpecial> list = new ArrayList<>();
|
|
|
@@ -512,7 +513,7 @@ public class LedgerCombinedImportServiceImpl implements ILedgerCombinedImportSer
|
|
512
|
513
|
o.setLeaveType(str(c, 4));
|
|
513
|
514
|
o.setStartDate(date(c, 2));
|
|
514
|
515
|
o.setEndDate(date(c, 3));
|
|
515
|
|
- o.setDays(decimal(c, 5));
|
|
|
516
|
+ o.setDays(hoursOrDays(c, 5));
|
|
516
|
517
|
o.setCreateBy(username);
|
|
517
|
518
|
list.add(o);
|
|
518
|
519
|
}
|
|
|
@@ -786,6 +787,30 @@ public class LedgerCombinedImportServiceImpl implements ILedgerCombinedImportSer
|
|
786
|
787
|
return d == null ? null : d.intValue();
|
|
787
|
788
|
}
|
|
788
|
789
|
|
|
|
790
|
+ /**
|
|
|
791
|
+ * 解析天数/时长列:
|
|
|
792
|
+ * 纯数字 → 直接作为天数
|
|
|
793
|
+ * "X小时" → X / 8,保留4位小数(如4小时→0.5000,7小时→0.8750)
|
|
|
794
|
+ * "X天" → 去掉"天"后解析
|
|
|
795
|
+ */
|
|
|
796
|
+ private BigDecimal hoursOrDays(Object[] c, int idx) {
|
|
|
797
|
+ if (idx >= c.length || c[idx] == null) return null;
|
|
|
798
|
+ Object v = c[idx];
|
|
|
799
|
+ if (v instanceof Double) return BigDecimal.valueOf((Double) v);
|
|
|
800
|
+ String s = v.toString().trim();
|
|
|
801
|
+ if (s.isEmpty()) return null;
|
|
|
802
|
+ if (s.contains("小时")) {
|
|
|
803
|
+ String num = s.replace("小时", "").trim();
|
|
|
804
|
+ try {
|
|
|
805
|
+ return new BigDecimal(num).divide(BigDecimal.valueOf(8), 4, java.math.RoundingMode.HALF_UP);
|
|
|
806
|
+ } catch (Exception e) { return null; }
|
|
|
807
|
+ }
|
|
|
808
|
+ if (s.contains("天")) {
|
|
|
809
|
+ s = s.replace("天", "").trim();
|
|
|
810
|
+ }
|
|
|
811
|
+ try { return new BigDecimal(s); } catch (Exception e) { return null; }
|
|
|
812
|
+ }
|
|
|
813
|
+
|
|
789
|
814
|
// ════════════════════════════════════════════════════════════════
|
|
790
|
815
|
// 按时间范围清理全部台账表
|
|
791
|
816
|
// ════════════════════════════════════════════════════════════════
|