diff --git a/src/main/java/com/syjiaer/clinic/server/common/util/ParmsUtil.java b/src/main/java/com/syjiaer/clinic/server/common/util/ParmsUtil.java index b8a45d5..26ad542 100644 --- a/src/main/java/com/syjiaer/clinic/server/common/util/ParmsUtil.java +++ b/src/main/java/com/syjiaer/clinic/server/common/util/ParmsUtil.java @@ -49,6 +49,15 @@ public class ParmsUtil { T t = JSON.parseObject(JSON.toJSONString(map.get(key)), clazz); return t; } + + public T getObject(String key, Class clazz,String empty_message){ + T t = getObject(key, clazz); + if(t==null){ + throw new MessageException(empty_message); + } + return t; + } + public Map getMap(String key){ Map map = getMap(); if(isEmpty(key)){ diff --git a/src/main/java/com/syjiaer/clinic/server/controller/item/ItemController.java b/src/main/java/com/syjiaer/clinic/server/controller/item/ItemController.java index b3fb0be..78d4b6f 100644 --- a/src/main/java/com/syjiaer/clinic/server/controller/item/ItemController.java +++ b/src/main/java/com/syjiaer/clinic/server/controller/item/ItemController.java @@ -6,6 +6,8 @@ import com.syjiaer.clinic.server.common.vo.Page; import com.syjiaer.clinic.server.common.vo.Result; import com.syjiaer.clinic.server.controller.BaseController; import com.syjiaer.clinic.server.entity.item.Item; +import com.syjiaer.clinic.server.entity.item.ItemGroupList; +import com.syjiaer.clinic.server.entity.item.param.ItemParam; import com.syjiaer.clinic.server.entity.item.vo.ItemSearchVo; import com.syjiaer.clinic.server.service.item.ItemService; import org.springframework.beans.factory.annotation.Autowired; @@ -76,5 +78,16 @@ public class ItemController extends BaseController { return success(itemService.search(keyword)); } + + @RequestMapping("/handleItemGroupList") + public Result handleItemGroupList() { + List itemGroupList = parmsUtil.getList("list", ItemGroupList.class,"请求参数list不能为空"); + + ItemParam itemParam = parmsUtil.getObject("info", ItemParam.class,"请求参数info不能为空"); + + itemService.saveGroup(itemGroupList,itemParam); + + return success(); + } } \ No newline at end of file diff --git a/src/main/java/com/syjiaer/clinic/server/entity/item/ItemGroupList.java b/src/main/java/com/syjiaer/clinic/server/entity/item/ItemGroupList.java new file mode 100644 index 0000000..66f4f8d --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/item/ItemGroupList.java @@ -0,0 +1,62 @@ +package com.syjiaer.clinic.server.entity.item; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.math.BigDecimal; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; +/** + *

+ * 诊疗项目子表 + *

+ * + * @author NiuZiYuan + * @since 2025-05-21 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +@TableName("item_group_list") +@ApiModel(value = "ItemGroupList对象", description = "诊疗项目子表") +public class ItemGroupList implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("自增主键") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("项目名称") + private String name; + + @ApiModelProperty("售价") + private BigDecimal unitPrice; + + @ApiModelProperty("进货价") + private BigDecimal purchaseUnitPrice; + + @ApiModelProperty("诊疗项目(小)") + private String itemJson; + + @ApiModelProperty("商品表ids") + private String goodsIds; + + @ApiModelProperty("逻辑删除") + private Boolean delFlag; + + @ApiModelProperty("医保目录编码") + private String socialCode; + + @ApiModelProperty("单位") + private String unit; + + @ApiModelProperty("item表主键") + private Integer itemId; +} diff --git a/src/main/java/com/syjiaer/clinic/server/entity/item/param/ItemParam.java b/src/main/java/com/syjiaer/clinic/server/entity/item/param/ItemParam.java new file mode 100644 index 0000000..9d7530a --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/item/param/ItemParam.java @@ -0,0 +1,10 @@ +package com.syjiaer.clinic.server.entity.item.param; + +import lombok.Data; + +@Data +public class ItemParam { + private Integer id; + private String name; + private String unit; +} diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/item/ItemGroupListMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/item/ItemGroupListMapper.java new file mode 100644 index 0000000..3e07811 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/mapper/item/ItemGroupListMapper.java @@ -0,0 +1,18 @@ +package com.syjiaer.clinic.server.mapper.item; + +import com.syjiaer.clinic.server.entity.item.ItemGroupList; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + + +/** + *

+ * 诊疗项目子表 Mapper 接口 + *

+ * + * @author NiuZiYuan + * @since 2025-05-21 + */ +public interface ItemGroupListMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/syjiaer/clinic/server/service/item/ItemService.java b/src/main/java/com/syjiaer/clinic/server/service/item/ItemService.java index 3abe85d..5e5c337 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/item/ItemService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/item/ItemService.java @@ -4,15 +4,22 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.syjiaer.clinic.server.common.enums.ChrgitmLvEnum; import com.syjiaer.clinic.server.common.exception.MessageException; +import com.syjiaer.clinic.server.common.util.DebugUtil; import com.syjiaer.clinic.server.common.util.PinYinUtil; import com.syjiaer.clinic.server.common.vo.Page; import com.syjiaer.clinic.server.entity.item.Item; +import com.syjiaer.clinic.server.entity.item.ItemGroupList; +import com.syjiaer.clinic.server.entity.item.param.ItemParam; import com.syjiaer.clinic.server.entity.item.vo.ItemSearchVo; import com.syjiaer.clinic.server.entity.manager.ManagerUser; import com.syjiaer.clinic.server.entity.social.SocialDirectoryUpinfo; +import com.syjiaer.clinic.server.entity.social.SocialItem; +import com.syjiaer.clinic.server.mapper.item.ItemGroupListMapper; import com.syjiaer.clinic.server.mapper.item.ItemMapper; import com.syjiaer.clinic.server.mapper.social.SocialDirectoryUpinfoMapper; +import com.syjiaer.clinic.server.mapper.social.SocialItemMapper; import com.syjiaer.clinic.server.service.BaseService; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -22,7 +29,10 @@ import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; +@Slf4j @Service public class ItemService extends BaseService { @Autowired @@ -30,6 +40,11 @@ public class ItemService extends BaseService { @Autowired private SocialDirectoryUpinfoMapper socialDirectoryUpinfoMapper; + @Autowired + private ItemGroupListMapper itemGroupListMapper; + @Autowired + private SocialItemMapper socialItemMapper; + /* * 获取项目列表 * @param pageNum 页码 @@ -182,4 +197,89 @@ public class ItemService extends BaseService { itemMapper.update(null, updateWrapper); } } + + @Transactional(rollbackFor = Exception.class) + public void saveGroup(List list, ItemParam itemParam) { + ManagerUser managerUser = getManagerUser(); + + QueryWrapper itemQueryWrapper = new QueryWrapper<>(); + itemQueryWrapper.ne("del_flag", 1); + + QueryWrapper itemGroupListqueryWrapper = new QueryWrapper<>(); + itemGroupListqueryWrapper.ne("del_flag",1); + + Item itemInfo = itemMapper.selectOne(itemQueryWrapper); + + if(itemInfo==null){ + itemInfo=new Item(); + } + itemInfo.setItemName(itemParam.getName()); + itemInfo.setUnit(itemParam.getUnit()); + itemInfo.setIsGroup(true); + itemInfo.setPurchaseUnitPrice(new BigDecimal(0)); + itemInfo.setUnitPrice(new BigDecimal(0)); + itemInfo.setCreateDatetime(LocalDateTime.now()); + itemInfo.setCreateBy(managerUser.getName()); + String pinyinFull = PinYinUtil.getPinyinFull(itemInfo.getItemName()); + pinyinFull = pinyinFull.toUpperCase(); + itemInfo.setPinyinFull(pinyinFull); + itemInfo.setPinyinFirst(PinYinUtil.getPinyinFirstLetters(itemInfo.getItemName()).toUpperCase()); + itemInfo.setIsGroup(true); + if(itemInfo.getId()!= null && itemInfo.getId()>0){ + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("item_id",itemParam.getId()); + updateWrapper.set("del_flag",true); + itemGroupListMapper.update(updateWrapper); + } + + itemMapper.insertOrUpdate(itemInfo); + + BigDecimal unitPrice = new BigDecimal(0); + BigDecimal purchaseUnitPrice = new BigDecimal(0); + + for (ItemGroupList itemGroup : list){ + if (Objects.equals(itemGroup.getName(), "")) { + throw new MessageException("list中name为空"); + } + + if (Objects.equals(itemGroup.getUnit(), "")) { + throw new MessageException("list中unit为空"); + } + + if (Objects.equals(itemGroup.getSocialCode(), "")) { + throw new MessageException("list中SocialCode为空"); + } + + if (itemGroup.getUnitPrice()==null) { + throw new MessageException("list中unitPrice为空"); + } + + if (itemGroup.getPurchaseUnitPrice()==null) { + throw new MessageException("list中purchaseUnitPrice为空"); + } + + QueryWrapper socialItemQueryWrapper = new QueryWrapper<>(); + + socialItemQueryWrapper.eq("code",itemGroup.getSocialCode()); + socialItemQueryWrapper.last("limit 1"); + + if (socialItemMapper.selectOne(socialItemQueryWrapper)==null) { + throw new MessageException("医保编码不存在"); + } + + //组织item金额字段 + unitPrice = unitPrice.add(itemGroup.getUnitPrice()); + purchaseUnitPrice = purchaseUnitPrice.add(itemGroup.getPurchaseUnitPrice()); + + itemGroup.setItemId(itemInfo.getId()); + itemGroup.setDelFlag(false); + itemGroupListMapper.insertOrUpdate(itemGroup); + } + + itemInfo.setUpdateDatetime(LocalDateTime.now()); + itemInfo.setUnitPrice(unitPrice); + itemInfo.setPurchaseUnitPrice(purchaseUnitPrice); + + itemMapper.updateById(itemInfo); + } } diff --git a/src/main/resources/xml/ItemGroupListMapper.xml b/src/main/resources/xml/ItemGroupListMapper.xml new file mode 100644 index 0000000..b48eef8 --- /dev/null +++ b/src/main/resources/xml/ItemGroupListMapper.xml @@ -0,0 +1,5 @@ + + + + +