unidom-position 1.0 → 1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +5 -0
- data/app/models/unidom/position/occupation.rb +4 -0
- data/lib/tasks/data_tasks.rake +65 -0
- data/lib/unidom/position/version.rb +1 -1
- metadata +3 -3
- data/lib/tasks/position_tasks.rake +0 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: afc0bf6e11bdf01c9a08281323e491af07e9be04
|
4
|
+
data.tar.gz: 3295a37894a71f6a53716851c33c433b83b5225f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 082985ba3c2628b465d8193b3afb50173a8708a1baee92ad40d6e6defad5a52751b60cda54b9800e9d80360df1a02a434eb806ae207ed55c23d79ce4fe223f8c
|
7
|
+
data.tar.gz: 622f6171cd2c65eae430f6d1a6a01070b668d78be9c61735a705743310dffcdc684368fb6035434e0351a8da49a7e23ed7aafa3a3a63d5ab98bb8f82e5b7718e
|
data/README.md
CHANGED
@@ -36,3 +36,8 @@ erlang_developer = Unidom::Position::Post.create! name: 'Erlang Developer', posi
|
|
36
36
|
Unidom::Position::PostReportingStructure.report!(superior_post: chief_programmer, inferior_post: erlang_developer, opened_at: Time.now, elemental: true)
|
37
37
|
|
38
38
|
```
|
39
|
+
|
40
|
+
## Rake Task
|
41
|
+
```shell
|
42
|
+
bundle exec rake unidom:position:occupation:import file=/data.csv from_date=2009-11-01 thru_date=2015-10-01 scheme_id= scheme_type=
|
43
|
+
```
|
@@ -13,4 +13,8 @@ class Unidom::Position::Occupation < ActiveRecord::Base
|
|
13
13
|
has_many :positions, class_name: 'Unidom::Position::Position'
|
14
14
|
has_many :posts, through: :positions, source: :posts
|
15
15
|
|
16
|
+
scope :scheme_is, ->(scheme) { where scheme: scheme }
|
17
|
+
scope :scheme_id_is, ->(scheme_id) { where scheme_id: scheme_id }
|
18
|
+
scope :scheme_type_is, ->(scheme_type) { where scheme_type: scheme_type }
|
19
|
+
|
16
20
|
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
desc 'unidom:position:occupation:import Rake Task imports occupations from the given CSV file.'
|
2
|
+
|
3
|
+
namespace :unidom do
|
4
|
+
namespace :position do
|
5
|
+
|
6
|
+
namespace :occupation do
|
7
|
+
|
8
|
+
# bundle exec rake unidom:position:occupation:import
|
9
|
+
# file=/data.csv
|
10
|
+
# from_date=2020-01-01
|
11
|
+
# scheme_id=
|
12
|
+
# scheme_type=
|
13
|
+
task import: :environment do
|
14
|
+
|
15
|
+
include Unidom::Common::DataHelper
|
16
|
+
|
17
|
+
file_name = ENV['file']
|
18
|
+
scheme_id = ENV['scheme_id']||Unidom::Common::NULL_UUID
|
19
|
+
scheme_type = ENV['scheme_type']||''
|
20
|
+
opened_at = parse_time ENV['from_date']
|
21
|
+
|
22
|
+
updated_count = 0
|
23
|
+
created_count = 0
|
24
|
+
|
25
|
+
occupation_entities = Unidom::Position::Occupation.scheme_id_is(scheme_id).scheme_type_is(scheme_type).to_a
|
26
|
+
|
27
|
+
each_csv_row file_name do |occupation|
|
28
|
+
|
29
|
+
code = occupation['code']
|
30
|
+
name = occupation['name']
|
31
|
+
|
32
|
+
attributes = { name: occupation['name'], scheme_id: scheme_id, scheme_type: scheme_type, opened_at: opened_at }
|
33
|
+
|
34
|
+
if occupation_entities.present?
|
35
|
+
found_occupation_entities = occupation_entities.select { |occupation_entity| occupation_entity.code==code }
|
36
|
+
if found_occupation_entities.present?
|
37
|
+
found_occupation_entities.each do |found_occupation_entity|
|
38
|
+
found_occupation_entity.assign_attributes attributes
|
39
|
+
if found_occupation_entity.changed?
|
40
|
+
found_occupation_entity.save!
|
41
|
+
updated_count += 1
|
42
|
+
end
|
43
|
+
end
|
44
|
+
else
|
45
|
+
attributes[:code] = code
|
46
|
+
Unidom::Position::Occupation.create! attributes
|
47
|
+
created_count += 1
|
48
|
+
end
|
49
|
+
else
|
50
|
+
attributes[:code] = code
|
51
|
+
Unidom::Position::Occupation.create! attributes
|
52
|
+
created_count += 1
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
puts "#{created_count} Occupations were created. #{updated_count} Occupations were updated per CSV."
|
58
|
+
puts "#{created_count+updated_count} Occupations were handled totally."
|
59
|
+
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: unidom-position
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '1.
|
4
|
+
version: '1.1'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Topbit Du
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-06-
|
11
|
+
date: 2016-06-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: unidom-common
|
@@ -50,7 +50,7 @@ files:
|
|
50
50
|
- db/migrate/20040211000000_create_unidom_positions.rb
|
51
51
|
- db/migrate/20040212000000_create_unidom_posts.rb
|
52
52
|
- db/migrate/20040221000000_create_unidom_post_reporting_structures.rb
|
53
|
-
- lib/tasks/
|
53
|
+
- lib/tasks/data_tasks.rake
|
54
54
|
- lib/unidom/position.rb
|
55
55
|
- lib/unidom/position/engine.rb
|
56
56
|
- lib/unidom/position/version.rb
|