瀏覽代碼

FIX: bug修复

xdd 2 周之前
父節點
當前提交
bda393dbac
共有 21 個文件被更改,包括 388 次插入163 次删除
  1. 1 0
      fs-admin/src/main/java/com/fs/store/controller/FsPrescribeController.java
  2. 18 0
      fs-admin/src/test/java/com/fs/company/controller/CompanyControllerTest.java
  3. 2 2
      fs-admin/src/test/java/com/fs/store/controller/FsStorePaymentControllerTest.java
  4. 3 0
      fs-common/src/main/java/com/fs/common/config/FSSysConfig.java
  5. 5 0
      fs-service-system/pom.xml
  6. 14 2
      fs-service-system/src/main/java/com/fs/store/domain/FsPrescribe.java
  7. 14 0
      fs-service-system/src/main/java/com/fs/store/dto/FsStoreCartDTO.java
  8. 9 1
      fs-service-system/src/main/java/com/fs/store/mapper/FsPrescribeMapper.java
  9. 3 0
      fs-service-system/src/main/java/com/fs/store/mapper/FsShippingTemplatesFreeMapper.java
  10. 3 0
      fs-service-system/src/main/java/com/fs/store/mapper/FsShippingTemplatesRegionMapper.java
  11. 5 1
      fs-service-system/src/main/java/com/fs/store/mapper/FsStoreCartMapper.java
  12. 6 1
      fs-service-system/src/main/java/com/fs/store/service/IFsPrescribeService.java
  13. 183 137
      fs-service-system/src/main/java/com/fs/store/service/impl/FsPrescribeServiceImpl.java
  14. 18 3
      fs-service-system/src/main/java/com/fs/store/service/impl/FsShippingTemplatesServiceImpl.java
  15. 15 0
      fs-service-system/src/main/java/com/fs/store/service/impl/FsStoreOrderServiceImpl.java
  16. 6 0
      fs-service-system/src/main/java/com/fs/store/vo/FsPrescribeVO.java
  17. 12 0
      fs-service-system/src/main/java/com/fs/store/vo/FsStoreCartQueryVO.java
  18. 4 1
      fs-service-system/src/main/resources/application-config.yml
  19. 7 1
      fs-service-system/src/main/resources/mapper/store/FsPrescribeMapper.xml
  20. 28 7
      fs-service-system/src/main/resources/mapper/store/FsShippingTemplatesFreeMapper.xml
  21. 32 7
      fs-service-system/src/main/resources/mapper/store/FsShippingTemplatesRegionMapper.xml

+ 1 - 0
fs-admin/src/main/java/com/fs/store/controller/FsPrescribeController.java

@@ -94,6 +94,7 @@ public class FsPrescribeController extends BaseController
     @PutMapping
     public AjaxResult edit(@RequestBody FsPrescribe fsPrescribe)
     {
+        fsPrescribe.setStatus(1);
         return toAjax(fsPrescribeService.updateFsPrescribe(fsPrescribe));
     }
 

+ 18 - 0
fs-admin/src/test/java/com/fs/company/controller/CompanyControllerTest.java

@@ -9,7 +9,10 @@ import com.fs.erp.service.IErpOrderService;
 import com.fs.erp.service.impl.ErpOrderServiceImpl;
 import com.fs.pay.pay.util.PayUtil;
 import com.fs.store.domain.FsStoreOrder;
+import com.fs.store.dto.MedicalRecordDTO;
+import com.fs.store.service.IFsPrescribeService;
 import com.fs.store.service.IFsStoreOrderService;
+import com.fs.store.service.MedicalRecordService;
 import com.fs.wx.dto.*;
 import com.fs.wx.service.OrderQueryService;
 import com.fs.wx.service.ShippingService;
@@ -50,6 +53,21 @@ public class CompanyControllerTest {
     @Autowired
     private IFsStoreOrderService fsStoreOrderService;
 
+    @Autowired
+    private IFsPrescribeService fsPrescribeService;
+
+    @Autowired
+    private MedicalRecordService medicalRecordService;
+
+    @Test
+    public void test6(){
+//        MedicalRecordDTO medicalRecordDTO = new MedicalRecordDTO();
+    }
+    @Test
+    public void test5(){
+       fsPrescribeService.generateDealImg();
+    }
+
     @Test
     public void test4() throws ParseException {
         FsStoreOrder order=fsStoreOrderService.selectFsStoreOrderByOrderCode("1935899736686985216");

+ 2 - 2
fs-admin/src/test/java/com/fs/store/controller/FsStorePaymentControllerTest.java

@@ -1163,8 +1163,8 @@ public class FsStorePaymentControllerTest {
         PayProcessContext processContext = new PayProcessContext();
         processContext.setOrderId(null);
         processContext.setPayType(null);
-        processContext.setPaymentId(1334828L);
-        processContext.setPayCode("1929745734509264897");
+        processContext.setPaymentId(1336715L);
+        processContext.setPayCode("1933288687810904064");
         String json = configService.selectConfigByKey("store.pay");
         FsPayConfig fsPayConfig = JSON.parseObject(json, FsPayConfig.class);
         processContext.setFsPayConfig(fsPayConfig);

+ 3 - 0
fs-common/src/main/java/com/fs/common/config/FSSysConfig.java

@@ -32,6 +32,9 @@ public class FSSysConfig
     String accessKeyID;
     String accessKeySecret;
     String callbackUrl;
+    String doctorSignImgUrl;
+    String drugDoctorSignImgUrl;
+    String prescribeTemplateImgPath;
     //erp接口
     Integer erpOpen;//是否开启ERP
     String erpAppKey;

+ 5 - 0
fs-service-system/pom.xml

@@ -174,5 +174,10 @@
             <groupId>com.github.ben-manes.caffeine</groupId>
             <artifactId>caffeine</artifactId>
         </dependency>
+        <dependency>
+            <groupId>net.coobird</groupId>
+            <artifactId>thumbnailator</artifactId>
+            <version>0.4.19</version>
+        </dependency>
     </dependencies>
 </project>

+ 14 - 2
fs-service-system/src/main/java/com/fs/store/domain/FsPrescribe.java

@@ -123,6 +123,9 @@ public class FsPrescribe extends BaseEntity
     @Excel(name = "拒绝原因")
     private String auditReason;
 
+    @Excel(name = "审核医师")
+    private String auditDoctor = "谢彩云";
+
 
     /** 诊断 */
     @Excel(name = "诊断")
@@ -134,7 +137,7 @@ public class FsPrescribe extends BaseEntity
 
     /** 医生名称 */
     @Excel(name = "医生名称")
-    private String doctorName;
+    private String doctorName = "谭清娥";
 
     /** 科室名称 */
     @Excel(name = "科室名称")
@@ -174,6 +177,8 @@ public class FsPrescribe extends BaseEntity
     private String prescribeCodeUrl;
     private String prescribeImgStoreUrl;
 
+    private String medicalRecordUrl;
+
 
     private Integer cycle;
 
@@ -183,5 +188,12 @@ public class FsPrescribe extends BaseEntity
 
     public Integer source;
 
-
+    /**
+     * 生成状态 1已支付 0 未生成 2已生成
+     */
+    private Integer generateStatus;
+    /**
+     * 失败原因
+     */
+    private String failMsg;
 }

+ 14 - 0
fs-service-system/src/main/java/com/fs/store/dto/FsStoreCartDTO.java

@@ -1,5 +1,6 @@
 package com.fs.store.dto;
 
+import com.fs.common.annotation.Excel;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -39,4 +40,17 @@ import java.math.BigDecimal;
      * 仓库代码
      */
     private String warehouseCode;
+
+    /**
+     * 服用方法
+     */
+    private String usageMethod;
+    /**
+     * 一日几次
+     */
+    private String frequency;
+    /**
+     * 用药数量
+     */
+    private String dosage;
 }

+ 9 - 1
fs-service-system/src/main/java/com/fs/store/mapper/FsPrescribeMapper.java

@@ -85,7 +85,7 @@ public interface FsPrescribeMapper
     FsPrescribe selectFsPrescribeByOrderId(Long orderId);
     @Select({"<script> " +
             "select p.*,u.nickname as user_nickname,u.phone as user_phone,o.order_code from fs_prescribe p left join fs_store_order o on o.id=p.order_id left join fs_user u on u.user_id=p.user_id  " +
-            "where 1=1 " +
+            "where p.generate_status in (1,2)" +
             "<if test = 'maps.rpId != null and maps.rpId!=\"\"    '> " +
             "and p.rp_id =#{maps.rpId} " +
             "</if>" +
@@ -98,4 +98,12 @@ public interface FsPrescribeMapper
             " order by p.create_time desc "+
             "</script>"})
     List<FsPrescribeVO> selectFsPrescribeListVO(@Param("maps") FsPrescribeVOParam fsPrescribe);
+
+    /**
+     * 获取已开方 且  已支付 处方图片为null的数据
+     * @return
+     */
+    @Select("select * from fs_prescribe where status=1 and ifnull(generate_status,0)=1")
+    List<FsPrescribe> selectPenddingData();
+
 }

+ 3 - 0
fs-service-system/src/main/java/com/fs/store/mapper/FsShippingTemplatesFreeMapper.java

@@ -90,4 +90,7 @@ public interface FsShippingTemplatesFreeMapper
 
     @Select("select * from fs_shipping_templates_free where temp_id=${templateId}")
     List<FsShippingTemplatesFree> selectFreeShippingRuleByTempId(@Param("templateId") Long templateId);
+
+    void saveBatch(@Param("list") List<FsShippingTemplatesFree> shippingTemplatesFreeList);
+
 }

+ 3 - 0
fs-service-system/src/main/java/com/fs/store/mapper/FsShippingTemplatesRegionMapper.java

@@ -69,4 +69,7 @@ public interface FsShippingTemplatesRegionMapper
 
     @Select("select * from fs_shipping_templates_region where temp_id=${templateId}")
     List<FsShippingTemplatesRegion> selectTempRegionByTempIdAndCityId(@Param("templateId") Long templateId);
+
+
+    void batchSaveRegions(@Param("list") List<FsShippingTemplatesRegion> fsShippingTemplatesRegions);
 }

+ 5 - 1
fs-service-system/src/main/java/com/fs/store/mapper/FsStoreCartMapper.java

@@ -73,7 +73,11 @@ public interface FsStoreCartMapper
            "<foreach collection='array' item='id' open='(' separator=',' close=')'>#{id}</foreach>"+
             "</script>"})
     int delCart(Long[] ids);
-    @Select("select c.*,p.cate_id,p.product_name,p.warehouse_id as warehouse_id,p.warehouse_code as warehouse_code,p.image as product_image,p.temp_id,p.product_type,v.price,v.sku as product_attr_name,v.image as product_attr_image,v.stock,v.cost,v.integral,v.weight,v.volume,v.bar_code,v.group_bar_code,v.brokerage,v.brokerage_two,v.brokerage_three from fs_store_cart c left join fs_store_product p on p.product_id=c.product_id left join fs_store_product_attr_value v on v.id=c.product_attr_value_id where find_in_set(c.id,#{ids})")
+    @Select("select c.*,p.cate_id,p.product_name,p.warehouse_id as warehouse_id,p.warehouse_code as warehouse_code,p.image as product_image,p.temp_id,p.product_type,v.price,v.sku as product_attr_name,v.image as product_attr_image,v.stock,v.cost,v.integral,v.weight,v.volume,v.bar_code,v.group_bar_code,v.brokerage,v.brokerage_two,v.brokerage_three," +
+            "  v.usage_method,\n" +
+            "  v.frequency,\n" +
+            "  v.dosage"+
+            " from fs_store_cart c left join fs_store_product p on p.product_id=c.product_id left join fs_store_product_attr_value v on v.id=c.product_attr_value_id where find_in_set(c.id,#{ids})")
     List<FsStoreCartQueryVO> selectFsStoreCartListByIds(String ids);
     @Update("update  fs_store_cart set is_pay=1 where find_in_set(id,#{cartIds})")
     void updateIsPay(String cartIds);

+ 6 - 1
fs-service-system/src/main/java/com/fs/store/service/IFsPrescribeService.java

@@ -73,9 +73,14 @@ public interface IFsPrescribeService
 
     FsPrescribe selectFsPrescribeByOrderId(Long id);
 
-    String PrescribeImg(Long prescribeId);
+    String prescribeImg(Long prescribeId);
 
     String getFsPrescribeZyImg(PrescribeZyImgParam o);
 
     String getFsPrescribeXyImg(PrescribeXyImgParam o);
+
+    /**
+     * 生成处方图片和病历单
+     */
+    void generateDealImg();
 }

+ 183 - 137
fs-service-system/src/main/java/com/fs/store/service/impl/FsPrescribeServiceImpl.java

@@ -3,32 +3,35 @@ package com.fs.store.service.impl;
 import java.awt.*;
 import java.awt.image.BufferedImage;
 import java.io.*;
