Commit 852a9715 by leialin

Merge branch 'lal' into 'develop'

Lal

See merge request 8timerv2/8timerapiv200!275
parents 98dc5831 c66c0e87
......@@ -428,16 +428,16 @@ public class AttController {
Long xbdk3 = 0l;
if(banci != null){
if(banci.getSxbcs()== 1 || banci.getSxbcs()== 2 || banci.getSxbcs()== 3){
sbdk1 = Long.valueOf(dateToStamp(data+" "+dealDateFormat(banci.getSbdk1(),2)+":00"));
xbdk1 = Long.valueOf(dateToStamp(data+" "+dealDateFormat(banci.getXbdk1(),2)+":00"));
sbdk1 = Long.valueOf(dateToStamp(data+" "+banci.getSbdk1()+":00"));
xbdk1 = Long.valueOf(dateToStamp(data+" "+banci.getXbdk1()+":00"));
}
if(banci.getSxbcs()== 2 || banci.getSxbcs()== 3){
sbdk2 = Long.valueOf(dateToStamp(data+" "+dealDateFormat(banci.getSbdk2(),2)+":00"));
xbdk2 = Long.valueOf(dateToStamp(data+" "+dealDateFormat(banci.getXbdk2(),2)+":00"));
sbdk2 = Long.valueOf(dateToStamp(data+" "+banci.getSbdk2()+":00"));
xbdk2 = Long.valueOf(dateToStamp(data+" "+banci.getXbdk2()+":00"));
}
if(banci.getSxbcs()== 3){
sbdk3 = Long.valueOf(dateToStamp(data+" "+dealDateFormat(banci.getSbdk3(),2)+":00"));
xbdk3 = Long.valueOf(dateToStamp(data+" "+dealDateFormat(banci.getXbdk3(),2)+":00"));
sbdk3 = Long.valueOf(dateToStamp(data+" "+banci.getSbdk3()+":00"));
xbdk3 = Long.valueOf(dateToStamp(data+" "+banci.getXbdk3()+":00"));
}
}
//之前打卡的班次
......@@ -3034,17 +3034,17 @@ public class AttController {
AttSchedule as = new AttSchedule();
as.setId(jrpb.getBcid());
as.setSort(1);
as.setTime(Long.valueOf(dateToStamp(str+" "+dealDateFormat(jrpb.getSbdk1(),2)+":00")));
as.setStarttime(("").equals(jrpb.getSbqjks1())? 0 :Long.valueOf(dateToStamp(str+" "+dealDateFormat(jrpb.getSbqjks1(),2)+":00")));
as.setEndtime(("").equals(jrpb.getSbqjjs1()) ? 0 : Long.valueOf(dateToStamp(str+" "+dealDateFormat(jrpb.getSbqjjs1(),2)+":00")));
as.setTime(Long.valueOf(dateToStamp(str+" "+jrpb.getSbdk1()+":00")));
as.setStarttime(("").equals(jrpb.getSbqjks1())? 0 :Long.valueOf(dateToStamp(str+" "+jrpb.getSbqjks1()+":00")));
as.setEndtime(("").equals(jrpb.getSbqjjs1()) ? 0 : Long.valueOf(dateToStamp(str+" "+jrpb.getSbqjjs1()+":00")));
atts.add(as);
}else{
AttSchedule as = new AttSchedule();
as.setId(jrpb.getBcid());
as.setSort(2);
as.setTime(Long.valueOf(dateToStamp(str+" "+dealDateFormat(jrpb.getXbdk1(),2)+":00")));
as.setStarttime(("").equals(jrpb.getXbqjks1()) ? 0 : Long.valueOf(dateToStamp(str+" "+dealDateFormat(jrpb.getXbqjks1(),2)+":00")));
as.setEndtime(("").equals(jrpb.getXbqjjs1()) ? 0 : Long.valueOf(dateToStamp(str+" "+dealDateFormat(jrpb.getXbqjjs1(),2)+":00")));
as.setTime(Long.valueOf(dateToStamp(str+" "+jrpb.getXbdk1()+":00")));
as.setStarttime(("").equals(jrpb.getXbqjks1()) ? 0 : Long.valueOf(dateToStamp(str+" "+jrpb.getXbqjks1()+":00")));
as.setEndtime(("").equals(jrpb.getXbqjjs1()) ? 0 : Long.valueOf(dateToStamp(str+" "+jrpb.getXbqjjs1()+":00")));
atts.add(as);
}
}
......@@ -3056,17 +3056,17 @@ public class AttController {
AttSchedule as = new AttSchedule();
as.setId(jrpb.getBcid());
as.setSort(3);
as.setTime(Long.valueOf(dateToStamp(str+" "+dealDateFormat(jrpb.getSbdk2(),2)+":00")));
as.setStarttime(("").equals(jrpb.getSbqjks2()) ? 0 : Long.valueOf(dateToStamp(str+" "+dealDateFormat(jrpb.getSbqjks2(),2)+":00")));
as.setEndtime(("").equals(jrpb.getSbqjjs2()) ? 0 : Long.valueOf(dateToStamp(str+" "+dealDateFormat(jrpb.getSbqjjs2(),2)+":00")));
as.setTime(Long.valueOf(dateToStamp(str+" "+jrpb.getSbdk2()+":00")));
as.setStarttime(("").equals(jrpb.getSbqjks2()) ? 0 : Long.valueOf(dateToStamp(str+" "+jrpb.getSbqjks2()+":00")));
as.setEndtime(("").equals(jrpb.getSbqjjs2()) ? 0 : Long.valueOf(dateToStamp(str+" "+jrpb.getSbqjjs2()+":00")));
atts.add(as);
}else{
AttSchedule as = new AttSchedule();
as.setId(jrpb.getBcid());
as.setSort(4);
as.setTime(Long.valueOf(dateToStamp(str+" "+dealDateFormat(jrpb.getXbdk2(),2)+":00")));
as.setStarttime(("").equals(jrpb.getXbqjks2()) ? 0 : Long.valueOf(dateToStamp(str+" "+dealDateFormat(jrpb.getXbqjks2(),2)+":00")));
as.setEndtime(("").equals(jrpb.getXbqjjs2()) ? 0 : Long.valueOf(dateToStamp(str+" "+dealDateFormat(jrpb.getXbqjjs2(),2)+":00")));
as.setTime(Long.valueOf(dateToStamp(str+" "+jrpb.getXbdk2()+":00")));
as.setStarttime(("").equals(jrpb.getXbqjks2()) ? 0 : Long.valueOf(dateToStamp(str+" "+jrpb.getXbqjks2()+":00")));
as.setEndtime(("").equals(jrpb.getXbqjjs2()) ? 0 : Long.valueOf(dateToStamp(str+" "+jrpb.getXbqjjs2()+":00")));
atts.add(as);
}
}
......@@ -3078,17 +3078,17 @@ public class AttController {
AttSchedule as = new AttSchedule();
as.setId(jrpb.getBcid());
as.setSort(5);
as.setTime(Long.valueOf(dateToStamp(str+" "+dealDateFormat(jrpb.getSbdk3(),2)+":00")));
as.setStarttime(("").equals(jrpb.getSbqjks3()) ? 0 : Long.valueOf(dateToStamp(str+" "+dealDateFormat(jrpb.getSbqjks3(),2)+":00")));
as.setEndtime(("").equals(jrpb.getSbqjjs3()) ? 0 : Long.valueOf(dateToStamp(str+" "+dealDateFormat(jrpb.getSbqjjs3(),2)+":00")));
as.setTime(Long.valueOf(dateToStamp(str+" "+jrpb.getSbdk3()+":00")));
as.setStarttime(("").equals(jrpb.getSbqjks3()) ? 0 : Long.valueOf(dateToStamp(str+" "+jrpb.getSbqjks3()+":00")));
as.setEndtime(("").equals(jrpb.getSbqjjs3()) ? 0 : Long.valueOf(dateToStamp(str+" "+jrpb.getSbqjjs3()+":00")));
atts.add(as);
}else{
AttSchedule as = new AttSchedule();
as.setId(jrpb.getBcid());
as.setSort(6);
as.setTime(Long.valueOf(dateToStamp(str+" "+dealDateFormat(jrpb.getXbdk3(),2)+":00")));
as.setStarttime(("").equals(jrpb.getXbqjks3()) ? 0 : Long.valueOf(dateToStamp(str+" "+dealDateFormat(jrpb.getXbqjks3(),2)+":00")));
as.setEndtime(("").equals(jrpb.getXbqjjs3()) ? 0 : Long.valueOf(dateToStamp(str+" "+dealDateFormat(jrpb.getXbqjjs3(),2)+":00")));
as.setTime(Long.valueOf(dateToStamp(str+" "+jrpb.getXbdk3()+":00")));
as.setStarttime(("").equals(jrpb.getXbqjks3()) ? 0 : Long.valueOf(dateToStamp(str+" "+jrpb.getXbqjks3()+":00")));
as.setEndtime(("").equals(jrpb.getXbqjjs3()) ? 0 : Long.valueOf(dateToStamp(str+" "+jrpb.getXbqjjs3()+":00")));
atts.add(as);
}
}
......@@ -3115,13 +3115,13 @@ public class AttController {
String name = ah.getName();
String context = "";
if(ah.getSxbcs() == 1 || ah.getSxbcs() == 2 || ah.getSxbcs() == 3){
context = dealDateFormat(ah.getSbdk1(),2) + "-" + dealDateFormat(ah.getXbdk1(),2);
context = ah.getSbdk1() + "-" + ah.getXbdk1();
}
if(ah.getSxbcs() == 2 || ah.getSxbcs() == 3){
context = context +" "+ dealDateFormat(ah.getSbdk2(),2) + "-" + dealDateFormat(ah.getXbdk2(),2);
context = context +" "+ ah.getSbdk2() + "-" + ah.getXbdk2();
}
if(ah.getSxbcs() == 3){
context = context +" "+ dealDateFormat(ah.getSbdk3(),2) + "-" + dealDateFormat(ah.getXbdk3(),2);
context = context +" "+ ah.getSbdk3() + "-" + ah.getXbdk3();
}
sys.setContext(name+ " " + context);
......@@ -3501,16 +3501,16 @@ public class AttController {
Long xbdk3 = 0l;
if(banci != null){
if(banci.getSxbcs()== 1 || banci.getSxbcs()== 2 || banci.getSxbcs()== 3){
sbdk1 = Long.valueOf(dateToStamp(data+" "+dealDateFormat(banci.getSbdk1(),2)+":00"));
xbdk1 = Long.valueOf(dateToStamp(data+" "+dealDateFormat(banci.getXbdk1(),2)+":00"));
sbdk1 = Long.valueOf(dateToStamp(data+" "+banci.getSbdk1()+":00"));
xbdk1 = Long.valueOf(dateToStamp(data+" "+banci.getXbdk1()+":00"));
}
if(banci.getSxbcs()== 2 || banci.getSxbcs()== 3){
sbdk2 = Long.valueOf(dateToStamp(data+" "+dealDateFormat(banci.getSbdk2(),2)+":00"));
xbdk2 = Long.valueOf(dateToStamp(data+" "+dealDateFormat(banci.getXbdk2(),2)+":00"));
sbdk2 = Long.valueOf(dateToStamp(data+" "+banci.getSbdk2()+":00"));
xbdk2 = Long.valueOf(dateToStamp(data+" "+banci.getXbdk2()+":00"));
}
if(banci.getSxbcs()== 3){
sbdk3 = Long.valueOf(dateToStamp(data+" "+dealDateFormat(banci.getSbdk3(),2)+":00"));
xbdk3 = Long.valueOf(dateToStamp(data+" "+dealDateFormat(banci.getXbdk3(),2)+":00"));
sbdk3 = Long.valueOf(dateToStamp(data+" "+banci.getSbdk3()+":00"));
xbdk3 = Long.valueOf(dateToStamp(data+" "+banci.getXbdk3()+":00"));
}
}
//之前打卡的班次
......@@ -4249,17 +4249,17 @@ public class AttController {
AttSchedule as = new AttSchedule();
as.setId(shifs.getId());
as.setSort(1);
as.setTime(Long.valueOf(dateToStamp(str+" "+dealDateFormat(shifs.getSbdk1(),2)+":00")));
as.setStarttime(("").equals(shifs.getSbqjks1())? 0 :Long.valueOf(dateToStamp(str+" "+dealDateFormat(shifs.getSbqjks1(),2)+":00")));
as.setEndtime(("").equals(shifs.getSbqjjs1()) ? 0 : Long.valueOf(dateToStamp(str+" "+dealDateFormat(shifs.getSbqjjs1(),2)+":00")));
as.setTime(Long.valueOf(dateToStamp(str+" "+shifs.getSbdk1()+":00")));
as.setStarttime(("").equals(shifs.getSbqjks1())? 0 :Long.valueOf(dateToStamp(str+" "+shifs.getSbqjks1()+":00")));
as.setEndtime(("").equals(shifs.getSbqjjs1()) ? 0 : Long.valueOf(dateToStamp(str+" "+shifs.getSbqjjs1()+":00")));
atts.add(as);
}else{
AttSchedule as = new AttSchedule();
as.setId(shifs.getId());
as.setSort(2);
as.setTime(Long.valueOf(dateToStamp(str+" "+dealDateFormat(shifs.getXbdk1(),2)+":00")));
as.setStarttime(("").equals(shifs.getXbqjks1()) ? 0 : Long.valueOf(dateToStamp(str+" "+dealDateFormat(shifs.getXbqjks1(),2)+":00")));
as.setEndtime(("").equals(shifs.getXbqjjs1()) ? 0 : Long.valueOf(dateToStamp(str+" "+dealDateFormat(shifs.getXbqjjs1(),2)+":00")));
as.setTime(Long.valueOf(dateToStamp(str+" "+shifs.getXbdk1()+":00")));
as.setStarttime(("").equals(shifs.getXbqjks1()) ? 0 : Long.valueOf(dateToStamp(str+" "+shifs.getXbqjks1()+":00")));
as.setEndtime(("").equals(shifs.getXbqjjs1()) ? 0 : Long.valueOf(dateToStamp(str+" "+shifs.getXbqjjs1()+":00")));
atts.add(as);
}
}
......@@ -4271,17 +4271,17 @@ public class AttController {
AttSchedule as = new AttSchedule();
as.setId(shifs.getId());
as.setSort(3);
as.setTime(Long.valueOf(dateToStamp(str+" "+dealDateFormat(shifs.getSbdk2(),2)+":00")));
as.setStarttime(("").equals(shifs.getSbqjks2()) ? 0 : Long.valueOf(dateToStamp(str+" "+dealDateFormat(shifs.getSbqjks2(),2)+":00")));
as.setEndtime(("").equals(shifs.getSbqjjs2()) ? 0 : Long.valueOf(dateToStamp(str+" "+dealDateFormat(shifs.getSbqjjs2(),2)+":00")));
as.setTime(Long.valueOf(dateToStamp(str+" "+shifs.getSbdk2()+":00")));
as.setStarttime(("").equals(shifs.getSbqjks2()) ? 0 : Long.valueOf(dateToStamp(str+" "+shifs.getSbqjks2()+":00")));
as.setEndtime(("").equals(shifs.getSbqjjs2()) ? 0 : Long.valueOf(dateToStamp(str+" "+shifs.getSbqjjs2()+":00")));
atts.add(as);
}else{
AttSchedule as = new AttSchedule();
as.setId(shifs.getId());
as.setSort(4);
as.setTime(Long.valueOf(dateToStamp(str+" "+dealDateFormat(shifs.getXbdk2(),2)+":00")));
as.setStarttime(("").equals(shifs.getXbqjks2()) ? 0 : Long.valueOf(dateToStamp(str+" "+dealDateFormat(shifs.getXbqjks2(),2)+":00")));
as.setEndtime(("").equals(shifs.getXbqjjs2()) ? 0 : Long.valueOf(dateToStamp(str+" "+dealDateFormat(shifs.getXbqjjs2(),2)+":00")));
as.setTime(Long.valueOf(dateToStamp(str+" "+shifs.getXbdk2()+":00")));
as.setStarttime(("").equals(shifs.getXbqjks2()) ? 0 : Long.valueOf(dateToStamp(str+" "+shifs.getXbqjks2()+":00")));
as.setEndtime(("").equals(shifs.getXbqjjs2()) ? 0 : Long.valueOf(dateToStamp(str+" "+shifs.getXbqjjs2()+":00")));
atts.add(as);
}
}
......@@ -4293,17 +4293,17 @@ public class AttController {
AttSchedule as = new AttSchedule();
as.setId(shifs.getId());
as.setSort(5);
as.setTime(Long.valueOf(dateToStamp(str+" "+dealDateFormat(shifs.getSbdk3(),2)+":00")));
as.setStarttime(("").equals(shifs.getSbqjks3()) ? 0 : Long.valueOf(dateToStamp(str+" "+dealDateFormat(shifs.getSbqjks3(),2)+":00")));
as.setEndtime(("").equals(shifs.getSbqjjs3()) ? 0 : Long.valueOf(dateToStamp(str+" "+dealDateFormat(shifs.getSbqjjs3(),2)+":00")));
as.setTime(Long.valueOf(dateToStamp(str+" "+shifs.getSbdk3()+":00")));
as.setStarttime(("").equals(shifs.getSbqjks3()) ? 0 : Long.valueOf(dateToStamp(str+" "+shifs.getSbqjks3()+":00")));
as.setEndtime(("").equals(shifs.getSbqjjs3()) ? 0 : Long.valueOf(dateToStamp(str+" "+shifs.getSbqjjs3()+":00")));
atts.add(as);
}else{
AttSchedule as = new AttSchedule();
as.setId(shifs.getId());
as.setSort(6);
as.setTime(Long.valueOf(dateToStamp(str+" "+dealDateFormat(shifs.getXbdk3(),2)+":00")));
as.setStarttime(("").equals(shifs.getXbqjks3()) ? 0 : Long.valueOf(dateToStamp(str+" "+dealDateFormat(shifs.getXbqjks3(),2)+":00")));
as.setEndtime(("").equals(shifs.getXbqjjs3()) ? 0 : Long.valueOf(dateToStamp(str+" "+dealDateFormat(shifs.getXbqjjs3(),2)+":00")));
as.setTime(Long.valueOf(dateToStamp(str+" "+shifs.getXbdk3()+":00")));
as.setStarttime(("").equals(shifs.getXbqjks3()) ? 0 : Long.valueOf(dateToStamp(str+" "+shifs.getXbqjks3()+":00")));
as.setEndtime(("").equals(shifs.getXbqjjs3()) ? 0 : Long.valueOf(dateToStamp(str+" "+shifs.getXbqjjs3()+":00")));
atts.add(as);
}
}
......
......@@ -105,9 +105,10 @@ public class AttendanceTaskTiming{
*/
//3.添加定时任务 每四小时执行一次
@Scheduled(cron = "0 0 */4 * * ?")
// @Scheduled(cron = "0 0 */4 * * ?")
// @Scheduled(cron = "0 */5 * * * ?") // 测试:5秒执行一次 0 0 19 * * ?
// @Scheduled(cron = "0 02 12 * * ?") // 测试:5秒执行一次 0 0 19 * * ?
@Scheduled(cron = "0 */5 * * * ?")
public void AttendanceTask() throws ParseException {
// boolean implement = false;
......@@ -150,10 +151,12 @@ public class AttendanceTaskTiming{
int year = Calendar.getInstance().get(Calendar.YEAR);
int month = Calendar.getInstance().get(Calendar.MONTH) + 1;
KqglAssoMonthPunchSummary.builder().build().delete(new QueryWrapper<KqglAssoMonthPunchSummary>().lambda().eq(KqglAssoMonthPunchSummary::getBelongYear, year).eq(KqglAssoMonthPunchSummary::getBelongMonth, month));
for(int t = 0;t<orgcodelist.size();t++){
int org_code = orgcodelist.get(t).getId();//企业组织代码
KqglAssoMonthPunchSummary.builder().build().delete(new QueryWrapper<KqglAssoMonthPunchSummary>().lambda().eq(KqglAssoMonthPunchSummary::getBelongYear, year)
.eq(KqglAssoMonthPunchSummary::getBelongMonth, month).eq(KqglAssoMonthPunchSummary::getOrgCode, org_code));
List<AdditionalDto> userlist = kqglassoleavebalancemapper.selectAdditionalList(org_code);
for(AdditionalDto user : userlist) {
double traveltotal = 0,egresstotal = 0,overtimetotal = 0;
......@@ -181,16 +184,34 @@ public class AttendanceTaskTiming{
dkjtts[dk] = pcd.getData();
dk++;
if(pcd.getYdkcs() == 2 || pcd.getYdkcs() == 4 || pcd.getYdkcs() == 6){
if(pcd.getSbdk1() == null){ sblacks[sbqkcs] = pcd.getData(); sbqkcs++; }
if(pcd.getXbdk1() == null){ xblacks[xbqkcs] = pcd.getData(); xbqkcs++; }
if(pcd.getSbdk1() == null){
sblacks[sbqkcs] = pcd.getData();
sbqkcs++;
}
if(pcd.getXbdk1() == null){
xblacks[xbqkcs] = pcd.getData();
xbqkcs++;
}
}
if(pcd.getYdkcs() == 4 || pcd.getYdkcs() == 6){
if(pcd.getSbdk2() == null){ sblacks[sbqkcs] = pcd.getData(); sbqkcs++; }
if(pcd.getXbdk2() == null){ xblacks[xbqkcs] = pcd.getData(); xbqkcs++; }
if(pcd.getSbdk2() == null){
sblacks[sbqkcs] = pcd.getData();
sbqkcs++;
}
if(pcd.getXbdk2() == null){
xblacks[xbqkcs] = pcd.getData();
xbqkcs++;
}
}
if(pcd.getYdkcs() == 6){
if(pcd.getSbdk3() == null){ sblacks[sbqkcs] = pcd.getData(); sbqkcs++; }
if(pcd.getXbdk3() == null){ xblacks[xbqkcs] = pcd.getData(); xbqkcs++; }
if(pcd.getSbdk3() == null){
sblacks[sbqkcs] = pcd.getData();
sbqkcs++;
}
if(pcd.getXbdk3() == null){
xblacks[xbqkcs] = pcd.getData();
xbqkcs++;
}
}
}
}
......@@ -439,7 +460,7 @@ public class AttendanceTaskTiming{
}
//排查请假是否在最后一次打卡范围内 查询当月的请假所有日期
List<KqglAssoRelationSummary> leainv = kqglassorelationsummarymapper.LeaveInvestigation(user.getEmpnum(), 2, ttstr);
List<KqglAssoRelationSummary> leainv = kqglassorelationsummarymapper.LeaveInvestigation(user.getEmpnum(), 2, ttstr,org_code);
// KqglAssoBcsz shif = KqglAssoBcsz.builder().build();
String beginTime = sdf1.format(new Date());
// List<String> rowData = new ArrayList<String>();
......@@ -676,7 +697,7 @@ public class AttendanceTaskTiming{
summary.setEarlyLeaveTimes(Double.valueOf(leanum));//早退次数
summary.setLengthEarlyLeave(Double.valueOf(leahours));//早退时长(分钟)
summary.setNumberWorkCardShortage(Double.valueOf(sbqkcs));//上班缺卡次数
summary.setNumberDutyCardShortage(Double.valueOf(xbqkcs));//下班缺卡次数
summary.setNumberDutyCardShortage(Double.valueOf(xbqkcs < 0 ? 0 : xbqkcs));//下班缺卡次数
summary.setLengthBusinessTrip(traveltotal);//出差时长
summary.setTimeOut(egresstotal);//外出时长
summary.setTotalOvertimeHours(overtimetotal);//加班总时长
......
......@@ -20,7 +20,7 @@ public interface KqglAssoRelationSummaryMapper extends BaseMapper<KqglAssoRelati
List<KqglAssoRelationSummary> SpecificLeave(int userid,int approvaltype,String apptime);
List<KqglAssoRelationSummary> LeaveInvestigation(int userid,int approvaltype,String apptime);
List<KqglAssoRelationSummary> LeaveInvestigation(int userid,int approvaltype,String apptime,int orgcode);
KqglAssoRelationSummary selectTabledata(int userid,int approvaltype,String apptime);
}
......@@ -64,7 +64,7 @@
<result column="hk_address" property="hkAddress" />
<result column="qq" property="qq" />
<result column="wechat" property="wechat" />
<result column="email" property="email" />
<!-- <result column="email" property="email" /> -->
<result column="blood_type" property="bloodType" />
<result column="language" property="language" />
<result column="edu" property="edu" />
......
......@@ -59,6 +59,7 @@
res.end_time
from kqgl_asso_relation_summary res
where res.user_id = #{userid}
and res.org_code = #{orgcode}
and res.approval_type = #{approvaltype}
and SUBSTR(res.app_time,1,7) = #{apptime}
GROUP BY res.start_time,res.end_time;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment