|
@@ -1,16 +1,21 @@
|
|
|
package com.malk.yibaoju.service.impl;
|
|
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
+import cn.hutool.core.util.ArrayUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.malk.server.aliwork.YDConf;
|
|
|
import com.malk.server.aliwork.YDParam;
|
|
|
import com.malk.service.aliwork.YDClient;
|
|
|
import com.malk.service.aliwork.YDService;
|
|
|
import com.malk.utils.UtilDateTime;
|
|
|
+import com.malk.utils.UtilExcel;
|
|
|
import com.malk.utils.UtilMap;
|
|
|
import com.malk.yibaoju.entity.Plan;
|
|
|
import com.malk.yibaoju.mapper.PlanMapper;
|
|
@@ -22,6 +27,8 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
import java.io.*;
|
|
|
import java.net.HttpURLConnection;
|
|
|
import java.net.URL;
|
|
@@ -37,6 +44,8 @@ import java.util.Date;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
+import static java.lang.Integer.parseInt;
|
|
|
+
|
|
|
|
|
|
@Service
|
|
|
@Slf4j
|
|
@@ -1071,21 +1080,149 @@ public class YBJServiceImpl implements YBJService {
|
|
|
|
|
|
ydParam = YDParam.builder()
|
|
|
.formUuid("FORM-RK966E7105DFD27FA7EQHAOH9IFS2RN6MP3OL2") //获取护理计划
|
|
|
- .searchFieldJson(JSON.toJSONString(UtilMap.map("selectField_lo2b6bvf, textField_lryk5xa3", "正常","上海市奉贤区四团社区居家养老服务中心")))//护理对象暂停和正常、月度计划创建只查询正常的护理计划
|
|
|
+ .searchFieldJson(JSON.toJSONString(UtilMap.map("selectField_lo2b6bvf, textField_lryk5xa3", "正常",code)))//护理对象暂停和正常、月度计划创建只查询正常的护理计划
|
|
|
.build();
|
|
|
|
|
|
List<Map> dataList = ydService.queryFormData_all(ydParam);
|
|
|
|
|
|
log.info("时间:{}",dayOfMonth);
|
|
|
- if (dayOfMonth>24){
|
|
|
- log.info("开始");
|
|
|
- dataList.forEach(e->{
|
|
|
- deleteDatabaseInfo(e.get("formInstanceId").toString());
|
|
|
+// if (dayOfMonth>24){
|
|
|
+ log.info("开始");
|
|
|
+ dataList.forEach(e->{
|
|
|
+ deleteDatabaseInfo(e.get("formInstanceId").toString());
|
|
|
// log.info("流程id:{}",e.get("formInstanceId").toString());
|
|
|
- log.info("护理对象:{}",e.get("textField_lo55rupj").toString());
|
|
|
- insertDatabaseNextMonth(e.get("formInstanceId").toString());
|
|
|
- });
|
|
|
+ log.info("护理对象:{}",e.get("textField_lo55rupj").toString());
|
|
|
+ thisMonthDataBase(e.get("formInstanceId").toString());
|
|
|
+
|
|
|
+// insertDatabaseNextMonth(e.get("formInstanceId").toString());
|
|
|
+ });
|
|
|
+// }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void execlExport(Map<String, Object> data, HttpServletResponse response, HttpServletRequest request) {
|
|
|
+ if (data.isEmpty()){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ List<Plan> records = boardQuery(data).getRecords();
|
|
|
+ if (ArrayUtil.isNotEmpty(records)){
|
|
|
+ log.info("records:{}",records.toString());
|
|
|
+ }
|
|
|
+ String formInstId = data.get("formInstId").toString();
|
|
|
+ log.info("已获取流程实例ID为:{}",data.get("formInstId").toString());
|
|
|
+ // 动态表头模板导出
|
|
|
+ Map formData = ydClient.queryData(YDParam.builder()
|
|
|
+ .appType("APP_ERBDTFS82HOVBPL3NFH0")
|
|
|
+ .systemToken("RRB66F91T97H1WN89QZYC47PKLZO2ZQOUMOQLP")
|
|
|
+ .formInstanceId(formInstId)
|
|
|
+ .build(),
|
|
|
+ YDConf.FORM_QUERY.retrieve_id).getFormData();
|
|
|
+ log.info("formData:{}",formData);
|
|
|
+ //获取主表字段
|
|
|
+ final String[] keys = {""};
|
|
|
+ final String[] valuses = {""};
|
|
|
+ formData.forEach((k,v)->{
|
|
|
+ if (!k.toString().equals("pageSection_lr3gzi9i") && !k.toString().equals("pageSection_ltxyt76g")){
|
|
|
+ keys[0] = keys[0] + k + ", ";
|
|
|
+ valuses[0] = valuses[0] + v.toString() + ", ";
|
|
|
+ }
|
|
|
+ });
|
|
|
+ Map<String, String> dataMain = UtilMap.map(keys[0], valuses[0]);
|
|
|
+ log.info("dataMain:{}",dataMain);
|
|
|
+ //获取订单日期
|
|
|
+ long dateFiled = Long.parseLong(formData.get("dateField_lr26l3h2").toString());
|
|
|
+ if (ObjectUtil.isNotEmpty(dateFiled)){
|
|
|
+ String dateStr = DateUtil.date(dateFiled).toString("yyyy-MM-dd");
|
|
|
+ dataMain.put("dateField_lr26l3h2",dateStr);
|
|
|
+ }
|
|
|
+ //获取供应商名称
|
|
|
+ String association = formData.get("associationFormField_lr26l3he_id").toString();
|
|
|
+ log.info(association);
|
|
|
+ if (ObjectUtil.isNotEmpty(association)){
|
|
|
+ association = JSON.parse(association).toString();
|
|
|
+ JSONArray jsonArray = JSON.parseArray(association);
|
|
|
+ JSONObject jsonObject = (JSONObject) jsonArray.get(0);
|
|
|
+ String title = jsonObject.get("title").toString();
|
|
|
+ dataMain.put("title",title);
|
|
|
+ }
|
|
|
+ //获取文件标题
|
|
|
+ String fileName = dataMain.get("textField_lr26y1io") + dataMain.get("textField_lz2fk0wc") + "采购订单";
|
|
|
+
|
|
|
+ List<Map> dataList = ydService.queryDetails(YDParam.builder().
|
|
|
+ appType("APP_ERBDTFS82HOVBPL3NFH0")
|
|
|
+ .systemToken("RRB66F91T97H1WN89QZYC47PKLZO2ZQOUMOQLP")
|
|
|
+ .formInstanceId(formInstId)
|
|
|
+ .formUuid("FORM-61F329A9DFFE4CF0BBEC0FDC34C42C03QJKQ")
|
|
|
+ //测试
|
|
|
+// .formUuid("FORM-44AF067BF733464F8431620612726615RNNV")
|
|
|
+ .tableFieldId("tableField_ltxyt76f")
|
|
|
+ .build());
|
|
|
+ log.info("dataList1:{}",dataList);
|
|
|
+ for (int i = 0; i < dataList.size(); i++) {
|
|
|
+ dataList.get(i).put("row",i+1);
|
|
|
+ String person = dataList.get(i).get("textField_lu2gzzab").toString();
|
|
|
+ String phone = dataList.get(i).get("textField_lu2gzzac").toString();
|
|
|
+ final String[] address = {""};
|
|
|
+ if (ObjectUtil.isNotNull(dataList.get(i).get("addressField_m1mxnnno"))){
|
|
|
+ Object parse = JSON.parse(dataList.get(i).get("addressField_m1mxnnno").toString());
|
|
|
+ JSONObject jsonObject = (JSONObject) parse;
|
|
|
+ JSONArray jsonArray = JSON.parseArray(jsonObject.get("regionText").toString());
|
|
|
+ jsonArray.forEach(e->{
|
|
|
+ JSONObject object = (JSONObject) e;
|
|
|
+ String zhCn = object.get("zh_CN").toString();
|
|
|
+ address[0] = address[0] + zhCn + "/";
|
|
|
+ });
|
|
|
+ String substring = address[0].substring(0, address[0].length() - 1);
|
|
|
+ dataList.get(i).put("addressField_m1mxnnno",substring);
|
|
|
+ }
|
|
|
+ String information = person + " " + phone;
|
|
|
+ dataList.get(i).put("information",information);
|
|
|
}
|
|
|
+ log.info("dataList:{}",dataList);
|
|
|
+ String text = "一、订单说明:\n" +
|
|
|
+ "1.供应商需按订单内容,向采购方按时、按量提供质量合格的商品(如一张订单分多次送货的,将以末次送货时间作为该订单的送货时间)。\n" +
|
|
|
+ "2.供应商配送物品与订单不符,采购方接收人有权拒收、要求换货或给与相应的赔偿。\n" +
|
|
|
+ "3.供应商未按订单约定时间配送物品,需按照订单总价的5%作为单日违约金,按照延迟天数向采购方支付。\n" +
|
|
|
+ "4.供应商送货时,需向采购方接收人提供供应商送货签收单据的客户联,采购方将作为付款的书面依据留存。\n" +
|
|
|
+ "5.供应商完成物品配送后,5个工作日内需向采购方提交与订单内容相符的增值税专用发票。\n" +
|
|
|
+ "6.采购方在收到供应商提供的与订单相符的物品及相应发票和单据后,将按照双方约定的付款周期支付货款。\n" +
|
|
|
+ "7.采购方以传真和邮件方式,向供应商提供《采购订单》;供应商接收《采购订单》后,需以传真或邮件方式进行签收。\n" +
|
|
|
+ "8.采购方以供应商传真或邮件签收,作为该《采购订单》正式履行的依据。\n" +
|
|
|
+ "9.采购订单作为供需双方的日常业务办理依据,双方合作的相关法律依据以双方签订的合作协议为准。\n" +
|
|
|
+ "10.严禁除采购以外的任何人员直接向供应商订购物资,如供应商在未收到采购订单的情况下进行物资配送,采购一律不予结算该账款。\n" +
|
|
|
+ "严禁供应商向除采购方以外的任何第三方泄露采购单价,造成采购方名誉、信誉、财产的一切损失将由供应商承担。\n" +
|
|
|
+ "二、备注:采购订单敲章后与发票一起寄回,以便后期确认。\n" +
|
|
|
+ "发票寄送地址:上海市宝山区双城路803弄宝莲城9号楼27层\n" +
|
|
|
+ "联系人:浦水菊 联系电话:60671366 转 828";
|
|
|
+ dataMain.put("text",text);
|
|
|
+ int numSum = dataList.stream().mapToInt(e -> e.get("numberField_ltxyt75z").toString().equals("") ? 0 : parseInt(e.get("numberField_ltxyt75z").toString())).sum();
|
|
|
+ Double sumTotal = dataList.stream().mapToDouble(e -> e.get("numberField_ltxyt764").toString().equals("") ? 0 : Double.parseDouble(e.get("numberField_ltxyt764").toString())).sum();
|
|
|
+ dataMain.put("num_sum",String.valueOf(numSum));
|
|
|
+ dataMain.put("sum_total",String.valueOf(sumTotal));
|
|
|
+
|
|
|
+ UtilExcel.exportMapAndListByTemplate(response, dataMain, dataList, Map.class, fileName, "Template.xlsx");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public IPage<Plan> boardQuery(Map<String, Object> data) {
|
|
|
+ QueryWrapper<Plan> planQuery = new QueryWrapper<>();
|
|
|
+ IPage<Plan> planPage = new Page<>();
|
|
|
+ data.forEach((k,v)->{
|
|
|
+ if (k.equals("currentPage")){
|
|
|
+ planPage.setCurrent(Long.parseLong(v.toString()));
|
|
|
+ } else if (k.equals("pageSize")) {
|
|
|
+ planPage.setSize(Long.parseLong(v.toString()));
|
|
|
+ } else if (k.equals("date_between")){
|
|
|
+ Map<String,Object> formInstId = (Map<String,Object>) data.get("date_between");
|
|
|
+ planQuery.ge("care_start_time",formInstId.get("start"));
|
|
|
+ planQuery.le("care_start_time",formInstId.get("end"));
|
|
|
+ }else{
|
|
|
+ planQuery.eq(k,v);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ planQuery.eq("is_delete",0);
|
|
|
+ planQuery.orderByAsc("care_start_time");
|
|
|
+ return planMapper.selectPage(planPage, planQuery);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -1113,7 +1250,7 @@ public class YBJServiceImpl implements YBJService {
|
|
|
"`care_date_text`,`start_time_text`,`end_time_text`,`sign_in_photo`, `sign_in_photo_down`, `sign_in_photo_name`, `sign_out_photo`, " +
|
|
|
"`sign_out_photo_down`, `sign_out_photo_name`, `sign_in_longitude`, `sign_in_latitude`, `sign_in_time`, `sign_in_position`, " +
|
|
|
"`sign_out_longitude`, `sign_out_latitude`, `sign_out_time`, `sign_out_position`, `sign_in_distance`, `sign_out_distance` " +
|
|
|
- "FROM `yida_plan_details` where data_month = '" + dataMonths.get(j) + "' AND is_cogradient = '否' AND care_date_text = '2024-12-31' " +
|
|
|
+ "FROM `yida_plan_details` where data_month = '" + dataMonths.get(j) + "' AND is_cogradient = '否' AND care_date_text > '2024-12-31' " +
|
|
|
"AND is_delete = '0' ORDER BY care_date_text ASC,id ASC LIMIT 400";
|
|
|
ps = connection.prepareStatement(selectSql);
|
|
|
ResultSet rs = ps.executeQuery(selectSql);
|
|
@@ -1132,8 +1269,8 @@ public class YBJServiceImpl implements YBJService {
|
|
|
hashMap.put("selectField_lo3pmohy",rs.getString("within_the_week")); //护理时间 (星期几)
|
|
|
hashMap.put("dateField_lred6eoj", rs.getString("care_start_time")); //护理开始时间。 用当前日期+护理计划的 时分 转成时间戳
|
|
|
hashMap.put("dateField_lred6eok", rs.getString("care_end_time")); //护理结束时间。 用当前日期+护理计划的 时分 转成时间戳
|
|
|
- hashMap.put("selectField_lqcgsbw2", "未执行"); //执行情况
|
|
|
- hashMap.put("selectField_lo56u5fn", "待上报"); //任务状态
|
|
|
+ hashMap.put("selectField_lqcgsbw2", rs.getString("execute_status")); //执行情况
|
|
|
+ hashMap.put("selectField_lo56u5fn", rs.getString("task_status")); //任务状态
|
|
|
|
|
|
hashMap.put("textField_lvae7q5n", rs.getString("care_object_longitude")); //护理对象经度
|
|
|
hashMap.put("textField_lvae7q5o", rs.getString("care_object_latitude")); //护理对象纬度
|
|
@@ -1181,24 +1318,7 @@ public class YBJServiceImpl implements YBJService {
|
|
|
|
|
|
times++;
|
|
|
ids.add(rs.getInt("id"));
|
|
|
-// if (times%200==0 && ObjectUtil.isNotNull(ids)){
|
|
|
-// for (int i = 0; i < ids.size(); i++) {
|
|
|
-// YDParam ydParam = YDParam.builder()
|
|
|
-// .formUuid(formId)
|
|
|
-// .searchFieldJson(JSON.toJSONString(UtilMap.map("textField_m3wp95ge",ids.get(i))))
|
|
|
-// .build();
|
|
|
-// List<Map> dataList = (List<Map>) ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_search_form).getData();
|
|
|
-// if(dataList.size()>0){
|
|
|
-// Map map = (Map) dataList.get(0);
|
|
|
-// String updateSql = "UPDATE `yida_plan_details` SET is_cogradient = '是', plan_inst_id = '"+map.get("formInstanceId")+"' " +
|
|
|
-// "where data_month in ('" + dataMonth + "','"+nextDataMonth+"') AND is_cogradient = '否' AND id = '" + ids.get(i) + "';";
|
|
|
-// ps = connection.prepareStatement(updateSql);
|
|
|
-// ps.executeUpdate();
|
|
|
-// }
|
|
|
-// }
|
|
|
-// Thread.sleep(2000);
|
|
|
-// ids.clear();
|
|
|
-// }
|
|
|
+
|
|
|
if (times%200==0){
|
|
|
Thread.sleep(4000);
|
|
|
}
|
|
@@ -1284,7 +1404,7 @@ public class YBJServiceImpl implements YBJService {
|
|
|
* @param formInstId
|
|
|
*/
|
|
|
@Override
|
|
|
- public void thisMonthDataBase(String formInstId, String status){
|
|
|
+ public void thisMonthDataBase(String formInstId){
|
|
|
log.info("开始生成当月数据库未上报护理计划:{}",new Date());
|
|
|
//根据实例ID 查询护理计划
|
|
|
YDParam ydParam = YDParam.builder()
|