-import java.math.BigDecimal;
 import java.net.URL;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
-import cn.hutool.json.JSONUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONObject;
 import com.fs.common.config.FSSysConfig;
 import com.fs.common.core.domain.R;
 import com.fs.common.exception.CustomException;
 import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.OrderUtils;
+import com.fs.common.utils.ParseUtils;
 import com.fs.common.utils.StringUtils;
-import com.fs.store.bean.DrugV2;
-import com.fs.store.bean.PrescribeV2;
 import com.fs.store.domain.*;
-import com.fs.store.dto.FsPrescribeUsageDTO;
-import com.fs.store.mapper.FsInquiryOrderMapper;
-import com.fs.store.mapper.FsPrescribeDrugMapper;
+import com.fs.store.dto.FsStoreCartDTO;
+import com.fs.store.dto.MedicalRecordDTO;
 import com.fs.store.param.*;
 import com.fs.store.service.*;
-import com.fs.store.vo.FsInquiryOrderVO;
 import com.fs.store.vo.FsPrescribeVO;
 import com.fs.system.oss.CloudStorageService;
 import com.fs.system.oss.OSSFactory;
+import com.hc.openapi.tool.fastjson.JSON;
+import lombok.extern.slf4j.Slf4j;
+import net.coobird.thumbnailator.Thumbnails;
+import net.coobird.thumbnailator.resizers.configurations.Antialiasing;
+import org.apache.commons.lang.exception.ExceptionUtils;
+import org.apache.http.util.Asserts;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.fs.store.mapper.FsPrescribeMapper;
@@ -41,11 +44,10 @@ import javax.imageio.ImageIO;
  * @author fs
  * @date 2022-03-15
  */
