diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/controller/InventoryOrgController.java b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/controller/InventoryOrgController.java new file mode 100644 index 00000000..62752819 --- /dev/null +++ b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/controller/InventoryOrgController.java @@ -0,0 +1,200 @@ + + +package jnpf.inventoryOrd.controller; + +import io.swagger.annotations.Api; +import jnpf.base.ActionResult; +import jnpf.base.UserInfo; +import jnpf.base.vo.PageListVO; +import jnpf.base.vo.PaginationVO; +import jnpf.exception.DataException; +import jnpf.inventoryOrd.entity.InventoryOrgEntity; +import jnpf.inventoryOrd.model.inventoryorg.*; +import jnpf.inventoryOrd.service.InventoryOrgService; +import jnpf.util.*; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; + +/** + * + * 库存组织 + * @版本: V3.2.0 + * @版权: LINKAGE-BOOT + * @作者: LINKAGE-BOOT研发团队 + * @日期: 2023-02-11 + */ +@Slf4j +@RestController +@Api(tags = "库存组织" , value = "example") +@RequestMapping("/api/example/InventoryOrg") +public class InventoryOrgController { + + @Autowired + private GeneraterSwapUtil generaterSwapUtil; + + + @Autowired + private UserProvider userProvider; + + @Autowired + private InventoryOrgService inventoryOrgService; + + + + + /** + * 列表 + * + * @param inventoryOrgPagination + * @return + */ + @PostMapping("/getList") + public ActionResult list(@RequestBody InventoryOrgPagination inventoryOrgPagination)throws IOException{ + List list= inventoryOrgService.getList(inventoryOrgPagination); + //处理id字段转名称,若无需转或者为空可删除 + for(InventoryOrgEntity entity:list){ + entity.setCompanyId(generaterSwapUtil.getDynName("394016341591396805" ,"F_FullName" ,"F_Id","" ,entity.getCompanyId())); + entity.setLastModifyUserName(generaterSwapUtil.userSelectValue(entity.getLastModifyUserName())); + entity.setCreatorUserName(generaterSwapUtil.userSelectValue(entity.getCreatorUserName())); + } + List listVO=JsonUtil.getJsonToList(list,InventoryOrgListVO.class); + for(InventoryOrgListVO inventoryOrgVO:listVO){ + } + + + PageListVO vo=new PageListVO(); + vo.setList(listVO); + PaginationVO page=JsonUtil.getJsonToBean(inventoryOrgPagination,PaginationVO.class); + vo.setPagination(page); + return ActionResult.success(vo); + } + + + /** + * 创建 + * + * @param inventoryOrgCrForm + * @return + */ + @PostMapping + @Transactional + public ActionResult create(@RequestBody @Valid InventoryOrgCrForm inventoryOrgCrForm) throws DataException { + String mainId =RandomUtil.uuId(); + UserInfo userInfo=userProvider.get(); + inventoryOrgCrForm.setCreatorUserName(userInfo.getUserId()); + inventoryOrgCrForm.setCreatorTime(DateUtil.getNow()); + InventoryOrgEntity entity = JsonUtil.getJsonToBean(inventoryOrgCrForm, InventoryOrgEntity.class); + entity.setId(mainId); + inventoryOrgService.save(entity); + + + return ActionResult.success("创建成功"); +} + + + + /** + * 信息 + * + * @param id + * @return + */ + @GetMapping("/{id}") + public ActionResult info(@PathVariable("id") String id){ + InventoryOrgEntity entity= inventoryOrgService.getInfo(id); + InventoryOrgInfoVO vo=JsonUtil.getJsonToBean(entity, InventoryOrgInfoVO.class); + vo.setLastModifyUserName(generaterSwapUtil.userSelectValue(vo.getLastModifyUserName())); + if(vo.getLastModifyTime()!=null){ + vo.setLastModifyTime(vo.getLastModifyTime()); + } + vo.setCreatorUserName(generaterSwapUtil.userSelectValue(vo.getCreatorUserName())); + if(vo.getCreatorTime()!=null){ + vo.setCreatorTime(vo.getCreatorTime()); + } + + //子表 + //副表 + return ActionResult.success(vo); + } + + /** + * 表单信息(详情页) + * + * @param id + * @return + */ + @GetMapping("/detail/{id}") + public ActionResult detailInfo(@PathVariable("id") String id){ + InventoryOrgEntity entity= inventoryOrgService.getInfo(id); + InventoryOrgInfoVO vo=JsonUtil.getJsonToBean(entity, InventoryOrgInfoVO.class); + + //子表数据转换 + + //附表数据转换 + +//添加到详情表单对象中 + vo.setCompanyId(generaterSwapUtil.getDynName("394016341591396805" ,"F_FullName" ,"F_Id","" ,vo.getCompanyId())); + vo.setLastModifyUserName(generaterSwapUtil.userSelectValue(vo.getLastModifyUserName())); + vo.setCreatorUserName(generaterSwapUtil.userSelectValue(vo.getCreatorUserName())); + + return ActionResult.success(vo); + } + + + + + /** + * 更新 + * + * @param id + * @return + */ + @PutMapping("/{id}") + @Transactional + public ActionResult update(@PathVariable("id") String id,@RequestBody @Valid InventoryOrgUpForm inventoryOrgUpForm) throws DataException { + UserInfo userInfo=userProvider.get(); + InventoryOrgEntity entity= inventoryOrgService.getInfo(id); + if(entity!=null){ + inventoryOrgUpForm.setLastModifyUserName(userInfo.getUserId()); + inventoryOrgUpForm.setLastModifyTime(DateUtil.getNow()); + InventoryOrgEntity subentity=JsonUtil.getJsonToBean(inventoryOrgUpForm, InventoryOrgEntity.class); + subentity.setCreatorUserName(entity.getCreatorUserName()); + subentity.setCreatorTime(entity.getCreatorTime()); + inventoryOrgService.update(id, subentity); + return ActionResult.success("更新成功"); + }else{ + return ActionResult.fail("更新失败,数据不存在"); + } + } + + + + /** + * 删除 + * + * @param id + * @return + */ + @DeleteMapping("/{id}") + @Transactional + public ActionResult delete(@PathVariable("id") String id){ + InventoryOrgEntity entity= inventoryOrgService.getInfo(id); + if(entity!=null){ + inventoryOrgService.delete(entity); + + } + return ActionResult.success("删除成功"); + } + + + + + + +} diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/entity/InventoryOrgEntity.java b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/entity/InventoryOrgEntity.java new file mode 100644 index 00000000..6873b89f --- /dev/null +++ b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/entity/InventoryOrgEntity.java @@ -0,0 +1,73 @@ +package jnpf.inventoryOrd.entity; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonProperty; + + +/** + * + * 库存组织 + * @版本: V3.2.0 + * @版权: LINKAGE-BOOT + * @作者: LINKAGE-BOOT研发团队 + * @日期: 2023-02-11 + */ +@Data +@TableName("jg_inventory_org") +public class InventoryOrgEntity { + + @TableId("ID") + private String id; + + @TableField("INVENTORY_ORG_NAME") + private String inventoryOrgName; + + @TableField("INVENTORY_ORG_CODE") + private String inventoryOrgCode; + + @TableField("CREATOR_USER_ID") + private String creatorUserId; + + @TableField("CREATOR_USER_NAME") + private String creatorUserName; + + @TableField("CREATOR_TIME") + private Date creatorTime; + + @TableField("LAST_MODIFY_USER_ID") + private String lastModifyUserId; + + @TableField("LAST_MODIFY_USER_NAME") + private String lastModifyUserName; + + @TableField("LAST_MODIFY_TIME") + private Date lastModifyTime; + + @TableField("DELETE_USER_ID") + private String deleteUserId; + + @TableField("DELETE_USER_NAME") + private String deleteUserName; + + @TableField("DELETE_TIME") + private Date deleteTime; + + @TableField("DELETE_MARK") + private String deleteMark; + + @TableField("ORGNIZE_ID") + private String orgnizeId; + + @TableField("DEPARTMENT_ID") + private String departmentId; + + @TableField("COMPANY_ID") + private String companyId; + +} diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/mapper/InventoryOrgMapper.java b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/mapper/InventoryOrgMapper.java new file mode 100644 index 00000000..f28d90aa --- /dev/null +++ b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/mapper/InventoryOrgMapper.java @@ -0,0 +1,17 @@ +package jnpf.inventoryOrd.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import jnpf.inventoryOrd.entity.InventoryOrgEntity; + +/** + * + * 库存组织 + * 版本: V3.2.0 + * 版权: LINKAGE-BOOT + * 作者: LINKAGE-BOOT研发团队 + * 日期: 2023-02-11 + */ +public interface InventoryOrgMapper extends BaseMapper { + +} diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/model/inventoryorg/InventoryOrgCrForm.java b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/model/inventoryorg/InventoryOrgCrForm.java new file mode 100644 index 00000000..c4d42bca --- /dev/null +++ b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/model/inventoryorg/InventoryOrgCrForm.java @@ -0,0 +1,52 @@ + + +package jnpf.inventoryOrd.model.inventoryorg; + +import lombok.Data; +import java.util.List; +import java.math.BigDecimal; +import com.fasterxml.jackson.annotation.JsonProperty; + + +/** + * + * + * @版本: V3.2.0 + * @版权: LINKAGE-BOOT + * @作者: LINKAGE-BOOT研发团队 + * @日期: 2023-02-11 + */ +@Data +public class InventoryOrgCrForm { + + /** 编码 **/ + @JsonProperty("inventoryOrgCode") + private String inventoryOrgCode; + + /** 名称 **/ + @JsonProperty("inventoryOrgName") + private String inventoryOrgName; + + /** 所属组织 **/ + @JsonProperty("companyId") + private String companyId; + + /** 修改人名称 **/ + @JsonProperty("lastModifyUserName") + private String lastModifyUserName; + + /** 修改时间 **/ + @JsonProperty("lastModifyTime") + private String lastModifyTime; + + /** 创建人名称 **/ + @JsonProperty("creatorUserName") + private String creatorUserName; + + /** 创建时间 **/ + @JsonProperty("creatorTime") + private String creatorTime; + + + +} \ No newline at end of file diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/model/inventoryorg/InventoryOrgInfoVO.java b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/model/inventoryorg/InventoryOrgInfoVO.java new file mode 100644 index 00000000..0233bfdc --- /dev/null +++ b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/model/inventoryorg/InventoryOrgInfoVO.java @@ -0,0 +1,56 @@ + + + +package jnpf.inventoryOrd.model.inventoryorg; + +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import java.math.BigDecimal; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +/** + * + * + * @版本: V3.2.0 + * @版权: LINKAGE-BOOT + * @作者: LINKAGE-BOOT研发团队 + * @日期: 2023-02-11 + */ +@Data +public class InventoryOrgInfoVO{ + /** 主键 **/ + @JsonProperty("id") + private String id; + + /** 编码 **/ + @JsonProperty("inventoryOrgCode") + private String inventoryOrgCode; + + /** 名称 **/ + @JsonProperty("inventoryOrgName") + private String inventoryOrgName; + + /** 所属组织 **/ + @JsonProperty("companyId") + private String companyId; + + /** 修改人名称 **/ + @JsonProperty("lastModifyUserName") + private String lastModifyUserName; + + /** 修改时间 **/ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @JsonProperty("lastModifyTime") + private Date lastModifyTime; + + /** 创建人名称 **/ + @JsonProperty("creatorUserName") + private String creatorUserName; + + /** 创建时间 **/ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @JsonProperty("creatorTime") + private Date creatorTime; + +} \ No newline at end of file diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/model/inventoryorg/InventoryOrgListQuery.java b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/model/inventoryorg/InventoryOrgListQuery.java new file mode 100644 index 00000000..8fc2cbf1 --- /dev/null +++ b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/model/inventoryorg/InventoryOrgListQuery.java @@ -0,0 +1,27 @@ +package jnpf.inventoryOrd.model.inventoryorg; + +import lombok.Data; +import java.util.Date; +import jnpf.base.Pagination; +import java.util.List; +/** + * + * + * @版本: V3.2.0 + * @版权: LINKAGE-BOOT + * @作者: LINKAGE-BOOT研发团队 + * @日期: 2023-02-11 + */ +@Data +public class InventoryOrgListQuery extends Pagination { + + /** 编码 */ + private String inventoryOrgCode; + + /** 名称 */ + private String inventoryOrgName; + /** + * 菜单id + */ + private String menuId; +} \ No newline at end of file diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/model/inventoryorg/InventoryOrgListVO.java b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/model/inventoryorg/InventoryOrgListVO.java new file mode 100644 index 00000000..99106a18 --- /dev/null +++ b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/model/inventoryorg/InventoryOrgListVO.java @@ -0,0 +1,64 @@ + + +package jnpf.inventoryOrd.model.inventoryorg; + + +import lombok.Data; +import java.sql.Time; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.math.BigDecimal; +/** + * + * + * @版本: V3.2.0 + * @版权: LINKAGE-BOOT + * @作者: LINKAGE-BOOT研发团队 + * @日期: 2023-02-11 + */ +@Data +public class InventoryOrgListVO{ + + /** 主键 */ + private String id; + + + /** 编码 **/ + @JsonProperty("inventoryOrgCode") + private String inventoryOrgCode; + + + /** 名称 **/ + @JsonProperty("inventoryOrgName") + private String inventoryOrgName; + + + /** 所属组织 **/ + @JsonProperty("companyId") + private String companyId; + + + /** 修改人名称 **/ + @JsonProperty("lastModifyUserName") + private String lastModifyUserName; + + + /** 修改时间 **/ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @JsonProperty("lastModifyTime") + private Date lastModifyTime; + + + /** 创建人名称 **/ + @JsonProperty("creatorUserName") + private String creatorUserName; + + + /** 创建时间 **/ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @JsonProperty("creatorTime") + private Date creatorTime; + + +} \ No newline at end of file diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/model/inventoryorg/InventoryOrgPagination.java b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/model/inventoryorg/InventoryOrgPagination.java new file mode 100644 index 00000000..256b0d73 --- /dev/null +++ b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/model/inventoryorg/InventoryOrgPagination.java @@ -0,0 +1,28 @@ +package jnpf.inventoryOrd.model.inventoryorg; + + +import lombok.Data; +import jnpf.base.Pagination; +import java.util.List; + +/** + * + * + * @版本: V3.2.0 + * @版权: LINKAGE-BOOT + * @作者: LINKAGE-BOOT研发团队 + * @日期: 2023-02-11 + */ +@Data +public class InventoryOrgPagination extends Pagination { + + /** 编码 */ + private String inventoryOrgCode; + + /** 名称 */ + private String inventoryOrgName; + /** + * 菜单id + */ + private String menuId; +} \ No newline at end of file diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/model/inventoryorg/InventoryOrgPaginationExportModel.java b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/model/inventoryorg/InventoryOrgPaginationExportModel.java new file mode 100644 index 00000000..6fba7f4d --- /dev/null +++ b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/model/inventoryorg/InventoryOrgPaginationExportModel.java @@ -0,0 +1,29 @@ +package jnpf.inventoryOrd.model.inventoryorg; + +import lombok.Data; +import jnpf.base.Pagination; +import java.util.*; +/** + * + * + * @版本: V3.2.0 + * @版权: LINKAGE-BOOT + * @作者: LINKAGE-BOOT研发团队 + * @日期: 2023-02-11 + */ +@Data +public class InventoryOrgPaginationExportModel extends Pagination { + + private String selectKey; + + private String json; + + private String dataType; + + + /** 编码 */ + private String inventoryOrgCode; + + /** 名称 */ + private String inventoryOrgName; +} \ No newline at end of file diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/model/inventoryorg/InventoryOrgUpForm.java b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/model/inventoryorg/InventoryOrgUpForm.java new file mode 100644 index 00000000..631ffe1a --- /dev/null +++ b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/model/inventoryorg/InventoryOrgUpForm.java @@ -0,0 +1,61 @@ + + +package jnpf.inventoryOrd.model.inventoryorg; + +import lombok.Data; +import java.util.List; +import java.math.BigDecimal; +import com.fasterxml.jackson.annotation.JsonProperty; + +import lombok.Data; + +/** + * + * + * @版本: V3.2.0 + * @版权: LINKAGE-BOOT + * @作者: LINKAGE-BOOT研发团队 + * @日期: 2023-02-11 + */ +@Data +public class InventoryOrgUpForm{ + /** 主键 */ + private String id; + + + /** 编码 **/ + @JsonProperty("inventoryOrgCode") + private String inventoryOrgCode; + + + /** 名称 **/ + @JsonProperty("inventoryOrgName") + private String inventoryOrgName; + + + /** 所属组织 **/ + @JsonProperty("companyId") + private String companyId; + + + /** 修改人名称 **/ + @JsonProperty("lastModifyUserName") + private String lastModifyUserName; + + + /** 修改时间 **/ + @JsonProperty("lastModifyTime") + private String lastModifyTime; + + + /** 创建人名称 **/ + @JsonProperty("creatorUserName") + private String creatorUserName; + + + /** 创建时间 **/ + @JsonProperty("creatorTime") + private String creatorTime; + + +} \ No newline at end of file diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/service/InventoryOrgService.java b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/service/InventoryOrgService.java new file mode 100644 index 00000000..8afb8673 --- /dev/null +++ b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/service/InventoryOrgService.java @@ -0,0 +1,35 @@ +package jnpf.inventoryOrd.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import jnpf.inventoryOrd.entity.InventoryOrgEntity; +import jnpf.inventoryOrd.model.inventoryorg.InventoryOrgPagination; + +import java.util.List; +/** + * + * 库存组织 + * 版本: V3.2.0 + * 版权: LINKAGE-BOOT + * 作者: LINKAGE-BOOT研发团队 + * 日期: 2023-02-11 + */ +public interface InventoryOrgService extends IService { + + List getList(InventoryOrgPagination inventoryOrgPagination); + + List getTypeList(InventoryOrgPagination inventoryOrgPagination,String dataType); + + + + InventoryOrgEntity getInfo(String id); + + void delete(InventoryOrgEntity entity); + + void create(InventoryOrgEntity entity); + + boolean update( String id, InventoryOrgEntity entity); + +// 子表方法 + + //列表子表数据方法 +} diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/service/impl/InventoryOrgServiceImpl.java b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/service/impl/InventoryOrgServiceImpl.java new file mode 100644 index 00000000..c8e28a49 --- /dev/null +++ b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrd/service/impl/InventoryOrgServiceImpl.java @@ -0,0 +1,222 @@ +package jnpf.inventoryOrd.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import jnpf.inventoryOrd.entity.InventoryOrgEntity; +import jnpf.inventoryOrd.mapper.InventoryOrgMapper; +import jnpf.inventoryOrd.model.inventoryorg.InventoryOrgPagination; +import jnpf.inventoryOrd.service.InventoryOrgService; +import jnpf.permission.model.authorize.AuthorizeConditionModel; +import jnpf.permission.service.AuthorizeService; +import jnpf.util.ServletUtil; +import jnpf.util.StringUtil; +import jnpf.util.UserProvider; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; + +/** + * + * 库存组织 + * 版本: V3.2.0 + * 版权: LINKAGE-BOOT + * 作者: LINKAGE-BOOT研发团队 + * 日期: 2023-02-11 + */ +@Service +public class InventoryOrgServiceImpl extends ServiceImpl implements InventoryOrgService { + + + @Autowired + private UserProvider userProvider; + + @Autowired + private AuthorizeService authorizeService; + + + + + + @Override + public List getList(InventoryOrgPagination inventoryOrgPagination){ + String userId=userProvider.get().getUserId(); + List AllIdList =new ArrayList(); + int total=0; + int inventoryOrgNum =0; + QueryWrapper inventoryOrgQueryWrapper=new QueryWrapper<>(); + boolean pcPermission = false; + boolean appPermission = false; + boolean isPc = ServletUtil.getHeader("jnpf-origin").equals("pc"); + if(isPc && pcPermission){ + if (!userProvider.get().getIsAdministrator()){ + Object inventoryOrgObj=authorizeService.getCondition(new AuthorizeConditionModel(inventoryOrgQueryWrapper,inventoryOrgPagination.getMenuId(),"inventoryOrg")); + if (ObjectUtil.isEmpty(inventoryOrgObj)){ + return new ArrayList<>(); + } else { + inventoryOrgQueryWrapper = (QueryWrapper)inventoryOrgObj; + inventoryOrgNum++; + } + } + } + if(!isPc && appPermission){ + if (!userProvider.get().getIsAdministrator()){ + Object inventoryOrgObj=authorizeService.getCondition(new AuthorizeConditionModel(inventoryOrgQueryWrapper,inventoryOrgPagination.getMenuId(),"inventoryOrg")); + if (ObjectUtil.isEmpty(inventoryOrgObj)){ + return new ArrayList<>(); + } else { + inventoryOrgQueryWrapper = (QueryWrapper)inventoryOrgObj; + inventoryOrgNum++; + } + + + } + } + if(StringUtil.isNotEmpty(inventoryOrgPagination.getInventoryOrgCode())){ + inventoryOrgNum++; + inventoryOrgQueryWrapper.lambda().like(InventoryOrgEntity::getInventoryOrgCode,inventoryOrgPagination.getInventoryOrgCode()); + } + + if(StringUtil.isNotEmpty(inventoryOrgPagination.getInventoryOrgName())){ + inventoryOrgNum++; + inventoryOrgQueryWrapper.lambda().like(InventoryOrgEntity::getInventoryOrgName,inventoryOrgPagination.getInventoryOrgName()); + } + + if(AllIdList.size()>0){ + inventoryOrgQueryWrapper.lambda().in(InventoryOrgEntity::getId, AllIdList); + } + //排序 + if(StringUtil.isEmpty(inventoryOrgPagination.getSidx())){ + inventoryOrgQueryWrapper.lambda().orderByDesc(InventoryOrgEntity::getCreatorTime); + }else{ + try { + String sidx = inventoryOrgPagination.getSidx(); + InventoryOrgEntity inventoryOrgEntity = new InventoryOrgEntity(); + Field declaredField = inventoryOrgEntity.getClass().getDeclaredField(sidx); + declaredField.setAccessible(true); + String value = declaredField.getAnnotation(TableField.class).value(); + inventoryOrgQueryWrapper="asc".equals(inventoryOrgPagination.getSort().toLowerCase())?inventoryOrgQueryWrapper.orderByAsc(value):inventoryOrgQueryWrapper.orderByDesc(value); + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } + } + if((total>0 && AllIdList.size()>0) || total==0){ + Page page=new Page<>(inventoryOrgPagination.getCurrentPage(), inventoryOrgPagination.getPageSize()); + IPage userIPage=this.page(page, inventoryOrgQueryWrapper); + return inventoryOrgPagination.setData(userIPage.getRecords(),userIPage.getTotal()); + }else{ + List list = new ArrayList(); + return inventoryOrgPagination.setData(list, list.size()); + } + } + @Override + public List getTypeList(InventoryOrgPagination inventoryOrgPagination,String dataType){ + String userId=userProvider.get().getUserId(); + List AllIdList =new ArrayList(); + int total=0; + int inventoryOrgNum =0; + QueryWrapper inventoryOrgQueryWrapper=new QueryWrapper<>(); + boolean pcPermission = false; + boolean appPermission = false; + boolean isPc = ServletUtil.getHeader("jnpf-origin").equals("pc"); + if(isPc && pcPermission){ + if (!userProvider.get().getIsAdministrator()){ + Object inventoryOrgObj=authorizeService.getCondition(new AuthorizeConditionModel(inventoryOrgQueryWrapper,inventoryOrgPagination.getMenuId(),"inventoryOrg")); + if (ObjectUtil.isEmpty(inventoryOrgObj)){ + return new ArrayList<>(); + } else { + inventoryOrgQueryWrapper = (QueryWrapper)inventoryOrgObj; + inventoryOrgNum++; + } + } + } + if(!isPc && appPermission){ + if (!userProvider.get().getIsAdministrator()){ + Object inventoryOrgObj=authorizeService.getCondition(new AuthorizeConditionModel(inventoryOrgQueryWrapper,inventoryOrgPagination.getMenuId(),"inventoryOrg")); + if (ObjectUtil.isEmpty(inventoryOrgObj)){ + return new ArrayList<>(); + } else { + inventoryOrgQueryWrapper = (QueryWrapper)inventoryOrgObj; + inventoryOrgNum++; + } + + + } + } + if(StringUtil.isNotEmpty(inventoryOrgPagination.getInventoryOrgCode())){ + inventoryOrgNum++; + inventoryOrgQueryWrapper.lambda().like(InventoryOrgEntity::getInventoryOrgCode,inventoryOrgPagination.getInventoryOrgCode()); + } + + if(StringUtil.isNotEmpty(inventoryOrgPagination.getInventoryOrgName())){ + inventoryOrgNum++; + inventoryOrgQueryWrapper.lambda().like(InventoryOrgEntity::getInventoryOrgName,inventoryOrgPagination.getInventoryOrgName()); + } + + if(AllIdList.size()>0){ + inventoryOrgQueryWrapper.lambda().in(InventoryOrgEntity::getId, AllIdList); + } + //排序 + if(StringUtil.isEmpty(inventoryOrgPagination.getSidx())){ + inventoryOrgQueryWrapper.lambda().orderByDesc(InventoryOrgEntity::getCreatorTime); + }else{ + try { + String sidx = inventoryOrgPagination.getSidx(); + InventoryOrgEntity inventoryOrgEntity = new InventoryOrgEntity(); + Field declaredField = inventoryOrgEntity.getClass().getDeclaredField(sidx); + declaredField.setAccessible(true); + String value = declaredField.getAnnotation(TableField.class).value(); + inventoryOrgQueryWrapper="asc".equals(inventoryOrgPagination.getSort().toLowerCase())?inventoryOrgQueryWrapper.orderByAsc(value):inventoryOrgQueryWrapper.orderByDesc(value); + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } + } + if("0".equals(dataType)){ + if((total>0 && AllIdList.size()>0) || total==0){ + Page page=new Page<>(inventoryOrgPagination.getCurrentPage(), inventoryOrgPagination.getPageSize()); + IPage userIPage=this.page(page, inventoryOrgQueryWrapper); + return inventoryOrgPagination.setData(userIPage.getRecords(),userIPage.getTotal()); + }else{ + List list = new ArrayList(); + return inventoryOrgPagination.setData(list, list.size()); + } + }else{ + return this.list(inventoryOrgQueryWrapper); + } + } + + @Override + public InventoryOrgEntity getInfo(String id){ + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.lambda().eq(InventoryOrgEntity::getId,id); + return this.getOne(queryWrapper); + } + + @Override + public void create(InventoryOrgEntity entity){ + this.save(entity); + } + + @Override + public boolean update(String id, InventoryOrgEntity entity){ + entity.setId(id); + return this.updateById(entity); + } + @Override + public void delete(InventoryOrgEntity entity){ + if(entity!=null){ + this.removeById(entity.getId()); + } + } + //子表方法 + + //列表子表数据方法 + + +} \ No newline at end of file diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/controller/InventoryOrgDetailController.java b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/controller/InventoryOrgDetailController.java new file mode 100644 index 00000000..ad105fea --- /dev/null +++ b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/controller/InventoryOrgDetailController.java @@ -0,0 +1,328 @@ + + +package jnpf.inventoryOrdDetail.controller; + +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.ExportParams; +import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; +import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import jnpf.base.ActionResult; +import jnpf.base.UserInfo; +import jnpf.base.vo.DownloadVO; +import jnpf.base.vo.PageListVO; +import jnpf.base.vo.PaginationVO; +import jnpf.config.ConfigValueUtil; +import jnpf.exception.DataException; +import jnpf.inventoryOrdDetail.entity.InventoryOrgDetailEntity; +import jnpf.inventoryOrdDetail.model.inventoryorgdetail.*; +import jnpf.inventoryOrdDetail.service.InventoryOrgDetailService; +import jnpf.util.*; +import jnpf.util.enums.FileTypeEnum; +import jnpf.util.file.UploadUtil; +import lombok.Cleanup; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.Workbook; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * + * 库存组织详细 + * @版本: V3.2.0 + * @版权: LINKAGE-BOOT + * @作者: LINKAGE-BOOT研发团队 + * @日期: 2023-02-11 + */ +@Slf4j +@RestController +@Api(tags = "库存组织详细" , value = "example") +@RequestMapping("/api/example/InventoryOrgDetail") +public class InventoryOrgDetailController { + + @Autowired + private GeneraterSwapUtil generaterSwapUtil; + + @Autowired + private ConfigValueUtil configValueUtil; + + @Autowired + private UserProvider userProvider; + + @Autowired + private InventoryOrgDetailService inventoryOrgDetailService; + + + + + /** + * 列表 + * + * @param inventoryOrgDetailPagination + * @return + */ + @PostMapping("/getList") + public ActionResult list(@RequestBody InventoryOrgDetailPagination inventoryOrgDetailPagination)throws IOException{ + List list= inventoryOrgDetailService.getList(inventoryOrgDetailPagination); + //处理id字段转名称,若无需转或者为空可删除 + for(InventoryOrgDetailEntity entity:list){ + Map inventoryIdMap = new HashMap<>(); + entity.setInventoryId(generaterSwapUtil.getPopupSelectValue("394085757268070853","id","inventory_org_name",entity.getInventoryId(),inventoryIdMap)); + entity.setLastModifyUserName(generaterSwapUtil.userSelectValue(entity.getLastModifyUserName())); + entity.setCreatorUserName(generaterSwapUtil.userSelectValue(entity.getCreatorUserName())); + } + List listVO=JsonUtil.getJsonToList(list,InventoryOrgDetailListVO.class); + for(InventoryOrgDetailListVO inventoryOrgDetailVO:listVO){ + } + + + PageListVO vo=new PageListVO(); + vo.setList(listVO); + PaginationVO page=JsonUtil.getJsonToBean(inventoryOrgDetailPagination,PaginationVO.class); + vo.setPagination(page); + return ActionResult.success(vo); + } + + + /** + * 创建 + * + * @param inventoryOrgDetailCrForm + * @return + */ + @PostMapping + @Transactional + public ActionResult create(@RequestBody @Valid InventoryOrgDetailCrForm inventoryOrgDetailCrForm) throws DataException { + String mainId =RandomUtil.uuId(); + UserInfo userInfo=userProvider.get(); + inventoryOrgDetailCrForm.setCreatorUserName(userInfo.getUserId()); + inventoryOrgDetailCrForm.setCreatorTime(DateUtil.getNow()); + InventoryOrgDetailEntity entity = JsonUtil.getJsonToBean(inventoryOrgDetailCrForm, InventoryOrgDetailEntity.class); + entity.setId(mainId); + inventoryOrgDetailService.save(entity); + + + return ActionResult.success("创建成功"); +} + + + + /** + * 模板下载 + * + * @return + */ + @ApiOperation("模板下载") + @GetMapping("/templateDownload") + public ActionResult TemplateDownload(){ + UserInfo userInfo=userProvider.get(); + DownloadVO vo=DownloadVO.builder().build(); + try{ + vo.setName("职员信息.xlsx"); + vo.setUrl(UploaderUtil.uploaderFile("/api/Common/DownloadModel?encryption=" ,userInfo.getId()+"#"+"职员信息.xlsx"+"#"+"Temporary")); + }catch(Exception e){ + log.error("信息导出Excel错误:{}" ,e.getMessage()); + } + return ActionResult.success(vo); + } + /** + * 导出Excel + * + * @return + */ + @ApiOperation("导出Excel") + @GetMapping("/Actions/Export") + public ActionResult Export(InventoryOrgDetailPaginationExportModel inventoryOrgDetailPaginationExportModel) throws IOException { + if (StringUtil.isEmpty(inventoryOrgDetailPaginationExportModel.getSelectKey())){ + return ActionResult.fail("请选择导出字段"); + } + InventoryOrgDetailPagination inventoryOrgDetailPagination=JsonUtil.getJsonToBean(inventoryOrgDetailPaginationExportModel, InventoryOrgDetailPagination.class); + List list= inventoryOrgDetailService.getTypeList(inventoryOrgDetailPagination,inventoryOrgDetailPaginationExportModel.getDataType()); + //处理id字段转名称,若无需转或者为空可删除 + for(InventoryOrgDetailEntity entity:list){ + Map inventoryIdMap = new HashMap<>(); + entity.setInventoryId(generaterSwapUtil.getPopupSelectValue("394085757268070853","id","inventory_org_name",entity.getInventoryId(),inventoryIdMap)); + entity.setLastModifyUserName(generaterSwapUtil.userSelectValue(entity.getLastModifyUserName())); + entity.setCreatorUserName(generaterSwapUtil.userSelectValue(entity.getCreatorUserName())); + } + List listVO=JsonUtil.getJsonToList(list,InventoryOrgDetailListVO.class); + for(InventoryOrgDetailListVO inventoryOrgDetailVO:listVO){ + } + + //转换为map输出 + List>mapList=JsonUtil.getJsonToListMap(JsonUtil.getObjectToStringDateFormat(listVO,"yyyy-MM-dd HH:mm:ss")); + String[]keys=!StringUtil.isEmpty(inventoryOrgDetailPaginationExportModel.getSelectKey())?inventoryOrgDetailPaginationExportModel.getSelectKey().split(","):new String[0]; + UserInfo userInfo=userProvider.get(); + DownloadVO vo=this.creatModelExcel(configValueUtil.getTemporaryFilePath(),mapList,keys,userInfo); + return ActionResult.success(vo); + } + //导出表格 + public DownloadVO creatModelExcel(String path,List>list,String[]keys,UserInfo userInfo){ + DownloadVO vo=DownloadVO.builder().build(); + List entitys=new ArrayList<>(); + if(keys.length>0){ + for(String key:keys){ + switch(key){ + case "inventoryOrgDetailCode" : + entitys.add(new ExcelExportEntity("编码" ,"inventoryOrgDetailCode")); + break; + case "inventoryOrgDetailName" : + entitys.add(new ExcelExportEntity("名称" ,"inventoryOrgDetailName")); + break; + case "inventoryId" : + entitys.add(new ExcelExportEntity("库存组织" ,"inventoryId")); + break; + case "lastModifyUserName" : + entitys.add(new ExcelExportEntity("修改人名称" ,"lastModifyUserName")); + break; + case "lastModifyTime" : + entitys.add(new ExcelExportEntity("修改时间" ,"lastModifyTime")); + break; + case "creatorUserName" : + entitys.add(new ExcelExportEntity("创建人名称" ,"creatorUserName")); + break; + case "creatorTime" : + entitys.add(new ExcelExportEntity("创建时间" ,"creatorTime")); + break; + default: + break; + } + } + } + + ExportParams exportParams = new ExportParams(null, "表单信息"); + exportParams.setType(ExcelType.XSSF); + try{ + @Cleanup Workbook workbook = new HSSFWorkbook(); + if (entitys.size()>0){ + workbook = ExcelExportUtil.exportExcel(exportParams, entitys, list); + } + String name = "表单信息" + DateUtil.dateNow("yyyyMMdd") + "_" + RandomUtil.uuId() + ".xlsx"; + + String fileName = configValueUtil.getTemporaryFilePath() + name; + @Cleanup FileOutputStream output = new FileOutputStream(XSSEscape.escapePath(fileName)); + workbook.write(output); + //上传文件 + UploadUtil.uploadFile(configValueUtil.getFileType(), fileName, FileTypeEnum.TEMPORARY, name); + + vo.setName(name); + vo.setUrl(UploaderUtil.uploaderFile(userInfo.getId() + "#" + name + "#" + "Temporary")); + } catch (Exception e) { + log.error("信息导出Excel错误:{}", e.getMessage()); + e.printStackTrace(); + } + return vo; + } + + + /** + * 信息 + * + * @param id + * @return + */ + @GetMapping("/{id}") + public ActionResult info(@PathVariable("id") String id){ + InventoryOrgDetailEntity entity= inventoryOrgDetailService.getInfo(id); + InventoryOrgDetailInfoVO vo=JsonUtil.getJsonToBean(entity, InventoryOrgDetailInfoVO.class); + vo.setLastModifyUserName(generaterSwapUtil.userSelectValue(vo.getLastModifyUserName())); + if(vo.getLastModifyTime()!=null){ + vo.setLastModifyTime(vo.getLastModifyTime()); + } + vo.setCreatorUserName(generaterSwapUtil.userSelectValue(vo.getCreatorUserName())); + if(vo.getCreatorTime()!=null){ + vo.setCreatorTime(vo.getCreatorTime()); + } + + //子表 + //副表 + return ActionResult.success(vo); + } + + /** + * 表单信息(详情页) + * + * @param id + * @return + */ + @GetMapping("/detail/{id}") + public ActionResult detailInfo(@PathVariable("id") String id){ + InventoryOrgDetailEntity entity= inventoryOrgDetailService.getInfo(id); + InventoryOrgDetailInfoVO vo=JsonUtil.getJsonToBean(entity, InventoryOrgDetailInfoVO.class); + + //子表数据转换 + + //附表数据转换 + +//添加到详情表单对象中 + Map inventoryIdMap = new HashMap<>(); + vo.setInventoryId(generaterSwapUtil.getPopupSelectValue("394085757268070853","id","inventory_org_name",vo.getInventoryId(),inventoryIdMap)); + vo.setLastModifyUserName(generaterSwapUtil.userSelectValue(vo.getLastModifyUserName())); + vo.setCreatorUserName(generaterSwapUtil.userSelectValue(vo.getCreatorUserName())); + + return ActionResult.success(vo); + } + + + + + /** + * 更新 + * + * @param id + * @return + */ + @PutMapping("/{id}") + @Transactional + public ActionResult update(@PathVariable("id") String id,@RequestBody @Valid InventoryOrgDetailUpForm inventoryOrgDetailUpForm) throws DataException { + UserInfo userInfo=userProvider.get(); + InventoryOrgDetailEntity entity= inventoryOrgDetailService.getInfo(id); + if(entity!=null){ + inventoryOrgDetailUpForm.setLastModifyUserName(userInfo.getUserId()); + inventoryOrgDetailUpForm.setLastModifyTime(DateUtil.getNow()); + InventoryOrgDetailEntity subentity=JsonUtil.getJsonToBean(inventoryOrgDetailUpForm, InventoryOrgDetailEntity.class); + subentity.setCreatorUserName(entity.getCreatorUserName()); + subentity.setCreatorTime(entity.getCreatorTime()); + inventoryOrgDetailService.update(id, subentity); + return ActionResult.success("更新成功"); + }else{ + return ActionResult.fail("更新失败,数据不存在"); + } + } + + + + /** + * 删除 + * + * @param id + * @return + */ + @DeleteMapping("/{id}") + @Transactional + public ActionResult delete(@PathVariable("id") String id){ + InventoryOrgDetailEntity entity= inventoryOrgDetailService.getInfo(id); + if(entity!=null){ + inventoryOrgDetailService.delete(entity); + + } + return ActionResult.success("删除成功"); + } + + + + + + +} diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/entity/InventoryOrgDetailEntity.java b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/entity/InventoryOrgDetailEntity.java new file mode 100644 index 00000000..48174810 --- /dev/null +++ b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/entity/InventoryOrgDetailEntity.java @@ -0,0 +1,71 @@ +package jnpf.inventoryOrdDetail.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + + +/** + * + * 库存组织详细 + * @版本: V3.2.0 + * @版权: LINKAGE-BOOT + * @作者: LINKAGE-BOOT研发团队 + * @日期: 2023-02-11 + */ +@Data +@TableName("jg_inventory_org_detail") +public class InventoryOrgDetailEntity { + + @TableId("ID") + private String id; + + @TableField("INVENTORY_ID") + private String inventoryId; + + @TableField("INVENTORY_ORG_DETAIL_NAME") + private String inventoryOrgDetailName; + + @TableField("INVENTORY_ORG_DETAIL_CODE") + private String inventoryOrgDetailCode; + + @TableField("CREATOR_USER_ID") + private String creatorUserId; + + @TableField("CREATOR_USER_NAME") + private String creatorUserName; + + @TableField("CREATOR_TIME") + private Date creatorTime; + + @TableField("LAST_MODIFY_USER_ID") + private String lastModifyUserId; + + @TableField("LAST_MODIFY_USER_NAME") + private String lastModifyUserName; + + @TableField("LAST_MODIFY_TIME") + private Date lastModifyTime; + + @TableField("DELETE_USER_ID") + private String deleteUserId; + + @TableField("DELETE_USER_NAME") + private String deleteUserName; + + @TableField("DELETE_TIME") + private Date deleteTime; + + @TableField("DELETE_MARK") + private String deleteMark; + + @TableField("ORGNIZE_ID") + private String orgnizeId; + + @TableField("DEPARTMENT_ID") + private String departmentId; + +} diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/mapper/InventoryOrgDetailMapper.java b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/mapper/InventoryOrgDetailMapper.java new file mode 100644 index 00000000..914af843 --- /dev/null +++ b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/mapper/InventoryOrgDetailMapper.java @@ -0,0 +1,17 @@ +package jnpf.inventoryOrdDetail.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import jnpf.inventoryOrdDetail.entity.InventoryOrgDetailEntity; + +/** + * + * 库存组织详细 + * 版本: V3.2.0 + * 版权: LINKAGE-BOOT + * 作者: LINKAGE-BOOT研发团队 + * 日期: 2023-02-11 + */ +public interface InventoryOrgDetailMapper extends BaseMapper { + +} diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/model/inventoryorgdetail/InventoryOrgDetailCrForm.java b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/model/inventoryorgdetail/InventoryOrgDetailCrForm.java new file mode 100644 index 00000000..90b30009 --- /dev/null +++ b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/model/inventoryorgdetail/InventoryOrgDetailCrForm.java @@ -0,0 +1,52 @@ + + +package jnpf.inventoryOrdDetail.model.inventoryorgdetail; + +import lombok.Data; +import java.util.List; +import java.math.BigDecimal; +import com.fasterxml.jackson.annotation.JsonProperty; + + +/** + * + * + * @版本: V3.2.0 + * @版权: LINKAGE-BOOT + * @作者: LINKAGE-BOOT研发团队 + * @日期: 2023-02-11 + */ +@Data +public class InventoryOrgDetailCrForm { + + /** 编码 **/ + @JsonProperty("inventoryOrgDetailCode") + private String inventoryOrgDetailCode; + + /** 名称 **/ + @JsonProperty("inventoryOrgDetailName") + private String inventoryOrgDetailName; + + /** 库存组织 **/ + @JsonProperty("inventoryId") + private String inventoryId; + + /** 修改人名称 **/ + @JsonProperty("lastModifyUserName") + private String lastModifyUserName; + + /** 修改时间 **/ + @JsonProperty("lastModifyTime") + private String lastModifyTime; + + /** 创建人名称 **/ + @JsonProperty("creatorUserName") + private String creatorUserName; + + /** 创建时间 **/ + @JsonProperty("creatorTime") + private String creatorTime; + + + +} \ No newline at end of file diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/model/inventoryorgdetail/InventoryOrgDetailInfoVO.java b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/model/inventoryorgdetail/InventoryOrgDetailInfoVO.java new file mode 100644 index 00000000..bbb8ee40 --- /dev/null +++ b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/model/inventoryorgdetail/InventoryOrgDetailInfoVO.java @@ -0,0 +1,56 @@ + + + +package jnpf.inventoryOrdDetail.model.inventoryorgdetail; + +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; +import java.math.BigDecimal; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +/** + * + * + * @版本: V3.2.0 + * @版权: LINKAGE-BOOT + * @作者: LINKAGE-BOOT研发团队 + * @日期: 2023-02-11 + */ +@Data +public class InventoryOrgDetailInfoVO{ + /** 主键 **/ + @JsonProperty("id") + private String id; + + /** 编码 **/ + @JsonProperty("inventoryOrgDetailCode") + private String inventoryOrgDetailCode; + + /** 名称 **/ + @JsonProperty("inventoryOrgDetailName") + private String inventoryOrgDetailName; + + /** 库存组织 **/ + @JsonProperty("inventoryId") + private String inventoryId; + + /** 修改人名称 **/ + @JsonProperty("lastModifyUserName") + private String lastModifyUserName; + + /** 修改时间 **/ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @JsonProperty("lastModifyTime") + private Date lastModifyTime; + + /** 创建人名称 **/ + @JsonProperty("creatorUserName") + private String creatorUserName; + + /** 创建时间 **/ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @JsonProperty("creatorTime") + private Date creatorTime; + +} \ No newline at end of file diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/model/inventoryorgdetail/InventoryOrgDetailListQuery.java b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/model/inventoryorgdetail/InventoryOrgDetailListQuery.java new file mode 100644 index 00000000..b7c0ad84 --- /dev/null +++ b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/model/inventoryorgdetail/InventoryOrgDetailListQuery.java @@ -0,0 +1,27 @@ +package jnpf.inventoryOrdDetail.model.inventoryorgdetail; + +import lombok.Data; +import java.util.Date; +import jnpf.base.Pagination; +import java.util.List; +/** + * + * + * @版本: V3.2.0 + * @版权: LINKAGE-BOOT + * @作者: LINKAGE-BOOT研发团队 + * @日期: 2023-02-11 + */ +@Data +public class InventoryOrgDetailListQuery extends Pagination { + + /** 编码 */ + private String inventoryOrgDetailCode; + + /** 名称 */ + private String inventoryOrgDetailName; + /** + * 菜单id + */ + private String menuId; +} \ No newline at end of file diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/model/inventoryorgdetail/InventoryOrgDetailListVO.java b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/model/inventoryorgdetail/InventoryOrgDetailListVO.java new file mode 100644 index 00000000..79d6b0f8 --- /dev/null +++ b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/model/inventoryorgdetail/InventoryOrgDetailListVO.java @@ -0,0 +1,64 @@ + + +package jnpf.inventoryOrdDetail.model.inventoryorgdetail; + + +import lombok.Data; +import java.sql.Time; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.math.BigDecimal; +/** + * + * + * @版本: V3.2.0 + * @版权: LINKAGE-BOOT + * @作者: LINKAGE-BOOT研发团队 + * @日期: 2023-02-11 + */ +@Data +public class InventoryOrgDetailListVO{ + + /** 主键 */ + private String id; + + + /** 编码 **/ + @JsonProperty("inventoryOrgDetailCode") + private String inventoryOrgDetailCode; + + + /** 名称 **/ + @JsonProperty("inventoryOrgDetailName") + private String inventoryOrgDetailName; + + + /** 库存组织 **/ + @JsonProperty("inventoryId") + private String inventoryId; + + + /** 修改人名称 **/ + @JsonProperty("lastModifyUserName") + private String lastModifyUserName; + + + /** 修改时间 **/ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @JsonProperty("lastModifyTime") + private Date lastModifyTime; + + + /** 创建人名称 **/ + @JsonProperty("creatorUserName") + private String creatorUserName; + + + /** 创建时间 **/ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @JsonProperty("creatorTime") + private Date creatorTime; + + +} \ No newline at end of file diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/model/inventoryorgdetail/InventoryOrgDetailPagination.java b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/model/inventoryorgdetail/InventoryOrgDetailPagination.java new file mode 100644 index 00000000..fdff14f8 --- /dev/null +++ b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/model/inventoryorgdetail/InventoryOrgDetailPagination.java @@ -0,0 +1,28 @@ +package jnpf.inventoryOrdDetail.model.inventoryorgdetail; + + +import lombok.Data; +import jnpf.base.Pagination; +import java.util.List; + +/** + * + * + * @版本: V3.2.0 + * @版权: LINKAGE-BOOT + * @作者: LINKAGE-BOOT研发团队 + * @日期: 2023-02-11 + */ +@Data +public class InventoryOrgDetailPagination extends Pagination { + + /** 编码 */ + private String inventoryOrgDetailCode; + + /** 名称 */ + private String inventoryOrgDetailName; + /** + * 菜单id + */ + private String menuId; +} \ No newline at end of file diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/model/inventoryorgdetail/InventoryOrgDetailPaginationExportModel.java b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/model/inventoryorgdetail/InventoryOrgDetailPaginationExportModel.java new file mode 100644 index 00000000..90291904 --- /dev/null +++ b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/model/inventoryorgdetail/InventoryOrgDetailPaginationExportModel.java @@ -0,0 +1,29 @@ +package jnpf.inventoryOrdDetail.model.inventoryorgdetail; + +import lombok.Data; +import jnpf.base.Pagination; +import java.util.*; +/** + * + * + * @版本: V3.2.0 + * @版权: LINKAGE-BOOT + * @作者: LINKAGE-BOOT研发团队 + * @日期: 2023-02-11 + */ +@Data +public class InventoryOrgDetailPaginationExportModel extends Pagination { + + private String selectKey; + + private String json; + + private String dataType; + + + /** 编码 */ + private String inventoryOrgDetailCode; + + /** 名称 */ + private String inventoryOrgDetailName; +} \ No newline at end of file diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/model/inventoryorgdetail/InventoryOrgDetailUpForm.java b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/model/inventoryorgdetail/InventoryOrgDetailUpForm.java new file mode 100644 index 00000000..6b2eda08 --- /dev/null +++ b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/model/inventoryorgdetail/InventoryOrgDetailUpForm.java @@ -0,0 +1,61 @@ + + +package jnpf.inventoryOrdDetail.model.inventoryorgdetail; + +import lombok.Data; +import java.util.List; +import java.math.BigDecimal; +import com.fasterxml.jackson.annotation.JsonProperty; + +import lombok.Data; + +/** + * + * + * @版本: V3.2.0 + * @版权: LINKAGE-BOOT + * @作者: LINKAGE-BOOT研发团队 + * @日期: 2023-02-11 + */ +@Data +public class InventoryOrgDetailUpForm{ + /** 主键 */ + private String id; + + + /** 编码 **/ + @JsonProperty("inventoryOrgDetailCode") + private String inventoryOrgDetailCode; + + + /** 名称 **/ + @JsonProperty("inventoryOrgDetailName") + private String inventoryOrgDetailName; + + + /** 库存组织 **/ + @JsonProperty("inventoryId") + private String inventoryId; + + + /** 修改人名称 **/ + @JsonProperty("lastModifyUserName") + private String lastModifyUserName; + + + /** 修改时间 **/ + @JsonProperty("lastModifyTime") + private String lastModifyTime; + + + /** 创建人名称 **/ + @JsonProperty("creatorUserName") + private String creatorUserName; + + + /** 创建时间 **/ + @JsonProperty("creatorTime") + private String creatorTime; + + +} \ No newline at end of file diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/service/InventoryOrgDetailService.java b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/service/InventoryOrgDetailService.java new file mode 100644 index 00000000..b9b01ed2 --- /dev/null +++ b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/service/InventoryOrgDetailService.java @@ -0,0 +1,35 @@ +package jnpf.inventoryOrdDetail.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import jnpf.inventoryOrdDetail.entity.InventoryOrgDetailEntity; +import jnpf.inventoryOrdDetail.model.inventoryorgdetail.InventoryOrgDetailPagination; + +import java.util.List; +/** + * + * 库存组织详细 + * 版本: V3.2.0 + * 版权: LINKAGE-BOOT + * 作者: LINKAGE-BOOT研发团队 + * 日期: 2023-02-11 + */ +public interface InventoryOrgDetailService extends IService { + + List getList(InventoryOrgDetailPagination inventoryOrgDetailPagination); + + List getTypeList(InventoryOrgDetailPagination inventoryOrgDetailPagination,String dataType); + + + + InventoryOrgDetailEntity getInfo(String id); + + void delete(InventoryOrgDetailEntity entity); + + void create(InventoryOrgDetailEntity entity); + + boolean update( String id, InventoryOrgDetailEntity entity); + +// 子表方法 + + //列表子表数据方法 +} diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/service/impl/InventoryOrgDetailServiceImpl.java b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/service/impl/InventoryOrgDetailServiceImpl.java new file mode 100644 index 00000000..3636089b --- /dev/null +++ b/SC-boot/linkage-scm/src/main/java/jnpf/inventoryOrdDetail/service/impl/InventoryOrgDetailServiceImpl.java @@ -0,0 +1,222 @@ +package jnpf.inventoryOrdDetail.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import jnpf.inventoryOrdDetail.entity.InventoryOrgDetailEntity; +import jnpf.inventoryOrdDetail.mapper.InventoryOrgDetailMapper; +import jnpf.inventoryOrdDetail.model.inventoryorgdetail.InventoryOrgDetailPagination; +import jnpf.inventoryOrdDetail.service.InventoryOrgDetailService; +import jnpf.permission.model.authorize.AuthorizeConditionModel; +import jnpf.permission.service.AuthorizeService; +import jnpf.util.ServletUtil; +import jnpf.util.StringUtil; +import jnpf.util.UserProvider; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; + +/** + * + * 库存组织详细 + * 版本: V3.2.0 + * 版权: LINKAGE-BOOT + * 作者: LINKAGE-BOOT研发团队 + * 日期: 2023-02-11 + */ +@Service +public class InventoryOrgDetailServiceImpl extends ServiceImpl implements InventoryOrgDetailService { + + + @Autowired + private UserProvider userProvider; + + @Autowired + private AuthorizeService authorizeService; + + + + + + @Override + public List getList(InventoryOrgDetailPagination inventoryOrgDetailPagination){ + String userId=userProvider.get().getUserId(); + List AllIdList =new ArrayList(); + int total=0; + int inventoryOrgDetailNum =0; + QueryWrapper inventoryOrgDetailQueryWrapper=new QueryWrapper<>(); + boolean pcPermission = false; + boolean appPermission = false; + boolean isPc = ServletUtil.getHeader("jnpf-origin").equals("pc"); + if(isPc && pcPermission){ + if (!userProvider.get().getIsAdministrator()){ + Object inventoryOrgDetailObj=authorizeService.getCondition(new AuthorizeConditionModel(inventoryOrgDetailQueryWrapper,inventoryOrgDetailPagination.getMenuId(),"inventoryOrgDetail")); + if (ObjectUtil.isEmpty(inventoryOrgDetailObj)){ + return new ArrayList<>(); + } else { + inventoryOrgDetailQueryWrapper = (QueryWrapper)inventoryOrgDetailObj; + inventoryOrgDetailNum++; + } + } + } + if(!isPc && appPermission){ + if (!userProvider.get().getIsAdministrator()){ + Object inventoryOrgDetailObj=authorizeService.getCondition(new AuthorizeConditionModel(inventoryOrgDetailQueryWrapper,inventoryOrgDetailPagination.getMenuId(),"inventoryOrgDetail")); + if (ObjectUtil.isEmpty(inventoryOrgDetailObj)){ + return new ArrayList<>(); + } else { + inventoryOrgDetailQueryWrapper = (QueryWrapper)inventoryOrgDetailObj; + inventoryOrgDetailNum++; + } + + + } + } + if(StringUtil.isNotEmpty(inventoryOrgDetailPagination.getInventoryOrgDetailCode())){ + inventoryOrgDetailNum++; + inventoryOrgDetailQueryWrapper.lambda().like(InventoryOrgDetailEntity::getInventoryOrgDetailCode,inventoryOrgDetailPagination.getInventoryOrgDetailCode()); + } + + if(StringUtil.isNotEmpty(inventoryOrgDetailPagination.getInventoryOrgDetailName())){ + inventoryOrgDetailNum++; + inventoryOrgDetailQueryWrapper.lambda().like(InventoryOrgDetailEntity::getInventoryOrgDetailName,inventoryOrgDetailPagination.getInventoryOrgDetailName()); + } + + if(AllIdList.size()>0){ + inventoryOrgDetailQueryWrapper.lambda().in(InventoryOrgDetailEntity::getId, AllIdList); + } + //排序 + if(StringUtil.isEmpty(inventoryOrgDetailPagination.getSidx())){ + inventoryOrgDetailQueryWrapper.lambda().orderByDesc(InventoryOrgDetailEntity::getCreatorTime); + }else{ + try { + String sidx = inventoryOrgDetailPagination.getSidx(); + InventoryOrgDetailEntity inventoryOrgDetailEntity = new InventoryOrgDetailEntity(); + Field declaredField = inventoryOrgDetailEntity.getClass().getDeclaredField(sidx); + declaredField.setAccessible(true); + String value = declaredField.getAnnotation(TableField.class).value(); + inventoryOrgDetailQueryWrapper="asc".equals(inventoryOrgDetailPagination.getSort().toLowerCase())?inventoryOrgDetailQueryWrapper.orderByAsc(value):inventoryOrgDetailQueryWrapper.orderByDesc(value); + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } + } + if((total>0 && AllIdList.size()>0) || total==0){ + Page page=new Page<>(inventoryOrgDetailPagination.getCurrentPage(), inventoryOrgDetailPagination.getPageSize()); + IPage userIPage=this.page(page, inventoryOrgDetailQueryWrapper); + return inventoryOrgDetailPagination.setData(userIPage.getRecords(),userIPage.getTotal()); + }else{ + List list = new ArrayList(); + return inventoryOrgDetailPagination.setData(list, list.size()); + } + } + @Override + public List getTypeList(InventoryOrgDetailPagination inventoryOrgDetailPagination,String dataType){ + String userId=userProvider.get().getUserId(); + List AllIdList =new ArrayList(); + int total=0; + int inventoryOrgDetailNum =0; + QueryWrapper inventoryOrgDetailQueryWrapper=new QueryWrapper<>(); + boolean pcPermission = false; + boolean appPermission = false; + boolean isPc = ServletUtil.getHeader("jnpf-origin").equals("pc"); + if(isPc && pcPermission){ + if (!userProvider.get().getIsAdministrator()){ + Object inventoryOrgDetailObj=authorizeService.getCondition(new AuthorizeConditionModel(inventoryOrgDetailQueryWrapper,inventoryOrgDetailPagination.getMenuId(),"inventoryOrgDetail")); + if (ObjectUtil.isEmpty(inventoryOrgDetailObj)){ + return new ArrayList<>(); + } else { + inventoryOrgDetailQueryWrapper = (QueryWrapper)inventoryOrgDetailObj; + inventoryOrgDetailNum++; + } + } + } + if(!isPc && appPermission){ + if (!userProvider.get().getIsAdministrator()){ + Object inventoryOrgDetailObj=authorizeService.getCondition(new AuthorizeConditionModel(inventoryOrgDetailQueryWrapper,inventoryOrgDetailPagination.getMenuId(),"inventoryOrgDetail")); + if (ObjectUtil.isEmpty(inventoryOrgDetailObj)){ + return new ArrayList<>(); + } else { + inventoryOrgDetailQueryWrapper = (QueryWrapper)inventoryOrgDetailObj; + inventoryOrgDetailNum++; + } + + + } + } + if(StringUtil.isNotEmpty(inventoryOrgDetailPagination.getInventoryOrgDetailCode())){ + inventoryOrgDetailNum++; + inventoryOrgDetailQueryWrapper.lambda().like(InventoryOrgDetailEntity::getInventoryOrgDetailCode,inventoryOrgDetailPagination.getInventoryOrgDetailCode()); + } + + if(StringUtil.isNotEmpty(inventoryOrgDetailPagination.getInventoryOrgDetailName())){ + inventoryOrgDetailNum++; + inventoryOrgDetailQueryWrapper.lambda().like(InventoryOrgDetailEntity::getInventoryOrgDetailName,inventoryOrgDetailPagination.getInventoryOrgDetailName()); + } + + if(AllIdList.size()>0){ + inventoryOrgDetailQueryWrapper.lambda().in(InventoryOrgDetailEntity::getId, AllIdList); + } + //排序 + if(StringUtil.isEmpty(inventoryOrgDetailPagination.getSidx())){ + inventoryOrgDetailQueryWrapper.lambda().orderByDesc(InventoryOrgDetailEntity::getCreatorTime); + }else{ + try { + String sidx = inventoryOrgDetailPagination.getSidx(); + InventoryOrgDetailEntity inventoryOrgDetailEntity = new InventoryOrgDetailEntity(); + Field declaredField = inventoryOrgDetailEntity.getClass().getDeclaredField(sidx); + declaredField.setAccessible(true); + String value = declaredField.getAnnotation(TableField.class).value(); + inventoryOrgDetailQueryWrapper="asc".equals(inventoryOrgDetailPagination.getSort().toLowerCase())?inventoryOrgDetailQueryWrapper.orderByAsc(value):inventoryOrgDetailQueryWrapper.orderByDesc(value); + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } + } + if("0".equals(dataType)){ + if((total>0 && AllIdList.size()>0) || total==0){ + Page page=new Page<>(inventoryOrgDetailPagination.getCurrentPage(), inventoryOrgDetailPagination.getPageSize()); + IPage userIPage=this.page(page, inventoryOrgDetailQueryWrapper); + return inventoryOrgDetailPagination.setData(userIPage.getRecords(),userIPage.getTotal()); + }else{ + List list = new ArrayList(); + return inventoryOrgDetailPagination.setData(list, list.size()); + } + }else{ + return this.list(inventoryOrgDetailQueryWrapper); + } + } + + @Override + public InventoryOrgDetailEntity getInfo(String id){ + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.lambda().eq(InventoryOrgDetailEntity::getId,id); + return this.getOne(queryWrapper); + } + + @Override + public void create(InventoryOrgDetailEntity entity){ + this.save(entity); + } + + @Override + public boolean update(String id, InventoryOrgDetailEntity entity){ + entity.setId(id); + return this.updateById(entity); + } + @Override + public void delete(InventoryOrgDetailEntity entity){ + if(entity!=null){ + this.removeById(entity.getId()); + } + } + //子表方法 + + //列表子表数据方法 + + +} \ No newline at end of file diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/ocr_sdk/baiduUtils/BaiduUtils.java b/SC-boot/linkage-scm/src/main/java/jnpf/ocr_sdk/baiduUtils/BaiduUtils.java new file mode 100644 index 00000000..d6eda4ca --- /dev/null +++ b/SC-boot/linkage-scm/src/main/java/jnpf/ocr_sdk/baiduUtils/BaiduUtils.java @@ -0,0 +1,99 @@ +package jnpf.ocr_sdk.baiduUtils; + +import org.json.JSONObject; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.List; +import java.util.Map; +/** + * @Author: WangChuang + * @Date: 10/2/2023 上午9:29 + * @Description //注释: + * @Version 1.0 + */ +public class BaiduUtils { +// 官网获取的 API Ke + private static String clientId="adcBcYqcGzoyDjQTsWTSp8No"; +// 官网获取的 Secret Key + private static String clientSecret="YMOhZfVoVYvgLcTXjoOF62ZYfvGgMpr4"; +// 必须参数,固定为client_credentials; + private String grant="grant_type"; + + private String accessTokenUrl="https://aip.baidubce.com/oauth/2.0/token"; + + /** + * 获取权限token + * @return 返回示例: + * { + * "access_token": "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567", + * "expires_in": 2592000 + * } + */ + public static String getAuth() { + // 官网获取的 API Key 更新为你注册的 + String clientId ="adcBcYqcGzoyDjQTsWTSp8No" ; + // 官网获取的 Secret Key 更新为你注册的 + String clientSecret = "YMOhZfVoVYvgLcTXjoOF62ZYfvGgMpr4"; + return getAuth(clientId, clientSecret); + } + + /** + * 获取API访问token + * 该token有一定的有效期,需要自行管理,当失效时需重新获取. + * @param ak - 百度云官网获取的 API Key + * @param sk - 百度云官网获取的 Secret Key + * @return assess_token 示例: + * "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567" + */ + public static String getAuth(String ak, String sk) { + // 获取token地址 + String authHost = "https://aip.baidubce.com/oauth/2.0/token?"; + String getAccessTokenUrl = authHost + // 1. grant_type为固定参数 + + "grant_type=client_credentials" + // 2. 官网获取的 API Key + + "&client_id=" + ak + // 3. 官网获取的 Secret Key + + "&client_secret=" + sk; + try { + URL realUrl = new URL(getAccessTokenUrl); + // 打开和URL之间的连接 + HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection(); + connection.setRequestMethod("GET"); + connection.connect(); + // 获取所有响应头字段 + Map> map = connection.getHeaderFields(); + // 遍历所有的响应头字段 + for (String key : map.keySet()) { + System.err.println(key + "--->" + map.get(key)); + } + // 定义 BufferedReader输入流来读取URL的响应 + BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); + String result = ""; + String line; + while ((line = in.readLine()) != null) { + result += line; + } + /** + * 返回结果示例 + */ + System.err.println("result:" + result); + JSONObject jsonObject = new JSONObject(result); + String access_token = jsonObject.getString("access_token"); + return access_token; + } catch (Exception e) { + System.err.printf("获取token失败!"); + e.printStackTrace(System.err); + } + return null; + + } + + public static void main(String[] args) { + String auth = BaiduUtils.getAuth(); + System.out.println(auth); + } +} diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/ocr_sdk/baiduUtils/Base64Util.java b/SC-boot/linkage-scm/src/main/java/jnpf/ocr_sdk/baiduUtils/Base64Util.java new file mode 100644 index 00000000..7025229c --- /dev/null +++ b/SC-boot/linkage-scm/src/main/java/jnpf/ocr_sdk/baiduUtils/Base64Util.java @@ -0,0 +1,65 @@ +package jnpf.ocr_sdk.baiduUtils; + +/** + * Base64 工具类 + */ +public class Base64Util { + private static final char last2byte = (char) Integer.parseInt("00000011", 2); + private static final char last4byte = (char) Integer.parseInt("00001111", 2); + private static final char last6byte = (char) Integer.parseInt("00111111", 2); + private static final char lead6byte = (char) Integer.parseInt("11111100", 2); + private static final char lead4byte = (char) Integer.parseInt("11110000", 2); + private static final char lead2byte = (char) Integer.parseInt("11000000", 2); + private static final char[] encodeTable = new char[]{'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'}; + + public Base64Util() { + } + + public static String encode(byte[] from) { + StringBuilder to = new StringBuilder((int) ((double) from.length * 1.34D) + 3); + int num = 0; + char currentByte = 0; + + int i; + for (i = 0; i < from.length; ++i) { + for (num %= 8; num < 8; num += 6) { + switch (num) { + case 0: + currentByte = (char) (from[i] & lead6byte); + currentByte = (char) (currentByte >>> 2); + case 1: + case 3: + case 5: + default: + break; + case 2: + currentByte = (char) (from[i] & last6byte); + break; + case 4: + currentByte = (char) (from[i] & last4byte); + currentByte = (char) (currentByte << 2); + if (i + 1 < from.length) { + currentByte = (char) (currentByte | (from[i + 1] & lead2byte) >>> 6); + } + break; + case 6: + currentByte = (char) (from[i] & last2byte); + currentByte = (char) (currentByte << 4); + if (i + 1 < from.length) { + currentByte = (char) (currentByte | (from[i + 1] & lead4byte) >>> 4); + } + } + + to.append(encodeTable[currentByte]); + } + } + + if (to.length() % 4 != 0) { + for (i = 4 - to.length() % 4; i > 0; --i) { + to.append("="); + } + } + + return to.toString(); + } +} diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/ocr_sdk/baiduUtils/FileUtil.java b/SC-boot/linkage-scm/src/main/java/jnpf/ocr_sdk/baiduUtils/FileUtil.java new file mode 100644 index 00000000..c2873f5a --- /dev/null +++ b/SC-boot/linkage-scm/src/main/java/jnpf/ocr_sdk/baiduUtils/FileUtil.java @@ -0,0 +1,73 @@ +package jnpf.ocr_sdk.baiduUtils; + +import java.io.*; + +/** + * 文件读取工具类 + */ +public class FileUtil { + + /** + * 读取文件内容,作为字符串返回 + */ + public static String readFileAsString(String filePath) throws IOException { + File file = new File(filePath); + if (!file.exists()) { + throw new FileNotFoundException(filePath); + } + + if (file.length() > 1024 * 1024 * 1024) { + throw new IOException("File is too large"); + } + + StringBuilder sb = new StringBuilder((int) (file.length())); + // 创建字节输入流 + FileInputStream fis = new FileInputStream(filePath); + + // 创建一个长度为10240的Buffer + byte[] bbuf = new byte[10240]; + // 用于保存实际读取的字节数 + int hasRead = 0; + while ( (hasRead = fis.read(bbuf)) > 0 ) { + sb.append(new String(bbuf, 0, hasRead)); + } + fis.close(); + return sb.toString(); + } + + /** + * 根据文件路径读取byte[] 数组 + */ + public static byte[] readFileByBytes(String filePath) throws IOException { + File file = new File(filePath); + if (!file.exists()) { + throw new FileNotFoundException(filePath); + } else { + ByteArrayOutputStream bos = new ByteArrayOutputStream((int) file.length()); + BufferedInputStream in = null; + + try { + in = new BufferedInputStream(new FileInputStream(file)); + short bufSize = 1024; + byte[] buffer = new byte[bufSize]; + int len1; + while (-1 != (len1 = in.read(buffer, 0, bufSize))) { + bos.write(buffer, 0, len1); + } + + byte[] var7 = bos.toByteArray(); + return var7; + } finally { + try { + if (in != null) { + in.close(); + } + } catch (IOException var14) { + var14.printStackTrace(); + } + + bos.close(); + } + } + } +} diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/ocr_sdk/baiduUtils/GsonUtils.java b/SC-boot/linkage-scm/src/main/java/jnpf/ocr_sdk/baiduUtils/GsonUtils.java new file mode 100644 index 00000000..7eb937a3 --- /dev/null +++ b/SC-boot/linkage-scm/src/main/java/jnpf/ocr_sdk/baiduUtils/GsonUtils.java @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2017 Baidu, Inc. All Rights Reserved. + */ +package jnpf.ocr_sdk.baiduUtils; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonParseException; + +import java.lang.reflect.Type; + +/** + * Json工具类. + */ +public class GsonUtils { + private static Gson gson = new GsonBuilder().create(); + + public static String toJson(Object value) { + return gson.toJson(value); + } + + public static T fromJson(String json, Class classOfT) throws JsonParseException { + return gson.fromJson(json, classOfT); + } + + public static T fromJson(String json, Type typeOfT) throws JsonParseException { + return (T) gson.fromJson(json, typeOfT); + } +} diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/ocr_sdk/baiduUtils/HttpUtil.java b/SC-boot/linkage-scm/src/main/java/jnpf/ocr_sdk/baiduUtils/HttpUtil.java new file mode 100644 index 00000000..53b1ebb2 --- /dev/null +++ b/SC-boot/linkage-scm/src/main/java/jnpf/ocr_sdk/baiduUtils/HttpUtil.java @@ -0,0 +1,77 @@ +package jnpf.ocr_sdk.baiduUtils; + +import java.io.BufferedReader; +import java.io.DataOutputStream; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.List; +import java.util.Map; + +/** + * http 工具类 + */ +public class HttpUtil { + + public static String post(String requestUrl, String accessToken, String params) + throws Exception { + String contentType = "application/x-www-form-urlencoded"; + return HttpUtil.post(requestUrl, accessToken, contentType, params); + } + + public static String post(String requestUrl, String accessToken, String contentType, String params) + throws Exception { + String encoding = "UTF-8"; + if (requestUrl.contains("nlp")) { + encoding = "GBK"; + } + return HttpUtil.post(requestUrl, accessToken, contentType, params, encoding); + } + + public static String post(String requestUrl, String accessToken, String contentType, String params, String encoding) + throws Exception { + String url = requestUrl + "?access_token=" + accessToken; + return HttpUtil.postGeneralUrl(url, contentType, params, encoding); + } + + public static String postGeneralUrl(String generalUrl, String contentType, String params, String encoding) + throws Exception { + URL url = new URL(generalUrl); + // 打开和URL之间的连接 + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setRequestMethod("POST"); + // 设置通用的请求属性 + connection.setRequestProperty("Content-Type", contentType); + connection.setRequestProperty("Connection", "Keep-Alive"); + connection.setUseCaches(false); + connection.setDoOutput(true); + connection.setDoInput(true); + + // 得到请求的输出流对象 + DataOutputStream out = new DataOutputStream(connection.getOutputStream()); + out.write(params.getBytes(encoding)); + out.flush(); + out.close(); + + // 建立实际的连接 + connection.connect(); + // 获取所有响应头字段 + Map> headers = connection.getHeaderFields(); + // 遍历所有的响应头字段 + for (String key : headers.keySet()) { + System.err.println(key + "--->" + headers.get(key)); + } + // 定义 BufferedReader输入流来读取URL的响应 + BufferedReader in = null; + in = new BufferedReader( + new InputStreamReader(connection.getInputStream(), encoding)); + String result = ""; + String getLine; + while ((getLine = in.readLine()) != null) { + result += getLine; + } + in.close(); + System.err.println("result:" + result); + return result; + } +} diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/ocr_sdk/baiduUtils/VatInvoice.java b/SC-boot/linkage-scm/src/main/java/jnpf/ocr_sdk/baiduUtils/VatInvoice.java new file mode 100644 index 00000000..6d8c4812 --- /dev/null +++ b/SC-boot/linkage-scm/src/main/java/jnpf/ocr_sdk/baiduUtils/VatInvoice.java @@ -0,0 +1,78 @@ +package jnpf.ocr_sdk.baiduUtils; + +import org.springframework.web.multipart.MultipartFile; + +import java.net.URLEncoder; + +/** + * @Author: WangChuang + * @Date: 10/2/2023 上午10:12 + * @Description //注释: + * @Version 1.0 + */ +public class VatInvoice { + + /** + * 重要提示代码中所需工具类 + * FileUtil,Base64Util,HttpUtil,GsonUtils请从 + * https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72 + * https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2 + * https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3 + * https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3 + * 下载 + */ + public static String vatInvoice(MultipartFile file) { + // 请求url + String url = "https://aip.baidubce.com/rest/2.0/ocr/v1/vat_invoice"; + try { + // 本地文件路径 +// String filePath = "[本地文件路径]"; +// byte[] imgData = FileUtil.readFileByBytes(filePath); + String imgStr = Base64Util.encode(file.getBytes()); + String imgParam = URLEncoder.encode(imgStr, "UTF-8"); + + String param = "image=" + imgParam; + + // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。 + String accessToken = BaiduUtils.getAuth(); + + String result = HttpUtil.post(url, accessToken, param); + System.out.println(result); + return result; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + /** + * 增值税发票识别 + */ + public static String weightNote(MultipartFile file) { + // 请求url + String url = "https://aip.baidubce.com/rest/2.0/ocr/v1/weight_note"; + try { + // 本地文件路径 +// String filePath = "[本地文件路径]"; +// byte[] imgData = FileUtil.readFileByBytes(filePath); + String imgStr = Base64Util.encode(file.getBytes()); + String imgParam = URLEncoder.encode(imgStr, "UTF-8"); + + String param = "image=" + imgParam; + + // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。 + String accessToken = BaiduUtils.getAuth(); + + String result = HttpUtil.post(url, accessToken, param); + System.out.println(result); + return result; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + +// public static void main(String[] args) { +// VatInvoice.vatInvoice(); +// } +} diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/ocr_sdk/controller/BaiduOcrController.java b/SC-boot/linkage-scm/src/main/java/jnpf/ocr_sdk/controller/BaiduOcrController.java new file mode 100644 index 00000000..cbfd4db0 --- /dev/null +++ b/SC-boot/linkage-scm/src/main/java/jnpf/ocr_sdk/controller/BaiduOcrController.java @@ -0,0 +1,42 @@ +package jnpf.ocr_sdk.controller; + +import ai.djl.ModelException; +import ai.djl.translate.TranslateException; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import jnpf.base.ActionResult; +import jnpf.ocr_sdk.baiduUtils.VatInvoice; +import jnpf.util.JsonUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; + +/** + * @Author: WangChuang + * @Date: 10/2/2023 上午9:20 + * @Description //注释: + * @Version 1.0 + */ +@Slf4j +@RestController +@Api(tags = "baiduAI识别图像API" , value = "BaiduAI识别图像API") +@RequestMapping("/api/OcrAPI/BaiduOcr") +public class BaiduOcrController { + @ApiOperation("发票识别") + @PostMapping("/uPicture") + public ActionResult UploadPicture(MultipartFile file ) throws IOException, ModelException, TranslateException { + String s = VatInvoice.vatInvoice(file); + return ActionResult.success(JsonUtil.stringToMap(s)); + } + + @ApiOperation("榜单识别") + @PostMapping("/weightNote") + public ActionResult weightNote(MultipartFile file ) throws IOException, ModelException, TranslateException { + String s = VatInvoice.weightNote(file); + return ActionResult.success(JsonUtil.stringToMap(s)); + } +} diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/ocr_sdk/controller/OcrController.java b/SC-boot/linkage-scm/src/main/java/jnpf/ocr_sdk/controller/OcrController.java new file mode 100644 index 00000000..df028ce2 --- /dev/null +++ b/SC-boot/linkage-scm/src/main/java/jnpf/ocr_sdk/controller/OcrController.java @@ -0,0 +1,81 @@ +package jnpf.ocr_sdk.controller; + +import ai.djl.ModelException; +import ai.djl.translate.TranslateException; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import jnpf.base.ActionResult; +import jnpf.ocr_sdk.OcrV3RecognitionExample; +import jnpf.ocr_sdk.utils.common.RotatedBox; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * @Author: WangChuang + * @Date: 10/2/2023 上午9:06 + * @Description //注释: + * @Version 1.0 + */ +@Slf4j +@RestController +@Api(tags = "AI识别图像API" , value = "AI识别图像API") +@RequestMapping("/api/OcrAPI/OcrAPI") +public class OcrController { + + + + // @Resource +// private OcrV3RecognitionExample ocrV3RecognitionExample; + @ApiOperation("图片上传") + @PostMapping("/uPicture") + public ActionResult UploadPicture(MultipartFile file ) throws IOException, ModelException, TranslateException { + + String fileName = file.getOriginalFilename(); + + System.out.println(fileName); + //调用工具类的方法 + + ArrayList columnNames = new ArrayList<>(); + HashMap columnMap = new HashMap<>(); +// 发票代码 + columnNames.add("No"); +// 1:从左到右+1, +// 2:从左到右-1 +// -1:从上到下+1, +// -2:从上到下-1, +// 0:本身自己 + columnMap.put("No",0); +// 发票号码 + columnNames.add("机器编号"); + columnMap.put("机器编号",-1); +// 发票数量 + columnNames.add("量"); + columnMap.put("量",-1); +// 发票金额 + columnNames.add("小写"); + columnMap.put("小写",-2); +// 税率 + columnNames.add("税率"); + columnMap.put("税率",-1); +// 税额 (用税率二次) +// 不含税金额 (金额减去税额) +// 开票日期 + columnNames.add("开票日期:"); + columnMap.put("开票日期:",0); +// 物料名称 + columnNames.add("货物或应税劳务"); + columnMap.put("货物或应税劳务",-1); + List rotatedBoxes = OcrV3RecognitionExample.ocrAI(file.getInputStream()); + ArrayList example = OcrV3RecognitionExample.getExample(rotatedBoxes, columnNames,columnMap); + return ActionResult.success(example); + } + + } diff --git a/SC-boot/linkage-scm/src/main/resources/mapper/inventoryOrd/InventoryOrgMapper.xml b/SC-boot/linkage-scm/src/main/resources/mapper/inventoryOrd/InventoryOrgMapper.xml new file mode 100644 index 00000000..a0af5def --- /dev/null +++ b/SC-boot/linkage-scm/src/main/resources/mapper/inventoryOrd/InventoryOrgMapper.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/SC-boot/linkage-scm/src/main/resources/mapper/inventoryOrdDetail/InventoryOrgDetailMapper.xml b/SC-boot/linkage-scm/src/main/resources/mapper/inventoryOrdDetail/InventoryOrgDetailMapper.xml new file mode 100644 index 00000000..b63db204 --- /dev/null +++ b/SC-boot/linkage-scm/src/main/resources/mapper/inventoryOrdDetail/InventoryOrgDetailMapper.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/SC-web/src/views/scm/basicInformation/inventoryOrd/Detail.vue b/SC-web/src/views/scm/basicInformation/inventoryOrd/Detail.vue new file mode 100644 index 00000000..013dac19 --- /dev/null +++ b/SC-web/src/views/scm/basicInformation/inventoryOrd/Detail.vue @@ -0,0 +1,93 @@ + + diff --git a/SC-web/src/views/scm/basicInformation/inventoryOrd/ExportBox.vue b/SC-web/src/views/scm/basicInformation/inventoryOrd/ExportBox.vue new file mode 100644 index 00000000..e61a2182 --- /dev/null +++ b/SC-web/src/views/scm/basicInformation/inventoryOrd/ExportBox.vue @@ -0,0 +1,68 @@ + + + + \ No newline at end of file diff --git a/SC-web/src/views/scm/basicInformation/inventoryOrd/Form.vue b/SC-web/src/views/scm/basicInformation/inventoryOrd/Form.vue new file mode 100644 index 00000000..bda44121 --- /dev/null +++ b/SC-web/src/views/scm/basicInformation/inventoryOrd/Form.vue @@ -0,0 +1,181 @@ + + diff --git a/SC-web/src/views/scm/basicInformation/inventoryOrd/index.vue b/SC-web/src/views/scm/basicInformation/inventoryOrd/index.vue new file mode 100644 index 00000000..bc848f1d --- /dev/null +++ b/SC-web/src/views/scm/basicInformation/inventoryOrd/index.vue @@ -0,0 +1,219 @@ + + + diff --git a/SC-web/src/views/scm/basicInformation/inventoryOrdDetail/Detail.vue b/SC-web/src/views/scm/basicInformation/inventoryOrdDetail/Detail.vue new file mode 100644 index 00000000..c7ceffd3 --- /dev/null +++ b/SC-web/src/views/scm/basicInformation/inventoryOrdDetail/Detail.vue @@ -0,0 +1,93 @@ + + diff --git a/SC-web/src/views/scm/basicInformation/inventoryOrdDetail/ExportBox.vue b/SC-web/src/views/scm/basicInformation/inventoryOrdDetail/ExportBox.vue new file mode 100644 index 00000000..e61a2182 --- /dev/null +++ b/SC-web/src/views/scm/basicInformation/inventoryOrdDetail/ExportBox.vue @@ -0,0 +1,68 @@ + + + + \ No newline at end of file diff --git a/SC-web/src/views/scm/basicInformation/inventoryOrdDetail/Form.vue b/SC-web/src/views/scm/basicInformation/inventoryOrdDetail/Form.vue new file mode 100644 index 00000000..33d45633 --- /dev/null +++ b/SC-web/src/views/scm/basicInformation/inventoryOrdDetail/Form.vue @@ -0,0 +1,175 @@ + + diff --git a/SC-web/src/views/scm/basicInformation/inventoryOrdDetail/index.vue b/SC-web/src/views/scm/basicInformation/inventoryOrdDetail/index.vue new file mode 100644 index 00000000..349a60c1 --- /dev/null +++ b/SC-web/src/views/scm/basicInformation/inventoryOrdDetail/index.vue @@ -0,0 +1,219 @@ + + +