+@Slf4j
 @Service
 public class FsPrescribeServiceImpl implements IFsPrescribeService
 {
-    @Autowired
-    private IPrescribeService prescribeService;
     @Autowired
     private FsPrescribeMapper fsPrescribeMapper;
     @Autowired
@@ -53,19 +55,11 @@ public class FsPrescribeServiceImpl implements IFsPrescribeService
     @Autowired
     private IFsPatientService patientService;
     @Autowired
-    private IFsUserService userService;
-    @Autowired
-    private FSSysConfig fsSysConfig;
+    private MedicalRecordService medicalRecordService;
     @Autowired
-    private IFsStoreOrderItemService orderItemService;
-    @Autowired
-    private IFsStoreProductService productService;
-
+    private IFsStoreOrderService fsStoreOrderService;
     @Autowired
-    private FsInquiryOrderMapper fsInquiryOrderMapper;
-
-    @Autowired
-    private FsPrescribeDrugMapper fsPrescribeDrugMapper;
+    private FSSysConfig fsSysConfig;
     /**
      * 查询处方
      *
@@ -141,6 +135,9 @@ public class FsPrescribeServiceImpl implements IFsPrescribeService
 
     @Override
     public R doPrescribe(long userId, FsPrescribeParam param) {
+        if(param.getPatientId() == null) {
+            throw new CustomException("患者必须选择!");
+        }
         FsStoreOrder order=orderService.selectFsStoreOrderById(param.getOrderId());
         if(order==null){
             throw  new CustomException("订单不存在");
@@ -206,107 +203,66 @@ public class FsPrescribeServiceImpl implements IFsPrescribeService
     }
 
     @Override
-    public String PrescribeImg(Long prescribeId) {
-        FsPrescribeVO f = fsPrescribeMapper.selectFsPrescribeByPrescribeIdVO(prescribeId);
-        if (f==null){
-            return "";
+    public String prescribeImg(Long prescribeId) {
+
+        FsPrescribe fsPrescribe = fsPrescribeMapper.selectFsPrescribeById(prescribeId);
+
+        Asserts.notNull(fsPrescribe, String.format("该处方 %d 无法找到!",prescribeId));
+
+        Long orderId = fsPrescribe.getOrderId();
+
+        Asserts.notNull(orderId,String.format("该处方 %d 对应订单号 %d 不存在!",prescribeId,orderId));
+
+        FsStoreOrder fsStoreOrder = orderService.selectFsStoreOrderById(orderId);
+
+        Asserts.notNull(fsStoreOrder,String.format("该处方 %d 对应订单号 %d 不存在!",prescribeId,orderId));
+
+        PrescribeXyImgParam param = new PrescribeXyImgParam();
+
+        param.setPrescribeId(String.valueOf(prescribeId));
+
+        // 门诊ID号
+        param.setOutpatientId(String.valueOf(prescribeId));
+        // 科别
+        param.setBedId("全科");
+        // 过敏史
+        param.setHistoryAllergic(fsPrescribe.getHistoryAllergic());
+        // 诊断
+        param.setDiagnose(fsPrescribe.getDiagnose());
+        // 开具日期
+        param.setTime(new Date());
+        // 药品目录
+        String itemJson = fsStoreOrder.getItemJson();
+        List<FsStoreOrderItem> fsStoreCartDTOS = JSONObject.parseArray(itemJson, FsStoreOrderItem.class);
+        List<FsPrescribeDrug> fsPrescribeDrugList = new ArrayList<>();
+        for (FsStoreOrderItem item : fsStoreCartDTOS) {
+            FsStoreCartDTO cartDTO = JSON.parseObject(item.getJsonInfo(),FsStoreCartDTO.class);
+            FsPrescribeDrug fsPrescribeDrug = new FsPrescribeDrug();
+            fsPrescribeDrug.setDrugName(cartDTO.getProductName());
+
+            // 使⽤⽅法
+            fsPrescribeDrug.setUsageMethod(cartDTO.getUsageMethod());
+            // 药品频次
+            fsPrescribeDrug.setUsageFrequencyUnit(String.format("每日 %s 次",cartDTO.getFrequency()));
+            // 用药数量
+            fsPrescribeDrug.setUsagePerUseCount(String.format("每次 %s 粒/片/支",cartDTO.getDosage()));
+            fsPrescribeDrug.setDrugNum(Long.valueOf(item.getNum()));
+            fsPrescribeDrugList.add(fsPrescribeDrug);
         }
-        FsStoreOrder fsStoreOrder = orderService.selectFsStoreOrderById(f.getOrderId());
-        FsInquiryOrderVO order = fsInquiryOrderMapper.selectFsInquiryOrderVOByOrderId(f.getInquiryOrderId());
-        if (f.getPrescribeImgUrl()==null||f.getPrescribeImgUrl().equals("")){
-            FsPrescribeDrug d = new FsPrescribeDrug();
-            d.setPrescribeId(f.getPrescribeId());
-            List<FsPrescribeDrug> list = fsPrescribeDrugMapper.selectFsPrescribeDrugList(d);
-//            List<FsPrescribeDrug> list =new ArrayList<>();
-//            for (FsPrescribeDrug fsPrescribeDrug : FsPrescribeDruglist) {
-//                if (fsPrescribeDrug.getIsDrug()!=null&&fsPrescribeDrug.getIsDrug()!=0){
-//                    list.add(fsPrescribeDrug);
-//                }else if (fsPrescribeDrug.getIsDrug()==null){
-//                    list.add(fsPrescribeDrug);
-//                }
-//            }
-            if (list.size()==0){
-                return "";
-            }
-            if (f.getPrescribeType()==1){
-                PrescribeXyImgParam o = new PrescribeXyImgParam();
-                o.setTotalPrice(fsStoreOrder.getPayPrice());
-                o.setTime(f.getCreateTime());
-                o.setPrescribeId(f.getPrescribeCode());
-                o.setPatientName(f.getPatientName());
-                o.setPatientGender(f.getPatientGender());
-                o.setPatientAge(f.getPatientAge());
-                o.setOutpatientId(f.getPrescribeCode());
-                o.setUrl(f.getPrescribeDoctorSignUrl());
-                o.setDrugDoctorUrl(f.getDrugDoctorSignUrl());
-                if (order!=null){
-                    o.setBedId(order.getDeptName());
-                }else {
-                    o.setBedId("中医科");
-                }
-                String remark="";
-                if (f.getUsageJson()!=null){
-                    FsPrescribeUsageDTO usage = JSONUtil.toBean(f.getUsageJson(), FsPrescribeUsageDTO.class);
-                    remark=usage.getRemark();
-                }
-                if (remark!=null&&remark!=""){
-                    o.setRemark(remark);
-                }else {
-                    o.setRemark("请按照用药说明书服用药品,如有不适,请及时就医!");
-                }
-                o.setHistoryAllergic(f.getHistoryAllergic());
-                o.setDiagnose(f.getDiagnose());
-                o.setPrescribeDrug(list); // 在这里添加处方药品列表的值
-                o.setDoctorName(f.getDoctorName());
-                o.setAuditDoctor(f.getDoctorDrugName());
-                o.setDispatcher("");
-                o.setCheckDoctor("");
-                o.setDoctorName(f.getDoctorName());
-                String s = getFsPrescribeXyImg(o);
-                FsPrescribe fsPrescribe = new FsPrescribe();
-                fsPrescribe.setRpUrl(s);
-                fsPrescribe.setPrescribeId(f.getPrescribeId());
-                fsPrescribeMapper.updateFsPrescribe(fsPrescribe);
-                return s;
-            }else if (f.getPrescribeType()==2){
-
-                FsPrescribeUsageDTO usage = JSONUtil.toBean(f.getUsageJson(), FsPrescribeUsageDTO.class);
-
-                // 设置字段值
-                PrescribeZyImgParam o = new PrescribeZyImgParam();
-                o.setTime(f.getCreateTime());
-
-                o.setPrescribeId(f.getPrescribeCode());
-                o.setPatientName(f.getPatientName());
-                o.setPatientGender(f.getPatientGender());
-                o.setPatientAge(f.getPatientAge());
-                o.setPatientTel(f.getPatientTel());
-                o.setPrescribeDoctorName(f.getPrescribeDoctorName());
-                o.setUserName(fsStoreOrder.getRealName()); //发货地址
-                o.setUserPhone(fsStoreOrder.getUserPhone()); //收货人手机
-                o.setUserAddress(fsStoreOrder.getUserAddress()); //收货地址
-                o.setDiagnose(f.getDiagnose());
-                o.setPrescribeDrug(list); // 在这里添加处方药品列表的值
-                o.setEat(usage.getUsageMethod());
-                o.setUsageFrequencyUnit(usage.getUsageFrequencyUnit());
-                o.setRemark(usage.getRemark());
-                o.setDoctorName(f.getDoctorName());
-                o.setCheck(f.getDoctorDrugName());
-                if (usage.getCounts()!=null){
-                    o.setSize(usage.getCounts().toString());
-                }
-                o.setUrl(f.getPrescribeDoctorSignUrl());
-                o.setDrugDoctorUrl(f.getDrugDoctorSignUrl());
-                o.setTotalPrice(fsStoreOrder.getPayPrice());
-                String s = getFsPrescribeZyImg(o);
-                FsPrescribe fsPrescribe = new FsPrescribe();
-                fsPrescribe.setRpUrl(s);
-                fsPrescribe.setPrescribeId(f.getPrescribeId());
-                fsPrescribeMapper.updateFsPrescribe(fsPrescribe);
-                return s;
-            }
-        }
-        return f.getPrescribeImgUrl();
+        param.setPrescribeDrug(fsPrescribeDrugList);
+
+        param.setPatientName(fsPrescribe.getPatientName());
+        param.setPatientGender(fsPrescribe.getPatientGender());
+        param.setPatientAge(fsPrescribe.getPatientAge());
+
+        // 医生名称
+        param.setDoctorName(fsPrescribe.getDoctorName());
+        // 订单总价
+        param.setTotalPrice(fsStoreOrder.getTotalPrice());
+        param.setAuditDoctor(fsPrescribe.getAuditDoctor());
+        param.setDrugDoctorUrl(fsSysConfig.getDrugDoctorSignImgUrl());
+        param.setUrl(fsSysConfig.getDoctorSignImgUrl());
+        return getFsPrescribeXyImg(param);
     }
 
 
@@ -362,7 +318,6 @@ public class FsPrescribeServiceImpl implements IFsPrescribeService
         penDrawString(pen,o.getUsageFrequencyUnit(),135,1240);
         penDrawString(pen,o.getRemark(),110,1288);
 
-        // penDrawString(pen,o.getDoctorName(),152,1378);
         if (o.getUrl()!=null){
             try {
                 URL imageUrl = new URL(o.getUrl());
@@ -386,7 +341,6 @@ public class FsPrescribeServiceImpl implements IFsPrescribeService
                 throw new CustomException("获取药师签名图片失败");
             }
         }
-//        penDrawString(pen,o.getCheck(),348,1378);
         penDrawString(pen,o.getSize(),620,1378);
         if (o.getTotalPrice()!=null){
             penDrawString(pen,o.getTotalPrice().toString(),370,1452);
@@ -406,8 +360,7 @@ public class FsPrescribeServiceImpl implements IFsPrescribeService
 
     @Override
     public String getFsPrescribeXyImg(PrescribeXyImgParam o) {
-        // File mb = new File(System.getProperty("user.dir")+"\\xycf.jpg");
-        File mb = new File("C:\\fs\\xycf.jpg");
+        File mb = new File(fsSysConfig.getPrescribeTemplateImgPath());
         if (!mb.exists()) {
             // 创建目录
             throw  new CustomException("模板文件不存在");
@@ -443,12 +396,9 @@ public class FsPrescribeServiceImpl implements IFsPrescribeService
         penDrawString(pen,new SimpleDateFormat("yyyy-MM-dd").format(o.getTime()),400,257);
         List<FsPrescribeDrug> Drug = o.getPrescribeDrug();
         int size=Drug.size();
-//        BigDecimal price=BigDecimal.valueOf(0);
         for (int i = 0; i < size; i++) {
             FsPrescribeDrug d = Drug.get(i);
             String drugName = d.getDrugName();
-            BigDecimal drugPrice = d.getDrugPrice().multiply(BigDecimal.valueOf(d.getDrugNum()));
-//            price= price.add(drugPrice);
             if (drugName.length()>30){
                 drugName = drugName.substring(0, 30)+"...";
             }
@@ -467,10 +417,13 @@ public class FsPrescribeServiceImpl implements IFsPrescribeService
         penDrawString(pen,o.getRemark(),62,651);
         if (o.getUrl()!=null){
             try {
-                URL   imageUrl = new URL(o.getUrl());
-                pen.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
-                BufferedImage img = ImageIO.read(imageUrl);
-                pen.drawImage(img, 65, 688, 88, 40, null);
+                URL imageUrl = new URL(o.getUrl());
+                BufferedImage scaledImg = Thumbnails.of(imageUrl)
+                        .size(120, 55)
+                        .outputQuality(1.0)
+                        .antialiasing(Antialiasing.ON)
+                        .asBufferedImage();
+                pen.drawImage(scaledImg, 65, 688, null);
             } catch (Exception e) {
                 throw new CustomException("获取签名图片失败");
             }
@@ -482,9 +435,13 @@ public class FsPrescribeServiceImpl implements IFsPrescribeService
         if (o.getDrugDoctorUrl()!=null){
             try {
                 URL   imageUrl = new URL(o.getDrugDoctorUrl());
-                BufferedImage img = ImageIO.read(imageUrl);
-                pen.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
-                pen.drawImage(img, 90, 730, 88, 40, null);
+                BufferedImage scaledImg = Thumbnails.of(imageUrl)
+                        .size(120, 55)
+                        .outputQuality(1.0)
+                        .antialiasing(Antialiasing.ON)
+                        .asBufferedImage();
+
+                pen.drawImage(scaledImg, 90, 730, null);
             } catch (Exception e) {
                 throw new CustomException("获取药师签名图片失败");
             }
@@ -501,8 +458,97 @@ public class FsPrescribeServiceImpl implements IFsPrescribeService
         }
         InputStream inputStream = new ByteArrayInputStream(os.toByteArray());
         CloudStorageService storage = OSSFactory.build();
-        String url = storage.uploadSuffix(inputStream, ".jpg");
-        return url;
+        return storage.uploadSuffix(inputStream, ".jpg");
+    }
+
+    @Override
+    public void generateDealImg() {
+        // 获取待处理数据
+        List<FsPrescribe> list = fsPrescribeMapper.selectPenddingData();
+        for (FsPrescribe fsPrescribe : list) {
+            String rpUrl = null;
+            try{
+                rpUrl = this.prescribeImg(fsPrescribe.getPrescribeId());
+            }catch (Exception e) {
+                log.error("生成处方失败!原因:{}",e.getMessage(),e);
+                fsPrescribe.setFailMsg(ExceptionUtils.getFullStackTrace(e));
+            }
+            // 生成处方图片
+            log.info("rpUrl: {}",rpUrl);
+
+            fsPrescribe.setRpUrl(rpUrl);
+            // 生成病历图片
+            MedicalRecordDTO medicalRecordDTO = new MedicalRecordDTO();
+            medicalRecordDTO.setVisitDate(new Date());
+            medicalRecordDTO.setOutpatientNo(String.valueOf(fsPrescribe.getPrescribeId()));
+            medicalRecordDTO.setDepartment("全科");
+            medicalRecordDTO.setPaymentType("自费缴费");
+
+            medicalRecordDTO.setPatientName(fsPrescribe.getPatientName());
+            if(StringUtils.isNotBlank(fsPrescribe.getPatientGender())){
+                if("1".equals(fsPrescribe.getPatientGender())){
+                    medicalRecordDTO.setGender("男");
+                } else {
+                    medicalRecordDTO.setGender("女");
+                }
+            }
+            medicalRecordDTO.setAge(Integer.valueOf(fsPrescribe.getPatientAge()));
+            medicalRecordDTO.setHeight("-");
+            medicalRecordDTO.setWeight("-");
+
+            FsStoreOrder fsStoreOrder = fsStoreOrderService.selectFsStoreOrderById(fsPrescribe.getOrderId());
+            if(ObjectUtil.isNotNull(fsStoreOrder)) {
+                medicalRecordDTO.setAddress(ParseUtils.parseAddress(fsStoreOrder.getUserAddress()));
+                medicalRecordDTO.setPhone(ParseUtils.parsePhone(fsStoreOrder.getUserPhone()));
+
+                // 药品目录
+                String itemJson = fsStoreOrder.getItemJson();
+                List<FsStoreOrderItem> fsStoreCartDTOS = JSONObject.parseArray(itemJson, FsStoreOrderItem.class);
+                List<FsPrescribeDrug> fsPrescribeDrugList = new ArrayList<>();
+                StringBuilder prescription = new StringBuilder();
+
+                int i=1;
+                prescription.append("\n");
+                for (FsStoreOrderItem item : fsStoreCartDTOS) {
+                    FsStoreCartDTO cartDTO = JSON.parseObject(item.getJsonInfo(),FsStoreCartDTO.class);
+
+                    prescription.append(i++).append(".").append(cartDTO.getProductName())
+                                    .append("\t\t\t").append(item.getNum())
+                                    .append("\n")
+                                    .append("Sig:\t\t\t").append(cartDTO.getUsageMethod())
+                            .append("\t").append(String.format("每日 %s 次",cartDTO.getFrequency()))
+                                    .append("\t").append(String.format("每次 %s 粒/片/支",cartDTO.getDosage()))
+                                    .append("\n");
+                }
+                medicalRecordDTO.setPrescription(prescription.toString());
+                medicalRecordDTO.setDrugList(fsPrescribeDrugList);
+            }
+
+            medicalRecordDTO.setChiefComplaint(fsPrescribe.getChiefComplaint());
+            medicalRecordDTO.setPresentIllness(fsPrescribe.getNowIllness());
+            medicalRecordDTO.setPastHistory(fsPrescribe.getHistoryIllness());
+            medicalRecordDTO.setAllergyHistory(fsPrescribe.getHistoryAllergic());
+
+            medicalRecordDTO.setVitalSigns("");
+            medicalRecordDTO.setAuxiliaryExam("");
+            medicalRecordDTO.setDiagnosis(fsPrescribe.getDiagnose());
+            medicalRecordDTO.setMedicalAdvice("请遵照医嘱用药,如有不适,请及时就医!");
+            medicalRecordDTO.setTreatmentPlan("");
+            medicalRecordDTO.setHealthEducation("");
+            String medicalUrl = null;
+            try{
+
+
+                medicalUrl = medicalRecordService.generateMedicalRecord(medicalRecordDTO);
+            }catch (Exception e){
+                log.error("生成病历单图片失败!原因:{}",e.getMessage(),e);
+                fsPrescribe.setFailMsg(fsPrescribe.getFailMsg()+"\n"+ ExceptionUtils.getFullStackTrace(e));
+            }
+
+            fsPrescribe.setMedicalRecordUrl(medicalUrl);
+            fsPrescribe.setGenerateStatus(2);
+            fsPrescribeMapper.updateFsPrescribe(fsPrescribe);
+        }
     }
 
     public void penDrawString( Graphics2D pen,String value,int x,int y){

+ 18 - 3
fs-service-system/src/main/java/com/fs/store/service/impl/FsShippingTemplatesServiceImpl.java

@@ -1,6 +1,7 @@
 package com.fs.store.service.impl;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
@@ -18,11 +19,14 @@ import com.fs.store.dto.RegionInfoDTO;
 import com.fs.store.mapper.FsShippingTemplatesFreeMapper;
 import com.fs.store.mapper.FsShippingTemplatesRegionMapper;
 import com.fs.store.param.FsShippingTemplatesAddEditParam;
+import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.fs.store.mapper.FsShippingTemplatesMapper;
 import com.fs.store.domain.FsShippingTemplates;
 import com.fs.store.service.IFsShippingTemplatesService;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 运费模板Service业务层处理
@@ -119,6 +123,7 @@ public class FsShippingTemplatesServiceImpl implements IFsShippingTemplatesServi
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
     public R addOrEdit(FsShippingTemplatesAddEditParam fsShippingTemplates) {
         if(fsShippingTemplates.getAppoint()==1&& fsShippingTemplates.getAppointInfo().isEmpty()){
             throw new CustomException("请指定包邮地区");
@@ -158,6 +163,8 @@ public class FsShippingTemplatesServiceImpl implements IFsShippingTemplatesServi
     private void saveRegion(FsShippingTemplatesAddEditParam param,Long tempId){
         fsShippingTemplatesRegionMapper.deleteFsShippingTemplatesRegionByTempId(tempId);
         List<RegionInfoDTO> regionInfo = param.getRegionInfo();
+        List<FsShippingTemplatesRegion> fsShippingTemplatesRegions = new ArrayList<>();
+
         for (RegionInfoDTO regionInfoDto : regionInfo){
             String uni = IdUtil.simpleUUID();
             if(regionInfoDto.getRegion() != null && !regionInfoDto.getRegion().isEmpty()){
@@ -173,7 +180,7 @@ public class FsShippingTemplatesServiceImpl implements IFsShippingTemplatesServi
                             shippingTemplatesRegion.setType(param.getType());
                             shippingTemplatesRegion.setProvinceId(Long.valueOf(regionDto.getCityId()));
                             shippingTemplatesRegion.setCityId(Long.valueOf(childrenDtp.getCityId()));
-                            fsShippingTemplatesRegionMapper.insertFsShippingTemplatesRegion(shippingTemplatesRegion);
+                            fsShippingTemplatesRegions.add(shippingTemplatesRegion);
                         }
                     }else{
 
@@ -185,11 +192,13 @@ public class FsShippingTemplatesServiceImpl implements IFsShippingTemplatesServi
                         shippingTemplatesRegion.setContinuePrice(new BigDecimal(regionInfoDto.getContinuePrice()));
                         shippingTemplatesRegion.setType(param.getType());
                         shippingTemplatesRegion.setProvinceId(Long.valueOf(regionDto.getCityId()));
-                        fsShippingTemplatesRegionMapper.insertFsShippingTemplatesRegion(shippingTemplatesRegion);
+                        fsShippingTemplatesRegions.add(shippingTemplatesRegion);
                     }
                 }
             }
         }
+
+        fsShippingTemplatesRegionMapper.batchSaveRegions(fsShippingTemplatesRegions);
     }
 
     /**
@@ -205,6 +214,8 @@ public class FsShippingTemplatesServiceImpl implements IFsShippingTemplatesServi
         }
         fsShippingTemplatesFreeMapper.deleteFsShippingTemplatesFreeByTempId(tempId);
         List<AppointInfoDTO> appointInfo = param.getAppointInfo();
+        List<FsShippingTemplatesFree> shippingTemplatesFreeList = new ArrayList<>();
+
         for (AppointInfoDTO appointInfoDto : appointInfo){
             if(appointInfoDto.getPlace() != null && !appointInfoDto.getPlace().isEmpty()){
                 for (RegionDTO regionDto : appointInfoDto.getPlace()){
@@ -218,11 +229,15 @@ public class FsShippingTemplatesServiceImpl implements IFsShippingTemplatesServi
                                     .provinceId(Long.valueOf(regionDto.getCityId()))
                                     .cityId(Long.valueOf(childrenDto.getCityId()))
                                     .build();
-                            fsShippingTemplatesFreeMapper.insertFsShippingTemplatesFree(shippingTemplatesFree);
+                            shippingTemplatesFreeList.add(shippingTemplatesFree);
                         }
                     }
                 }
             }
         }
+
+        if(CollectionUtils.isNotEmpty(shippingTemplatesFreeList)) {
+            fsShippingTemplatesFreeMapper.saveBatch(shippingTemplatesFreeList);
+        }
     }
 }

+ 15 - 0
fs-service-system/src/main/java/com/fs/store/service/impl/FsStoreOrderServiceImpl.java

@@ -941,6 +941,10 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
                 fsStoreCartDTO.setWarehouseCode(vo.getWarehouseCode());
                 fsStoreCartDTO.setWarehouseId(vo.getWarehouseId());
 
+                fsStoreCartDTO.setUsageMethod(vo.getUsageMethod());
+                fsStoreCartDTO.setFrequency(vo.getFrequency());
+                fsStoreCartDTO.setDosage(vo.getDosage());
+
                 if(StringUtils.isEmpty(vo.getProductAttrImage())){
                     fsStoreCartDTO.setImage(vo.getProductImage());
                 }
@@ -1632,6 +1636,11 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
                 fsStoreCartDTO.setNum(vo.getCartNum());
                 fsStoreCartDTO.setBarCode(vo.getBarCode());
                 fsStoreCartDTO.setGroupBarCode(vo.getGroupBarCode());
+
+                fsStoreCartDTO.setDosage(vo.getDosage());
+                fsStoreCartDTO.setUsageMethod(vo.getUsageMethod());
+                fsStoreCartDTO.setFrequency(vo.getFrequency());
+
                 if(StringUtils.isEmpty(vo.getProductAttrImage())){
                     fsStoreCartDTO.setImage(vo.getProductImage());
                 }
@@ -1859,10 +1868,16 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
             else if(order.getIsPrescribe().equals(1)){
                 //是否已开方
                 FsPrescribe prescribe=prescribeService.selectFsPrescribeByOrderId(order.getId());
+
                 if(prescribe!=null&&prescribe.getStatus()==1){
                     createOmsOrder(order.getId());
                 }
             }
+            FsPrescribe prescribe=prescribeService.selectFsPrescribeByOrderId(order.getId());
+            if(prescribe != null) {
+                prescribe.setGenerateStatus(1);
+                prescribeService.updateFsPrescribe(prescribe);
+            }
         }
         catch (Exception e){
             logger.error("payConfirm: {} ",e.getMessage(),e);

+ 6 - 0
fs-service-system/src/main/java/com/fs/store/vo/FsPrescribeVO.java

@@ -40,6 +40,8 @@ public class FsPrescribeVO implements Serializable {
     @Excel(name = "药师名称")
     private String  doctorDrugName;
 
+    @Excel(name = "主述")
+    private String chiefComplaint;
     /** 用户ID */
     @Excel(name = "用户ID")
     private Long userId;
@@ -177,4 +179,8 @@ public class FsPrescribeVO implements Serializable {
     private String prescribeCodeUrl;
     private String icdCode;
     private String userPhone;
+
+    private String medicalRecordUrl;
+    private String rpUrl;
+
 }

+ 12 - 0
fs-service-system/src/main/java/com/fs/store/vo/FsStoreCartQueryVO.java

@@ -72,4 +72,16 @@ import java.math.BigDecimal;
      */
     private String warehouseCode;
 
+    /**
+     * 服用方法
+     */
+    private String usageMethod;
+    /**
+     * 一日几次
+     */
+    private String frequency;
+    /**
+     * 用药数量
+     */
+    private String dosage;
 }

+ 4 - 1
fs-service-system/src/main/resources/application-config.yml

@@ -42,7 +42,10 @@ fsConfig:
   accessKeyID: 1734570804
   accessKeySecret: 8791c9bdb0b14e23866c631786f76fac
   callbackUrl: https://api.yjf.runtzh.com/app/prescribe/presribeNotify
-  # 处方接口g
+  # 处方接口
+  doctorSignImgUrl: "https://cos.his.cdwjyyh.com/fs/20241015/8b3d143c5f9a4d56a210daece01cf037.png"
+  drugDoctorSignImgUrl: "https://cos.his.cdwjyyh.com/fs/20250621/c61b68fe9e114bbfa07387b8fbb76e8a.png"
+  prescribeTemplateImgPath: "/home/software/fs-admin/config/xycf.jpg"
 #  prescribeUrl: https://app3.nxk520.com/platform-shenfang/nethosp/webservice/jsonapi
 #  actId: uporder
 #  appId: 1661496555

+ 7 - 1
fs-service-system/src/main/resources/mapper/store/FsPrescribeMapper.xml

@@ -36,10 +36,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="doctorId"    column="doctor_id"    />
         <result property="createTime"    column="create_time"    />
         <result property="status"    column="status"    />
+        <result property="medicalRecordUrl"    column="medical_record_url"    />
     </resultMap>
 
     <sql id="selectFsPrescribeVo">
-        select prescribe_id, prescribe_type, order_id, user_id, patient_id, rp_id, pharmacy_code, pharmacy_name, chief_complaint, now_illness, history_illness, patient_age, patient_name, weight, is_history_allergic, history_allergic, liver_unusual, renal_unusual, lactation_flag, patient_tel, patient_gender, record_pic, rp_url, rp_create_time,audit_reason, diagnose, drugs, doctor_name, doctor_id, create_time,status from fs_prescribe
+        select prescribe_id, prescribe_type, order_id, user_id, patient_id, rp_id, pharmacy_code, pharmacy_name, chief_complaint, now_illness, history_illness, patient_age, patient_name, weight, is_history_allergic, history_allergic, liver_unusual, renal_unusual, lactation_flag, patient_tel, patient_gender, record_pic, rp_url, rp_create_time,audit_reason, diagnose, drugs, doctor_name, doctor_id, create_time,status,medical_record_url,generate_status,fail_msg from fs_prescribe
     </sql>
 
     <select id="selectFsPrescribeList" parameterType="FsPrescribe" resultMap="FsPrescribeResult">
@@ -114,6 +115,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="doctorId != null">doctor_id,</if>
             <if test="createTime != null">create_time,</if>
             <if test="status != null">status,</if>
+            <if test="medicalRecordUrl != null">medical_record_url,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="prescribeType != null">#{prescribeType},</if>
@@ -146,6 +148,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="doctorId != null">#{doctorId},</if>
             <if test="createTime != null">#{createTime},</if>
             <if test="status != null">#{status},</if>
+            <if test="medicalRecordUrl != null">#{medicalRecordUrl},</if>
          </trim>
     </insert>
 
@@ -182,6 +185,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="doctorId != null">doctor_id = #{doctorId},</if>
             <if test="createTime != null">create_time = #{createTime},</if>
             <if test="status != null">status = #{status},</if>
+            <if test="medicalRecordUrl != null">medical_record_url = #{medicalRecordUrl},</if>
+            <if test="generateStatus != null">generate_status = #{generateStatus},</if>
+            <if test="failMsg != null">fail_msg = #{failMsg},</if>
         </trim>
         where prescribe_id = #{prescribeId}
     </update>

+ 28 - 7
fs-service-system/src/main/resources/mapper/store/FsShippingTemplatesFreeMapper.xml

@@ -3,7 +3,7 @@
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fs.store.mapper.FsShippingTemplatesFreeMapper">
-    
+
     <resultMap type="FsShippingTemplatesFree" id="FsShippingTemplatesFreeResult">
         <result property="id"    column="id"    />
         <result property="tempId"    column="temp_id"    />
@@ -20,7 +20,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="selectFsShippingTemplatesFreeList" parameterType="FsShippingTemplatesFree" resultMap="FsShippingTemplatesFreeResult">
         <include refid="selectFsShippingTemplatesFreeVo"/>
-        <where>  
+        <where>
             <if test="tempId != null "> and temp_id = #{tempId}</if>
             <if test="provinceId != null "> and province_id = #{provinceId}</if>
             <if test="cityId != null "> and city_id = #{cityId}</if>
@@ -29,12 +29,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="type != null "> and type = #{type}</if>
         </where>
     </select>
-    
+
     <select id="selectFsShippingTemplatesFreeById" parameterType="Long" resultMap="FsShippingTemplatesFreeResult">
         <include refid="selectFsShippingTemplatesFreeVo"/>
         where id = #{id}
     </select>
-        
+
     <insert id="insertFsShippingTemplatesFree" parameterType="FsShippingTemplatesFree" useGeneratedKeys="true" keyProperty="id">
         insert into fs_shipping_templates_free
         <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -54,6 +54,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="type != null">#{type},</if>
          </trim>
     </insert>
+    <insert id="saveBatch">
+        <foreach collection="list" item="item" index="index" separator=";">
+            insert into fs_shipping_templates_free
+            <trim prefix="(" suffix=")" suffixOverrides=",">
+                <if test="item.tempId != null">temp_id,</if>
+                <if test="item.provinceId != null">province_id,</if>
+                <if test="item.cityId != null">city_id,</if>
+                <if test="item.number != null">number,</if>
+                <if test="item.price != null">price,</if>
+                <if test="item.type != null">type,</if>
+            </trim>
+            <trim prefix="values (" suffix=")" suffixOverrides=",">
+                <if test="item.tempId != null">#{item.tempId},</if>
+                <if test="item.provinceId != null">#{item.provinceId},</if>
+                <if test="item.cityId != null">#{item.cityId},</if>
+                <if test="item.number != null">#{item.number},</if>
+                <if test="item.price != null">#{item.price},</if>
+                <if test="item.type != null">#{item.type},</if>
+            </trim>
+        </foreach>
+    </insert>
 
     <update id="updateFsShippingTemplatesFree" parameterType="FsShippingTemplatesFree">
         update fs_shipping_templates_free
@@ -73,10 +94,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </delete>
 
     <delete id="deleteFsShippingTemplatesFreeByIds" parameterType="String">
-        delete from fs_shipping_templates_free where id in 
+        delete from fs_shipping_templates_free where id in
         <foreach item="id" collection="array" open="(" separator="," close=")">
             #{id}
         </foreach>
     </delete>
-    
-</mapper>
+
+</mapper>

+ 32 - 7
fs-service-system/src/main/resources/mapper/store/FsShippingTemplatesRegionMapper.xml

@@ -3,7 +3,7 @@
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fs.store.mapper.FsShippingTemplatesRegionMapper">
-    
+
     <resultMap type="FsShippingTemplatesRegion" id="FsShippingTemplatesRegionResult">
         <result property="id"    column="id"    />
         <result property="provinceId"    column="province_id"    />
@@ -22,7 +22,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="selectFsShippingTemplatesRegionList" parameterType="FsShippingTemplatesRegion" resultMap="FsShippingTemplatesRegionResult">
         <include refid="selectFsShippingTemplatesRegionVo"/>
-        <where>  
+        <where>
             <if test="provinceId != null "> and province_id = #{provinceId}</if>
             <if test="tempId != null "> and temp_id = #{tempId}</if>
             <if test="cityId != null "> and city_id = #{cityId}</if>
@@ -33,12 +33,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="type != null "> and type = #{type}</if>
         </where>
     </select>
-    
+
     <select id="selectFsShippingTemplatesRegionById" parameterType="Long" resultMap="FsShippingTemplatesRegionResult">
         <include refid="selectFsShippingTemplatesRegionVo"/>
         where id = #{id}
     </select>
-        
+
     <insert id="insertFsShippingTemplatesRegion" parameterType="FsShippingTemplatesRegion" useGeneratedKeys="true" keyProperty="id">
         insert into fs_shipping_templates_region
         <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -62,6 +62,31 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="type != null">#{type},</if>
          </trim>
     </insert>
+    <insert id="batchSaveRegions">
+        <foreach collection="list" index="index" item="item" separator=";">
+            insert into fs_shipping_templates_region
+            <trim prefix="(" suffix=")" suffixOverrides=",">
+                <if test="item.provinceId != null">province_id,</if>
+                <if test="item.tempId != null">temp_id,</if>
+                <if test="item.cityId != null">city_id,</if>
+                <if test="item.first != null">first,</if>
+                <if test="item.firstPrice != null">first_price,</if>
+                <if test="item.continues != null">continues,</if>
+                <if test="item.continuePrice != null">continue_price,</if>
+                <if test="item.type != null">type,</if>
+            </trim>
+            <trim prefix="values (" suffix=")" suffixOverrides=",">
+                <if test="item.provinceId != null">#{item.provinceId},</if>
+                <if test="item.tempId != null">#{item.tempId},</if>
+                <if test="item.cityId != null">#{item.cityId},</if>
+                <if test="item.first != null">#{item.first},</if>
+                <if test="item.firstPrice != null">#{item.firstPrice},</if>
+                <if test="item.continues != null">#{item.continues},</if>
+                <if test="item.continuePrice != null">#{item.continuePrice},</if>
+                <if test="item.type != null">#{item.type},</if>
+            </trim>
+        </foreach>
+    </insert>
 
     <update id="updateFsShippingTemplatesRegion" parameterType="FsShippingTemplatesRegion">
         update fs_shipping_templates_region
@@ -83,10 +108,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </delete>
 
     <delete id="deleteFsShippingTemplatesRegionByIds" parameterType="String">
-        delete from fs_shipping_templates_region where id in 
+        delete from fs_shipping_templates_region where id in
         <foreach item="id" collection="array" open="(" separator="," close=")">
             #{id}
         </foreach>
     </delete>
-    
-</mapper>
+
+</mapper>